Я не знаю, фактические причины, не будучи каким-либо образом участвует в реализации виртуальной машины Java, но я могу думать о некоторых правдоподобных из них:
- Идея Java должна быть вписанный оновлено язык с произвольным доступом и размещение прекомпилированных материалов в файле класса является своего рода нарушением (только «вид», потому что, конечно, фактический байт-код все равно будет там)
- Это увеличило бы размеры файлов классов, потому что у вас было бы один и тот же код несколько раз, особенно если вы запускаете ту же программу в нескольких разных JVM (что не очень редко, когда вы рассматриваете разные версии как разные JV Ms, что вам действительно нужно делать)
- Файлы классов могут быть недоступны для записи (хотя это было бы довольно легко проверить)
- Оптимизации JVM частично основаны на информации о времени выполнения и на других запусках они могут быть не такими применимыми (хотя они все равно должны принести некоторую выгоду)
Но я действительно угадываю, и, как вы можете видеть, я действительно не думаю, что мои причины - настоящие шоу-пробки. Я полагаю, что Sun просто не считает эту поддержку приоритетной, и, возможно, моя первая причина близка к истине, так как это обычно может заставить людей думать, что файлы классов Java действительно нуждаются в отдельной версии для каждой виртуальной машины вместо того, чтобы быть кросс-платформенный.
Мой предпочтительный способ состоит в том, чтобы иметь отдельный переводчик байт-кода на родной язык, который вы могли бы использовать, чтобы сделать что-то вроде этого явно заранее, создавая файлы классов, которые явно созданы для конкретной виртуальной машины, возможно, исходный байт-код в чтобы вы могли работать с разными виртуальными машинами. Но это, вероятно, происходит из моего опыта: я в основном делаю Java ME, где очень больно, что компилятор Java не умнее компиляции.
+1 хороший вопрос, что – skaffman
Тема, обсуждающая эту проблему: http://www.javalobby.org/forums/thread.jspa?threadID=15812 – miku
Но маловероятный вопрос для привлечения окончательного ответа. – bmargulies