Так как существует так много реализации JIT, каждый JIT испускает собственный код. Тогда почему кто-то не сделал такой инструмент, как JIT2EXE, чтобы сохранить собственный код в собственный исполняемый файл?конвертировать JIT в EXE?
ответ
Вопрос нечеткий, поскольку вы четко не указали, на каком языке вы говорите, в моей области .NET исполняемые файлы .NET предварительно запущены во время выполнения, чтобы ускорить время загрузки. Код может быть сгенерирован для собственного кода посредством процесса, известного как NGEN, который принимает код .NET IL и преобразует его в процесс двоичного кода, который может быть понят процессором. Обычно код NGEN хранится в папке «C: \ Windows \ Assembly \ NativeImages_ {version}», где версия представляет версию .NET Framework. Посмотрите здесь на CodeGuru Джеффри Рихтером, о NGEN и где его можно использовать и когда его использовать. Посмотрите здесь на Codeproject об этой статье о статистике/сравнении с собственным двоичным кодом, а также here, а также Даниэлем Пистелли.
Вы имеете в виду что-то вроде ngen?
На самом деле существует много Java (или других интерпретируемых языков) -to-native компиляторов. Вы когда-нибудь слышали о gcj?
Есть также смешанные компиляторы, которые компилируются некоторые критические части в машинный код и держать остальных в байткод, чтобы сэкономить место. Харисса сделала это более 10 лет назад.
код Java сначала компилируется в код C, который затем передается к обычному компилятору для того, чтобы воспользоваться его оптимизации. Такой код может оказаться очень быстрым.
Конечно, такая компиляция с опережением времени (в отличие от компиляции вовремя) отменяет некоторые преимущества формы байт-кода (особенно переносимость и малый объем памяти), поэтому приложения реального мира скорее редко.
Переносимость оставлена невредимой, так как у вас все еще есть байт-коды, а общий след фактически снижается, если вы учитываете след JRE: http://www.excelsior-usa.com/java-download-size.html –
Что вы заявляете в вашем вопросе («никто не сделал такой инструмент, как JIT2EXE») не совсем верно:
Какой JIT? Это очень общее и неопределенное. – skaffman