Как среда выполнения Java сравнивается с платформой.NET с точки зрения процесса компиляции?

Я узнаю о преобразовании исходного кода в машинный код через .NET а также JRE Каркасы. Для начала я провел исследование, сравнивающее два процесса, и создал эту диаграмму. Мне нужна помощь в критике его правильности и, что более важно, в добавлении любых серьезных вещей, которые я пропустил, чтобы лучше понять путь компиляции.

1 ответ

Решение

И.NET, и Java компилируются в байт-код, это промежуточный язык, который содержит инструкции для виртуальной машины. Это не машинный код, потому что он не может работать непосредственно на физической машине. Вместо этого происходит (по крайней мере, сегодня; в этом отношении Java имеет более мрачную историю), когда во время выполнения запускается компилятор, который точно в срок, переводит инструкции виртуальной машины в собственный код, который затем запускается напрямую. Это имеет большое преимущество в производительности по сравнению только с интерпретацией.

Они немного отличаются в этом отношении. Su^ H ^ H Реализация Oracle в Java использует умную смесь интерпретации, измерения и JIT, компилируя только те части, которые интенсивно используются, и интерпретируя иначе. Это должно уменьшить первоначальное влияние JIT-компилятора (который в противном случае должен запускаться заранее, увеличивая время запуска процесса), при этом обеспечивая при этом хорошую производительность при необходимости. С другой стороны,.NET всегда JIT-компилирует весь используемый код (хотя неиспользуемый код не компилируется).

Что касается вопроса, который вы упомянули в своих комментариях: да, CLR и JVM - это платформы, на которых работают такие программы. Виртуальная машина - это тоже машина, просто менее аппаратная. Они оба тесно интегрированы с соответствующей структурой, библиотекой базовых классов для.NET и библиотекой классов Java для Java. Это рамки.

Другие вопросы по тегам