2015-05-13 3 views
2

С момента выпуска Java 8, я обнаружил, что постепенно становлюсь зависимым от Java 8-специфических функций (например, лямбда-операторов) в проекте библиотеки, у меня есть только.Должен ли я компилировать старые версии Java?

Я видел много других проектов, которые по сей день все еще строятся против Java 7 или даже Java 6, заставляя меня задуматься.

Не рекомендуется ли начинать строить с новейшей версии Java или использовать старые версии?

Обратите внимание, что в отличие от тех других проектов, которые начали работать, когда Java 6/7 была самой новой версией, моя была запущена недавно, когда Java 8 является самой новой.

+5

Кто является потребителем вашей библиотеки? Вы? Другие проекты? –

+0

Зачем быть старым, когда вы можете быть свежим из фермы? – Zizouz212

+0

@LouisWasserman: я и все, кто хочет его использовать. Это проект с открытым исходным кодом. – octopod

ответ

1

Java 8 означает существенное изменение языка с Java 5 (или, возможно, его начало). Если вы ориентируетесь конкретно на измененные части языка (что, как я полагаю, вы утверждаете), то использование его применимо только при использовании Java 8+ имеет смысл.

Когда Java 5 произошла 10 лет назад, и вы хотели использовать все новые функции, введенные в то время (например, заявление foreach, Enums и т. Д.) В свою собственную разработку библиотеки, что бы вы сделали? Полагаю, что вы сделали бы вашу библиотеку минимальной. Если вы согласны с этим, то эта (звуковая) логика последовательно применяется к вашей нынешней ситуации.

+1

Фактически в эти дни был [Retroweaver] (http: // retroweaver. sourceforge.net/), который мог (с некоторыми ограничениями) обращать ваше приложение Java 5 в байт-код Java 1.4.2. –

1

Для приложения на стороне сервера, возможно, версии или двух до текущей версии, как предложено EJP.

На стороне клиента, однако, я не вижу смысла пытаться поддерживать старые версии Java. JRE автоматически обновлялся с по крайней мере Java 6. Он дошел до того, что запущенные приложения Java Web Start не могут указать ранее, чем текущие JRE. Вернее, он может указать любую JRE, которую он выбирает в файле запуска, но это будет проигнорировано в пользу последней версии, установленной на компьютере пользователя.

3

Есть две причины, я могу думать о том, что потребовало бы остаться с заранее Java 8 JVM:

  1. Вы пишете библиотеку, которая используется большая группа людей за пределами вашей организации, все еще застревают в JVM до Java 8. Если вы используете новейшую и самую большую JVM, они больше не смогут использовать ваш продукт.

  2. Вы зависимы от 3-сторонней библиотеки, которая не обновлена ​​до Java 8 и перерывов на Java 8.

Поскольку вы упомянули это новый проект, # 1 маловероятно. Даже если вы планируете иметь внешних пользователей, если это новый проект, требующий последней версии JVM, это не проблема.

Номер 2 также становится все более и более маловероятным, поскольку более популярные сторонние библиотеки выпустили обновления для работы на Java 8. Даже немногие отставшие обычно работают на Java 8. Например, я использую древнюю версию спящего режима с Java 8. Я просто не использую никаких функций Java 8 в любых отображаемых полях/сущностях.

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