Что произошло
В середине 2018 года Oracle объявил, что собирается изменить лицензионную политику. 16 апреля 2019 года изменение вступило в силу. Теперь все опубликованные после этой даты сборки Java SE можно использовать бесплатно только для личных нужд и с целью разработки. Для использования в коммерческих целях (в том числе для продакшена) надо оформить платную подписку у Oracle.
Что-а-а?
Oracle выстрелил себе в ногу и убивает Java? Нет, не убивает. Нет, не выстрелил. Но проблем
Зачем они это сделали?
Как известно, Oracle на самом деле собирает и публикует две версии JDK: Oracle JDK (aka Java SE, расположена на java.com) и Open JDK (расположена на openjdk.java.net).
Чтобы понять смысл всей затеи достаточно взглянуть на этот слайд из их презентации:
Для коммерческой сборки поддержка длительная. Для бесплатной – короткая. Т.е. чтобы накатить патчи на бесплатную OpenJDK через полгода надо будет проапгрейдить версию. Oracle JDK будет выпускать патчи еще 5 лет после выпуска. Поэтому она платная.
Что насчет Java 8, 9, 10, 11...?
Это касается всех версий.
Это касается JRE?
Нигде отдельно не указывается лицензия на JRE. Считается, что раз JRE является подмножеством JDK, то и лицензионные ограничения такие же. Т.е. — да, это касается JRE.
Это мне надо теперь все снести на продакшене?!?!
Нет. Изменения касаются только новых выпусков (после 16 апреля). Для Java 8 SE первым выпуском с ограничениями стала Update 211. Все что было выпущено ранее, можно использовать дальше без ограничений.
А что теперь делать?
Ставить OpenJDK. Но сам OpenJDK от Oracle не имеет официального виндового установщика (и автоматического апдейта), надо его распаковывать руками.
Если вам важен именно установщик, остается только пользоваться ранними релизами от Oracle (Update 202). А апдейты все равно придется отключить.
UPD: В комментариях подсказали, что существуют бесплатные бинарники с установщиком AdoptOpenJDK, поддерживаемые comunity.
Еще можно обратить внимание на Liberica JDK, которая поддерживается JetBrains.
А от OpenJDK ничего не сломается?
Не должно (с). Отличия в функциональности минимальны и очень мало кого затрагивают. При этом Oracle планомерно уменьшает эти различия, вливая их в OpenJDK или удаляя совсем.
Комментарии (60)
rsashka
19.04.2019 22:22+1В среде разработчиков-слоупоков начали носится кошмарные слухи.
Нет, не убивает, нет не выстрелил.
Для использования в коммерческих целях (в том числе для продакшена) надо оформить платную подписку у Oracle.
Или я читать разучился, или с логикой у автора некоторые сложности.ExplosiveZ
19.04.2019 22:55Существует 2 вида JDK от Oracle — OpenJDK и Oracle JDK.
OpenJDK — это эталонная реализация JDK, Oracle JDK базируется на OpenJDK.
Раньше были различия между OpenJDK и Oracle JDK, теперь их нет.
OpenJDK полностью бесплатная и распространяется под GPL.
Oracle JDK раньше была бесплатной, теперь платная.
Oracle JDK отличается от OpenJDK только наличием платной поддержки.
Практически в любом дистрибутиве в основном репозитории есть только OpenJDK.youlose
19.04.2019 11:05+1«Oracle JDK базируется на OpenJDK»
«OpenJDK полностью бесплатная и распространяется под GPL.»
Получается что у платной Oracle JDK должны быть открыты исходники и можно самому патчи LTS собирать?Firz
19.04.2019 12:13Нет, исходный код должен быть предоставлен по требованию пользователям Oracle JDK или распространяться вместе с исполнимым кодом. Покупаете Oracle JDK и можете запросить исходники(либо дают их в комплекте).
ru.wikipedia.org/wiki/GNU_General_Public_License
fRoStBiT
19.04.2019 14:39Oracle как владелец продукта может лицензировать его другим (а тем более себе) не только под GPL. Что он и делает.
alexbel
19.04.2019 15:52+1OpenJDK — это исходные коды. Чтобы получился бинарник, кто-то должен его собрать, протестировать, упаковать в правильные контейнеры, написать инсталляторы и так далее. Oracle собирает текущую версию OpenJDK и хостит бинарники на jdk.java.net.
funca
19.04.2019 22:25+1Oracle сказал бизнесам: или вы пользуетесь самой свежей версией и это бесплатно или будете платить желая оставаться на старье. Интересное решение, которое в перспективе должно подтолкнуть развитие платформы и экосистемы.
pankraty
19.04.2019 22:39+2Если я правильно понимаю, раньше было 2 проприетарных платформы, работающих по сходим правилам: .net и java. Microsoft, чтобы "подтолкнуть развитие платформы и экосистемы", вывела .net в опенсорс; Oracle с той же целью сделала java платной. Очень интересно будет посмотреть в перспективе, чья стратегия к чему привела.
qrck13
20.04.2019 01:00.NET тут заранее в более выгодной позиции, т.к. для Oracle их Java — это прямой инструмент зарабатывания денег, в то время как Microsoft их .NET — это продукт помогающий продать больше копий Windows и других решений от MS. Так что MS вполне могут позволить себе раздавать .NET бесплатно, более того — им это выгоднее чем продавать его за деньги.
DieSlogan
20.04.2019 08:14+2.net это теперь не только Windows. На лицо смена концепции и нельзя не отметить сколь выигрышно она смотрится на фоне Oracle
Scf
19.04.2019 00:47Сформулирую это так: Либо вы платите за поддержку стабильной версии джавы, либо работаете бесплатными тестерами последней версии.
WinLin2
19.04.2019 08:08Существует проблема совместимости разных версий JDK. Заказное ПО не может запуститься на новых версиях JDK, за смену версии java требуют стоимость полной разработки с нуля. Написал единожды работает везде?
ps: на java не пишу.Skerrigan
19.04.2019 11:00Из личной практики: при переходе с LTS v8 -> LTS v11 у меня сломалось только в одном месте и потребовало
Такой фикс/*<---- JDK11 Fix ---->*/ compile 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359' compile 'com.sun.xml.bind:jaxb-core:2.3.0.1' compile 'com.sun.xml.bind:jaxb-impl:2.4.0-b180830.0438' compile 'javax.activation:activation:1.1.1' compile 'org.glassfish.jaxb:jaxb-runtime:2.3.0'
sshikov
19.04.2019 19:19А она нужна, эта поддержка? Из моей практики от нее обычно довольно мало толку. Последний живой пример показал, что иногда отвечают биороботы, способные разве что прочесть документацию.
DaemonGloom
19.04.2019 07:02Amazon Corretto — бесплатен, есть установщик. JavaFX поддерживается. Работает как для разнообразного конольного и GUI софта, так и для игр типа Майнкрафта. Обещают LTS поддержку как 8, так и 11 версии, без необходимости прыжков на нестабильные версии.
eyeofhell
19.04.2019 08:08Ставить OpenJDK. Но сам OpenJDK от Oracle не имеет официального виндового установщика (и автоматического апдейта), надо его распаковывать руками.
sergey-gornostaev
19.04.2019 08:25Отличия в функциональности минимальны
В данный момент отличий нет вообще. Oracle JDK отличается от Open JDK только лицензией.DieSlogan
19.04.2019 16:08В данный момент отличий нет вообще. Oracle JDK отличается от Open JDK только лицензией.
Выделил самое главное в ваших словах.Endeavour
19.04.2019 16:32То есть, вы хотите сказать, что Оракл несколько лет долго и упорно выпиливала эти различия, чтобы теперь добавить новых?
DieSlogan
19.04.2019 16:48Я хочу сказать, что если завтра им захочется/покажется, что мало денег/требования левой пятки, вы и не такой цирк увидите.
Endeavour
19.04.2019 17:00Не вижу цирка.
Вообще ничего не изменилось. sudo apt install default-jdk и все.
sergey-gornostaev
20.04.2019 18:07Oracle перестал был владельцем Java. Теперь это open source, в который контрибьютят несколько десятков компаний, от небольших типа Excelsior JET до гигантов типа IBM и Red Hat. Максимум, чего Oracle может захотеться, это выкатить в свою сборку какой-нибудь новый коммерческий функционал.
DieSlogan
21.04.2019 12:01Ну да, но что такое Java без JVM? А в JVM у нас зоопарк. Как тот или иной производитель реализовал это всё, как часто он будет поддерживать и исправлять баги? Куча вопросов и риски. Риск того, что завтра вы словите баг JVM, риск того, что в данной JVM данный функционал будет работать странно, риск того, что завтра JVM будет платной.
Вы считаете, что этим всем можно пренебречь?sergey-gornostaev
21.04.2019 13:05Никакого зоопарка в JVM нет. Во-первых, все существующие JVM следуют очень строгой спецификации. Во-вторых, есть эталонная реализация — HotSpot, являющаяся частью OpenJDK. На которую, повторюсь, не влияет какая-то одна компания. И нет вообще не единого шанса, что завтра OpenJDK и HotSpot станут платными. В-третьих, наличие нескольких JVM — это хорошо, это возможность выбора, конкуренция и порождаемое ею качество. Не понравилось что-то в HotSpot — можно взять OpenJ9 например.
Если вам нужна поддержка, вы можете купить лицензию Oracle. Но огромный Mail.Ru Group, например, живёт без неё, на сколько мне известно. Если не устраивает частота и продолжительность исправления багов, вы можете сменить поставщика сборки. Некоторые компании не только багфиксы для 7-й версии до сих пор выпускают, но и фичи бэкпортят. Да и в целом риск словить баг или наткнуться на особенности реализации сильно снизился с того момента, как Oracle отдала Java в open source.
Я считаю, что всё стало сильно лучше. Риски и неуверенность в завтрашнем дне были, когда Java принадлежала одной компании. А теперь она свободна. У вас есть выбор и гарантия, что его не отнимут.
dima_habr
22.04.2019 13:11В swing-е:
в openJDK10/11/12 шрифты рендерятся позорно по сравнению с oracleJDK10/11/12 соответственно.
Londoner
19.04.2019 09:54А что мешает опенсорсному комьюнити выпускать такие же LTS патчи для OpenJDK бесплатно, наподобие CentOS vs RedHat?
BratSin
19.04.2019 10:28Есть еще Liberica JDK, от BellSoft. Есть .msi, есть LTS для 8 и 11. Только, по какой-то причине, после установки, я руками дружил .jar и винду.
Teapot
20.04.2019 15:14Да, bell-sw.com/java.html
И в свежих версиях Liberica JDK (12.0.1, 11.0.3 и 8u212) ассоциации с .jar в Windows работают из коробки
vlsinitsyn
19.04.2019 11:14Как вовремя однако IBM отдал J9 в Eclipse.
Жду с нетерпением, когда RHEL сделает именно этот JDK своим стандартом.
Это было бы теперь логично.
JayDi
19.04.2019 11:18Стоит обратить внимание, что с последним обнавлением Oracle закрыл JAVA-дистрибутивы от свободного скачивания в автоматическом режиме, скрыв их за страницей регистрации (раньше регистрация была нужна только для скачивания старых версий, сейчас же — и для последних тоже). В следствие чего часть открытого ПО перестала работать (ставиться), т.к. закачка Java поломалась.
Пример:
github.com/magefree/mage/issues/5723
fRoStBiT
19.04.2019 14:50две версии JDK: Oracle JDK (aka Java SE) и Open JDK
Но ведь OpenJDK — это и есть reference implementation Java SE.
А Oracle JDK — это его сборка от Oracle под другой лицензией.
Так что и то, и другое — это в чистом виде Java SE.
alexbel
19.04.2019 16:05Сразу видно на главную русскоязычную Java конференцию никто не ходил habr.com/ru/company/jugru/blog/447498 а там можно было пообщаться с разработчиками Liberica JDK. Liberica JDK — делается в Санкт-Петербурге бывшими инженерами Oracle. Компания BellSoft, которая делает Liberica JDK за два года существования вошла в топ-5 самых активных контрибьюторов OpenJDK, вместе с Oracle, Red Hat, SAP и Google. BellSoft поддерживает JetBrains Runtime, на котором работают продукты IntelliJ. Liberica JDK верифицирована TCK тестами и гарантировано соответствует стандарту Java SE, в отличие от Adopt. Естественно, Liberica JDK бесплатна. https://bell-sw.com
KnockKnock
20.04.2019 04:53Вот я же говорил, что Liberica как-то не на слуху совсем, а Adopt в первых рядах рекомендуемых. :)
Ещё из плюсов: есть сборки и под arm32, наконец доступна в SDKMANе.
Skerrigan
22.04.2019 05:39Никак не претензия или «колкость», на самом деле интересно — за счет чего сущетствуют такие «аттракционы невиданной щедрости»?
Просто нужны хорошие специалисты. А кто им «хлеба булку оплатит»?
UPD: С WebDriver относительно все понятно — там «3,5 человека» двигают основу и на них выделяют копеечку «баузеро-производители». А тут как ситуация обстоит?
Valle
19.04.2019 17:54Написал бы кто статью как устанавливать ту OpenJDK. Десятилетие с нормальным установщиком полностью стерло понимание что предполагается делать с тем набором файлов которое скачивается как OpenJDK.
DSolodukhin
19.04.2019 18:00как устанавливать ту OpenJDK
sudo apt install openjdk-[version]-jdk
Вся статья.klvov
19.04.2019 21:23+1Казалось бы, все просто: скачиваем этот openjdk, распаковываем куда-нибудь, нацеливаем на него JAVA_HOME, прописываем bin в PATH. Начинаем запускать:
* NetBeans 8.2 не запускается
* Oracle SQL Developer не запускается
И еще неизвестно сколько софта тоже наверное не запускается, непонятно почему. Привет, бубен.Teapot
20.04.2019 15:17Бубен не нужен, просто можно взять дистрибутив с нормальным инсталлятором, например Либерику.
klvov
21.04.2019 11:10Интереса ради проверил: да, с JDK от Либерики это все запускается. Для того, чтобы запустился sqldeveloper, пришлось скопировать msvcr120.dll рядом под именем msvcr100.dll, видимо там у него внутри это где-то захардкожено, или у меня версия старая. Спасибо.
sergey-gornostaev
20.04.2019 18:10NetBeans не запускается потому, что
The 8.2 version of the IDE cannot be installed or run on the JDK older than JDK 8.
KnockKnock
21.04.2019 03:20Не всё так просто. Насколько я знаю, в этих репозиториях лежит их собственная сборка OpenJDK (не так давно, например, при установке jdk 11 устанавливалась 10я версия — что смогли, то и собрали).
Поэтому для получения именно Oracle OpenJDK придётся повозиться.
Проще взять Liberica JDK — у них всё серьёзно и хорошо.
rjhdby
19.04.2019 22:00OpenJDK полностью бесплатная и распространяется под GPL.
Знатоки, просветите такой момент — код, написанный/работающий с использованием OpenJDK, под GPL не попадает?KnockKnock
21.04.2019 03:25У OpenJDK лицензия GPLv2 с classpath exception — "сторонний" код под неё не попадает.
dominigato
20.04.2019 01:06+1Это только мне кажется что Оракл как-то неуклюже пытается «монетизировать» джаву? То суды с Гуглом, теперь это. Такие движения немного нервируют и заставляют задуматься стоит ли связываться с технологией, в которой слишком часто меняются правила игры. Учитывая истории с Ораклом и опенсурсом как-то не ждешь ничего хорошего.
Хотя это может только мое предвзятое мнение.DieSlogan
20.04.2019 08:29+2Вы не один такой. Шаг за шагом они гнут свою линию с выбиванием денег. Сокращают lifetime бесплатных версий, убивают обратную совместимость, все для того чтобы не нытьём так катанием им занесли конвертик.
kuftachev
20.04.2019 03:19-2Oracle просто продвигает .Net. Кто теперь в здравом уме начнет новый проект на Java?
DieSlogan
20.04.2019 08:20+1Иногда складывается ощущение, что кто-то переместился в прошлое и что-то там поправил. Вот ещё недавно у нас 2 непримиримых лагеря, а сегодня уже читаешь документацию на сайте Microsoft о том, как поднять Linux dotNET приложение в качестве демона
Zalechi
Вот оно чё, Михалыч!