2010-02-27 1 views
2

Так как существует так много реализации JIT, каждый JIT испускает собственный код. Тогда почему кто-то не сделал такой инструмент, как JIT2EXE, чтобы сохранить собственный код в собственный исполняемый файл?конвертировать JIT в EXE?

+0

Какой JIT? Это очень общее и неопределенное. – skaffman

ответ

5

Вопрос нечеткий, поскольку вы четко не указали, на каком языке вы говорите, в моей области .NET исполняемые файлы .NET предварительно запущены во время выполнения, чтобы ускорить время загрузки. Код может быть сгенерирован для собственного кода посредством процесса, известного как NGEN, который принимает код .NET IL и преобразует его в процесс двоичного кода, который может быть понят процессором. Обычно код NGEN хранится в папке «C: \ Windows \ Assembly \ NativeImages_ {version}», где версия представляет версию .NET Framework. Посмотрите здесь на CodeGuru Джеффри Рихтером, о NGEN и где его можно использовать и когда его использовать. Посмотрите здесь на Codeproject об этой статье о статистике/сравнении с собственным двоичным кодом, а также here, а также Даниэлем Пистелли.

1

На самом деле существует много Java (или других интерпретируемых языков) -to-native компиляторов. Вы когда-нибудь слышали о gcj?

http://gcc.gnu.org/java/

Есть также смешанные компиляторы, которые компилируются некоторые критические части в машинный код и держать остальных в байткод, чтобы сэкономить место. Харисса сделала это более 10 лет назад.

http://www.usenix.org/publications/library/proceedings/coots97/full_papers/muller/muller_html/usenix.html

код Java сначала компилируется в код C, который затем передается к обычному компилятору для того, чтобы воспользоваться его оптимизации. Такой код может оказаться очень быстрым.

Конечно, такая компиляция с опережением времени (в отличие от компиляции вовремя) отменяет некоторые преимущества формы байт-кода (особенно переносимость и малый объем памяти), поэтому приложения реального мира скорее редко.

+0

Переносимость оставлена ​​невредимой, так как у вас все еще есть байт-коды, а общий след фактически снижается, если вы учитываете след JRE: http://www.excelsior-usa.com/java-download-size.html –