2014-02-14 2 views
4

Если я скомпилирую с моим java7 jdk, я получаю банку, которая отлично работает с java7, но явно не загружается с помощью java6. Если я скомпилирую с помощью java7 jdk, но укажу вывод, который будет совместим с java6, он отлично работает как с java6 jre, так и с java7 jre.Любой недостаток компиляции для java6 вместо java7?

Вопрос в том, является ли первая баночка «лучше» (быстрее, эффективнее, более оптимизирована) для работы в java7 jre, чем вторая? Есть ли недостаток для пользователя java7 jre для использования второго, или эта вторая банка достаточно хороша для всех?

Мое рассуждение: я хочу, чтобы результат был максимально возможным для пользователей java7, но мне нужно что-то, что можно запустить на java6. Так что мне нужно предоставить две банки или только java6?

+0

Если вы не хотите использовать новые функции, представленные в Java 7, я не вижу причин беспокоиться, и код будет работать нормально. – Omoro

+0

Нет, никаких новых функций (надеюсь, что в этом случае я увижу проблемы с компиляцией). И да, он отлично работает на java6. Мне просто не нужен недостаток для пользователей java7. – francis

+0

Не беспокойтесь, это сработает. У меня есть код, скомпилированный на Java 6, который работает на Java 7. – Omoro

ответ

2

Очевидно, что если вы скомпилировать и запустить свой код на Java 6, вы не можете использовать классы, которые были добавлены в стандартную библиотеку Java в Java 7, потому что те не будут присутствовать на Java 6.

Для остальных, нет никакой практической разницы вообще. Практически вся оптимизация выполняется во время выполнения JVM и JIT; Java-компилятор практически не оптимизирует.

+0

Тем не менее, я заметил, что файлы jar имеют разные размеры, несмотря на то, что в остальном идентичный код и настройки, поэтому я предполагаю, что он * представляет * код по-разному, возможно, чтобы воспользоваться специальных функций java7? – francis

+0

Моя память щекочет; Я считаю, что я помню, как читал статью о большой оптимизации, выполняемой в инструменте jar в Java 7, исправляя глупую ошибку ... – Gimby

+0

Если вы хотите узнать, отличается ли фактический байт-код, вы можете разобрать свои файлы классов с помощью ' javap' и сравните их. – Jesper

0

Я не думаю, что это не так, если вы не используете какой-либо новый API из Java 7. Я не уверен на 100%, я думаю, что если ваша программа скомпилирована с использованием Java 6, она будет по-прежнему выигрывают от повышения скорости от людей, работающих на Java 7 VM.

Смежные вопросы