Java теперь платная? Развенчиваем слухи (или нет?)

    Уже 2 дня как вступили в силу изменения лицензионной политики Oracle на распространение сборок Java SE. В среде разработчиков-слоупоков (я тоже в их числе) начали носиться кошмарные слухи.

    Что произошло


    В середине 2018 года Oracle объявил, что собирается изменить лицензионную политику. 16 апреля 2019 года изменение вступило в силу. Теперь все опубликованные после этой даты сборки Java SE можно использовать бесплатно только для личных нужд и с целью разработки. Для использования в коммерческих целях (в том числе для продакшена) надо оформить платную подписку у Oracle.

    Что-а-а?


    Oracle выстрелил себе в ногу и убивает Java? Нет, не убивает. Нет, не выстрелил. Но проблем халявщикамвсем нам подкинул. Давайте быстро разберемся, что это означает в практическом плане, без этих ваших GPL, BCL, WTF…

    Зачем они это сделали?


    Как известно, 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 или удаляя совсем.

    Only registered users can participate in poll. Log in, please.

    На какую сборку вы перейдете?

    Share post

    Comments 63

      –10
      Вот оно чё, Михалыч!
        +17
        В среде разработчиков-слоупоков начали носится кошмарные слухи.
        Нет, не убивает, нет не выстрелил.
        Для использования в коммерческих целях (в том числе для продакшена) надо оформить платную подписку у Oracle.

        Или я читать разучился, или с логикой у автора некоторые сложности.
          +9
          Существует 2 вида JDK от Oracle — OpenJDK и Oracle JDK.
          OpenJDK — это эталонная реализация JDK, Oracle JDK базируется на OpenJDK.
          Раньше были различия между OpenJDK и Oracle JDK, теперь их нет.
          OpenJDK полностью бесплатная и распространяется под GPL.
          Oracle JDK раньше была бесплатной, теперь платная.
          Oracle JDK отличается от OpenJDK только наличием платной поддержки.

          Практически в любом дистрибутиве в основном репозитории есть только OpenJDK.
            +2
            «Oracle JDK базируется на OpenJDK»
            «OpenJDK полностью бесплатная и распространяется под GPL.»

            Получается что у платной Oracle JDK должны быть открыты исходники и можно самому патчи LTS собирать?
              +1
              Нет, исходный код должен быть предоставлен по требованию пользователям Oracle JDK или распространяться вместе с исполнимым кодом. Покупаете Oracle JDK и можете запросить исходники(либо дают их в комплекте).
              ru.wikipedia.org/wiki/GNU_General_Public_License
                0
                Oracle как владелец продукта может лицензировать его другим (а тем более себе) не только под GPL. Что он и делает.
                  +1
                  У Java двойная лицензия. Все должны Oracle, а Oracle никому не должен
                  +1
                  OpenJDK — это исходные коды. Чтобы получился бинарник, кто-то должен его собрать, протестировать, упаковать в правильные контейнеры, написать инсталляторы и так далее. Oracle собирает текущую версию OpenJDK и хостит бинарники на jdk.java.net.
                +10

                Oracle сказал бизнесам: или вы пользуетесь самой свежей версией и это бесплатно или будете платить желая оставаться на старье. Интересное решение, которое в перспективе должно подтолкнуть развитие платформы и экосистемы.

                  +23

                  Если я правильно понимаю, раньше было 2 проприетарных платформы, работающих по сходим правилам: .net и java. Microsoft, чтобы "подтолкнуть развитие платформы и экосистемы", вывела .net в опенсорс; Oracle с той же целью сделала java платной. Очень интересно будет посмотреть в перспективе, чья стратегия к чему привела.

                    +5
                    Java и так в опенсорсе
                      0
                      .NET тут заранее в более выгодной позиции, т.к. для Oracle их Java — это прямой инструмент зарабатывания денег, в то время как Microsoft их .NET — это продукт помогающий продать больше копий Windows и других решений от MS. Так что MS вполне могут позволить себе раздавать .NET бесплатно, более того — им это выгоднее чем продавать его за деньги.
                        +3

                        .net это теперь не только Windows. На лицо смена концепции и нельзя не отметить сколь выигрышно она смотрится на фоне Oracle

                      +15

                      Сформулирую это так: Либо вы платите за поддержку стабильной версии джавы, либо работаете бесплатными тестерами последней версии.

                        0

                        Существует проблема совместимости разных версий JDK. Заказное ПО не может запуститься на новых версиях JDK, за смену версии java требуют стоимость полной разработки с нуля. Написал единожды работает везде?
                        ps: на java не пишу.

                          +1
                          Из личной практики: при переходе с 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'
                          

                            +2
                            Вам здорово повезло.
                            Мы до сих пор не можем слезть с восьмерки
                          0
                          А она нужна, эта поддержка? Из моей практики от нее обычно довольно мало толку. Последний живой пример показал, что иногда отвечают биороботы, способные разве что прочесть документацию.
                        +2
                        AdoptOpenJDK предоставляет .msi, который и установит, и JAVA_HOME пропишет, так что не желающим распаковывать руками можно не беспокоиться.
                          0
                          А что с лицензиями?
                          АПД: все бесплатно
                          0
                          Amazon Corretto — бесплатен, есть установщик. JavaFX поддерживается. Работает как для разнообразного конольного и GUI софта, так и для игр типа Майнкрафта. Обещают LTS поддержку как 8, так и 11 версии, без необходимости прыжков на нестабильные версии.
                          –5
                          Ставить OpenJDK. Но сам OpenJDK от Oracle не имеет официального виндового установщика (и автоматического апдейта), надо его распаковывать руками.

                            +4
                            Отличия в функциональности минимальны

                            В данный момент отличий нет вообще. Oracle JDK отличается от Open JDK только лицензией.
                              0
                              В данный момент отличий нет вообще. Oracle JDK отличается от Open JDK только лицензией.


                              Выделил самое главное в ваших словах.
                                0
                                То есть, вы хотите сказать, что Оракл несколько лет долго и упорно выпиливала эти различия, чтобы теперь добавить новых?
                                  +1
                                  Я хочу сказать, что если завтра им захочется/покажется, что мало денег/требования левой пятки, вы и не такой цирк увидите.
                                    0
                                    Не вижу цирка.
                                    Вообще ничего не изменилось. sudo apt install default-jdk и все.
                                      0
                                      Oracle перестал был владельцем Java. Теперь это open source, в который контрибьютят несколько десятков компаний, от небольших типа Excelsior JET до гигантов типа IBM и Red Hat. Максимум, чего Oracle может захотеться, это выкатить в свою сборку какой-нибудь новый коммерческий функционал.
                                        0
                                        Ну да, но что такое Java без JVM? А в JVM у нас зоопарк. Как тот или иной производитель реализовал это всё, как часто он будет поддерживать и исправлять баги? Куча вопросов и риски. Риск того, что завтра вы словите баг JVM, риск того, что в данной JVM данный функционал будет работать странно, риск того, что завтра JVM будет платной.
                                        Вы считаете, что этим всем можно пренебречь?
                                          0
                                          Никакого зоопарка в JVM нет. Во-первых, все существующие JVM следуют очень строгой спецификации. Во-вторых, есть эталонная реализация — HotSpot, являющаяся частью OpenJDK. На которую, повторюсь, не влияет какая-то одна компания. И нет вообще не единого шанса, что завтра OpenJDK и HotSpot станут платными. В-третьих, наличие нескольких JVM — это хорошо, это возможность выбора, конкуренция и порождаемое ею качество. Не понравилось что-то в HotSpot — можно взять OpenJ9 например.

                                          Если вам нужна поддержка, вы можете купить лицензию Oracle. Но огромный Mail.Ru Group, например, живёт без неё, на сколько мне известно. Если не устраивает частота и продолжительность исправления багов, вы можете сменить поставщика сборки. Некоторые компании не только багфиксы для 7-й версии до сих пор выпускают, но и фичи бэкпортят. Да и в целом риск словить баг или наткнуться на особенности реализации сильно снизился с того момента, как Oracle отдала Java в open source.

                                          Я считаю, что всё стало сильно лучше. Риски и неуверенность в завтрашнем дне были, когда Java принадлежала одной компании. А теперь она свободна. У вас есть выбор и гарантия, что его не отнимут.
                                  +1
                                  В swing-е:
                                  в openJDK10/11/12 шрифты рендерятся позорно по сравнению с oracleJDK10/11/12 соответственно.
                                    0
                                    Насколько я знаю, например JetBrains поставляют свою сборку JRE, в которой в том числе это красивее выглядит.
                                      0
                                      Интересно как JetBrains настраивают рендер шрифтов, кто-нибудь знает?
                                  0
                                  Такое ощущение, что это еще один повод для выхода Фуксии в свет.
                                    0
                                    А что мешает опенсорсному комьюнити выпускать такие же LTS патчи для OpenJDK бесплатно, наподобие CentOS vs RedHat?
                                      +1
                                      Есть еще Liberica JDK, от BellSoft. Есть .msi, есть LTS для 8 и 11. Только, по какой-то причине, после установки, я руками дружил .jar и винду.
                                        0
                                        Да, bell-sw.com/java.html
                                        И в свежих версиях Liberica JDK (12.0.1, 11.0.3 и 8u212) ассоциации с .jar в Windows работают из коробки
                                        0
                                        Как вовремя однако IBM отдал J9 в Eclipse.
                                        Жду с нетерпением, когда RHEL сделает именно этот JDK своим стандартом.
                                        Это было бы теперь логично.
                                          +2
                                          Стоит обратить внимание, что с последним обнавлением Oracle закрыл JAVA-дистрибутивы от свободного скачивания в автоматическом режиме, скрыв их за страницей регистрации (раньше регистрация была нужна только для скачивания старых версий, сейчас же — и для последних тоже). В следствие чего часть открытого ПО перестала работать (ставиться), т.к. закачка Java поломалась.

                                          Пример:
                                          github.com/magefree/mage/issues/5723
                                            0
                                            А если использовать GraalVM?
                                              0

                                              Graalvm часть openjdk. На 12 версии просто флагом включается. Плюс есть утилита для компиляции модуля или класса в нативный so бинарик. Работает пока только под linux.

                                              0
                                              две версии JDK: Oracle JDK (aka Java SE) и Open JDK

                                              Но ведь OpenJDK — это и есть reference implementation Java SE.
                                              А Oracle JDK — это его сборка от Oracle под другой лицензией.
                                              Так что и то, и другое — это в чистом виде Java SE.

                                                0
                                                Причём Oracle JDK — это сборка _подмножества_ OpenJDK.
                                                +2
                                                Сразу видно на главную русскоязычную 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
                                                  0
                                                  Вот я же говорил, что Liberica как-то не на слуху совсем, а Adopt в первых рядах рекомендуемых. :)

                                                  Ещё из плюсов: есть сборки и под arm32, наконец доступна в SDKMANе.
                                                    0
                                                    Никак не претензия или «колкость», на самом деле интересно — за счет чего сущетствуют такие «аттракционы невиданной щедрости»?
                                                    Просто нужны хорошие специалисты. А кто им «хлеба булку оплатит»?
                                                    UPD: С WebDriver относительно все понятно — там «3,5 человека» двигают основу и на них выделяют копеечку «баузеро-производители». А тут как ситуация обстоит?
                                                    0
                                                    Написал бы кто статью как устанавливать ту OpenJDK. Десятилетие с нормальным установщиком полностью стерло понимание что предполагается делать с тем набором файлов которое скачивается как OpenJDK.
                                                      0
                                                      как устанавливать ту OpenJDK

                                                      sudo apt install openjdk-[version]-jdk
                                                      Вся статья.
                                                        +1
                                                        Казалось бы, все просто: скачиваем этот openjdk, распаковываем куда-нибудь, нацеливаем на него JAVA_HOME, прописываем bin в PATH. Начинаем запускать:

                                                        * NetBeans 8.2 не запускается
                                                        * Oracle SQL Developer не запускается

                                                        И еще неизвестно сколько софта тоже наверное не запускается, непонятно почему. Привет, бубен.
                                                          +2
                                                          Бубен не нужен, просто можно взять дистрибутив с нормальным инсталлятором, например Либерику.
                                                            0
                                                            Интереса ради проверил: да, с JDK от Либерики это все запускается. Для того, чтобы запустился sqldeveloper, пришлось скопировать msvcr120.dll рядом под именем msvcr100.dll, видимо там у него внутри это где-то захардкожено, или у меня версия старая. Спасибо.
                                                            +1
                                                            NetBeans не запускается потому, что
                                                            The 8.2 version of the IDE cannot be installed or run on the JDK older than JDK 8.
                                                            +2

                                                            Не всё так просто. Насколько я знаю, в этих репозиториях лежит их собственная сборка OpenJDK (не так давно, например, при установке jdk 11 устанавливалась 10я версия — что смогли, то и собрали).
                                                            Поэтому для получения именно Oracle OpenJDK придётся повозиться.
                                                            Проще взять Liberica JDK — у них всё серьёзно и хорошо.

                                                          0
                                                          OpenJDK полностью бесплатная и распространяется под GPL.

                                                          Знатоки, просветите такой момент — код, написанный/работающий с использованием OpenJDK, под GPL не попадает?
                                                            +1
                                                            Не попадает.
                                                              0

                                                              У OpenJDK лицензия GPLv2 с classpath exception — "сторонний" код под неё не попадает.

                                                              +1
                                                              Это только мне кажется что Оракл как-то неуклюже пытается «монетизировать» джаву? То суды с Гуглом, теперь это. Такие движения немного нервируют и заставляют задуматься стоит ли связываться с технологией, в которой слишком часто меняются правила игры. Учитывая истории с Ораклом и опенсурсом как-то не ждешь ничего хорошего.
                                                              Хотя это может только мое предвзятое мнение.
                                                                +2

                                                                Вы не один такой. Шаг за шагом они гнут свою линию с выбиванием денег. Сокращают lifetime бесплатных версий, убивают обратную совместимость, все для того чтобы не нытьём так катанием им занесли конвертик.

                                                                –1

                                                                Oracle просто продвигает .Net. Кто теперь в здравом уме начнет новый проект на Java?

                                                                  +1

                                                                  Иногда складывается ощущение, что кто-то переместился в прошлое и что-то там поправил. Вот ещё недавно у нас 2 непримиримых лагеря, а сегодня уже читаешь документацию на сайте Microsoft о том, как поднять Linux dotNET приложение в качестве демона

                                                                    0
                                                                    MS просто хотят продавать облака, а не софт, как Oracle.
                                                                  0
                                                                  Установил тут corretto на MacOS. Они единственные ставят JDK в JavaVirtualMachines не пофайлово, а пакетом. Мелочь, а приятно.
                                                                  Из плюсов — то же соответствие по TCK, ну и очевидно откуда финансирование: у Amazon куча сервисов на Java и они посчитали целесообразнее сопровождать jdk самостоятельно.
                                                                  Из минусов мне видится, что как только они переползут целиком на Java 11, то Java 8 забросят, но к тому времени — думается — большинство переползёт.
                                                                  P.S.> Если вы разрабатываете на MacOS, то рекомендую рассмотреть corretto как jdk для рабочего ПК.

                                                                  Only users with full accounts can post comments. Log in, please.