Какую версию Java следует использовать для настольного приложения, чтобы охватить большинство пользователей? [закрыто]

15

Правильно ли я предполагаю, что большинство конечных пользователей используют более старую версию, чем Java 8? Поскольку я не хочу принуждать людей к обновлению для использования моего приложения, должен ли я планировать использовать Java 7 или даже 6 с самого начала, даже если это означает, что я не могу применить преимущества более новых версий для себя как разработчик?

Андреас Хартманн
источник
6
Как ответ на этот вопрос будет актуален через год? Пять лет? Задавать вопрос о, например, Java 8 по сравнению с Java 7 - это хорошо, но спрашивать, какую из двух версий использовать, не является хорошим вопросом для этого сайта, поскольку сам вопрос застрял во времени, не говоря уже о том, что он по сути просить рекомендации продукта.
Кто ваши пользователи и что это за приложение? Приложение для бабушек мира отличается от приложения для ИТ-специалистов.
Freiheit
Java не поставляется предварительно установленной (в отличие от .NET в Windoze), поэтому вам придется включить (подмножество) JRE в ваше приложение. Таким образом, вы можете использовать все, что лучше. Это значит - использовать последнюю стабильную версию. (что означает сейчас - версия JRE 1.8)
Отображаемое имя
Поскольку наилучшими практиками в области безопасности является использование Java с неприемлемым риском, я думаю, что единственный разумный ответ - «вообще нет».
R .. GitHub ОСТАНОВИТЬ ЛЬДА
@R .., где вы слышали такие «лучшие практики»?
Артуро Торрес Санчес

Ответы:

44

Правильно полагаться на установленную JRE не имеет смысла вне контролируемой корпоративной среды, где все рабочие столы привязаны к определенной версии. В этом случае вы должны задать этот вопрос человеку, который контролирует эту среду.

Для настольного Java-приложения для массового рынка вы должны использовать установщик или модуль запуска, который объединяет JRE, который вы хотите использовать, или настроить Java Web Start (JAWS).

Обратите внимание, что если вы фактически распространяете JRE в комплекте, вы должны соблюдать условия лицензии . Я не юрист, но это не должно быть проблематичным для большинства целей. Если вы находитесь в ситуации, когда у вас есть команда юристов, вы, конечно, должны пройти мимо нее.

Разработчику или другому технически ориентированному инструменту обычно предпочтительно публиковать файлы jar в Maven Central , поэтому их распространение и загрузка полностью автоматизированы. Это один из случаев, когда использование старых версий Java является преимуществом, поскольку позволяет использовать их в корпорациях с более старой версией.

Но я бы не стал беспокоиться об этом слишком сильно для проекта, начатого сегодня.

Наконец, если все вышеперечисленное является слишком большой работой, вы можете просто опубликовать исходный код на github или bitbucket и позволить пользователю создать его самостоятельно.

Сору
источник
3
Вечный ответ на актуальный вопрос, круто. Я бы добавил, что вы можете распространять бесплатную альтернативную версию JRE для людей, которые любят подобные вещи. Могли бы сделать это портативным выпуском даже.
StarWeaver
1
Пакет JRE требует лицензирования, и это очень опасно, если приложение получает доступ к Интернету.
acelent
Пожалуйста, уточните, означает ли это, что я должен лицензировать JRE, даже если я собираюсь выпустить свое программное обеспечение без цели получения прибыли или, возможно, даже с открытым исходным кодом?
Андреас Хартманн
12

Java 6 не поддерживается Oracle, поэтому не используйте это. Поддержка Java 7 заканчивается 15 апреля, так что вы знаете. Просто используйте Java 8 и избавьте себя от хлопот.

См. План поддержки Oracle для получения дополнительной информации.

Хаакон Лотвейт
источник
Я хотел бы, чтобы это было в случае с Android :(.
Джаред Барроуз
1

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

huntersan9
источник