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



Уже 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 или удаляя совсем.

Вы можете помочь и перевести немного средств на развитие сайта



Комментарии (60):

  1. Zalechi
    /#20045012

    Вот оно чё, Михалыч!

  2. rsashka
    /#20045088 / +1

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

    Или я читать разучился, или с логикой у автора некоторые сложности.

    • ExplosiveZ
      /#20045176

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

      Практически в любом дистрибутиве в основном репозитории есть только OpenJDK.

      • youlose
        /#20046890 / +1

        «Oracle JDK базируется на OpenJDK»
        «OpenJDK полностью бесплатная и распространяется под GPL.»

        Получается что у платной Oracle JDK должны быть открыты исходники и можно самому патчи LTS собирать?

        • Firz
          /#20047426

          Нет, исходный код должен быть предоставлен по требованию пользователям Oracle JDK или распространяться вместе с исполнимым кодом. Покупаете Oracle JDK и можете запросить исходники(либо дают их в комплекте).
          ru.wikipedia.org/wiki/GNU_General_Public_License

        • fRoStBiT
          /#20048408

          Oracle как владелец продукта может лицензировать его другим (а тем более себе) не только под GPL. Что он и делает.

        • alexbel
          /#20048946 / +1

          У Java двойная лицензия. Все должны Oracle, а Oracle никому не должен

      • alexbel
        /#20048998 / +1

        OpenJDK — это исходные коды. Чтобы получился бинарник, кто-то должен его собрать, протестировать, упаковать в правильные контейнеры, написать инсталляторы и так далее. Oracle собирает текущую версию OpenJDK и хостит бинарники на jdk.java.net.

  3. funca
    /#20045096 / +1

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

    • pankraty
      /#20045140 / +2

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

      • qrck13
        /#20051756

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

        • DieSlogan
          /#20052158 / +2

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

    • Scf
      /#20045416

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

      • WinLin2
        /#20045956

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

        • Skerrigan
          /#20046866

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

          • DieSlogan
            /#20049080

            Вам здорово повезло.
            Мы до сих пор не можем слезть с восьмерки

      • sshikov
        /#20050292

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

  4. mk2
    /#20045260 / +1

    AdoptOpenJDK предоставляет .msi, который и установит, и JAVA_HOME пропишет, так что не желающим распаковывать руками можно не беспокоиться.

    • barbalion
      /#20045468

      А что с лицензиями?
      АПД: все бесплатно

  5. DaemonGloom
    /#20045822

    Amazon Corretto — бесплатен, есть установщик. JavaFX поддерживается. Работает как для разнообразного конольного и GUI софта, так и для игр типа Майнкрафта. Обещают LTS поддержку как 8, так и 11 версии, без необходимости прыжков на нестабильные версии.

  6. eyeofhell
    /#20045954

    Ставить OpenJDK. Но сам OpenJDK от Oracle не имеет официального виндового установщика (и автоматического апдейта), надо его распаковывать руками.

  7. sergey-gornostaev
    /#20046008

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

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

    • DieSlogan
      /#20049108

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


      Выделил самое главное в ваших словах.

      • Endeavour
        /#20049272

        То есть, вы хотите сказать, что Оракл несколько лет долго и упорно выпиливала эти различия, чтобы теперь добавить новых?

        • DieSlogan
          /#20049380

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

          • Endeavour
            /#20049490

            Не вижу цирка.
            Вообще ничего не изменилось. sudo apt install default-jdk и все.

          • sergey-gornostaev
            /#20054052

            Oracle перестал был владельцем Java. Теперь это open source, в который контрибьютят несколько десятков компаний, от небольших типа Excelsior JET до гигантов типа IBM и Red Hat. Максимум, чего Oracle может захотеться, это выкатить в свою сборку какой-нибудь новый коммерческий функционал.

            • DieSlogan
              /#20055534

              Ну да, но что такое Java без JVM? А в JVM у нас зоопарк. Как тот или иной производитель реализовал это всё, как часто он будет поддерживать и исправлять баги? Куча вопросов и риски. Риск того, что завтра вы словите баг JVM, риск того, что в данной JVM данный функционал будет работать странно, риск того, что завтра JVM будет платной.
              Вы считаете, что этим всем можно пренебречь?

              • sergey-gornostaev
                /#20055678

                Никакого зоопарка в JVM нет. Во-первых, все существующие JVM следуют очень строгой спецификации. Во-вторых, есть эталонная реализация — HotSpot, являющаяся частью OpenJDK. На которую, повторюсь, не влияет какая-то одна компания. И нет вообще не единого шанса, что завтра OpenJDK и HotSpot станут платными. В-третьих, наличие нескольких JVM — это хорошо, это возможность выбора, конкуренция и порождаемое ею качество. Не понравилось что-то в HotSpot — можно взять OpenJ9 например.

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

                Я считаю, что всё стало сильно лучше. Риски и неуверенность в завтрашнем дне были, когда Java принадлежала одной компании. А теперь она свободна. У вас есть выбор и гарантия, что его не отнимут.

    • dima_habr
      /#20059334

      В swing-е:
      в openJDK10/11/12 шрифты рендерятся позорно по сравнению с oracleJDK10/11/12 соответственно.

  8. saag
    /#20046192

    Такое ощущение, что это еще один повод для выхода Фуксии в свет.

  9. Londoner
    /#20046434

    А что мешает опенсорсному комьюнити выпускать такие же LTS патчи для OpenJDK бесплатно, наподобие CentOS vs RedHat?

  10. BratSin
    /#20046606

    Есть еще Liberica JDK, от BellSoft. Есть .msi, есть LTS для 8 и 11. Только, по какой-то причине, после установки, я руками дружил .jar и винду.

    • Teapot
      /#20053506

      Да, bell-sw.com/java.html
      И в свежих версиях Liberica JDK (12.0.1, 11.0.3 и 8u212) ассоциации с .jar в Windows работают из коробки

  11. vlsinitsyn
    /#20046968

    Как вовремя однако IBM отдал J9 в Eclipse.
    Жду с нетерпением, когда RHEL сделает именно этот JDK своим стандартом.
    Это было бы теперь логично.

  12. JayDi
    /#20046994

    Стоит обратить внимание, что с последним обнавлением Oracle закрыл JAVA-дистрибутивы от свободного скачивания в автоматическом режиме, скрыв их за страницей регистрации (раньше регистрация была нужна только для скачивания старых версий, сейчас же — и для последних тоже). В следствие чего часть открытого ПО перестала работать (ставиться), т.к. закачка Java поломалась.

    Пример:
    github.com/magefree/mage/issues/5723

  13. rraderio
    /#20047992

    А если использовать GraalVM?

    • fshp
      /#20048958

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

  14. fRoStBiT
    /#20048506

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

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

    • Teapot
      /#20053524

      Причём Oracle JDK — это сборка _подмножества_ OpenJDK.

  15. alexbel
    /#20049078

    Сразу видно на главную русскоязычную 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
      /#20052004

      Вот я же говорил, что Liberica как-то не на слуху совсем, а Adopt в первых рядах рекомендуемых. :)

      Ещё из плюсов: есть сборки и под arm32, наконец доступна в SDKMANе.

    • Skerrigan
      /#20057744

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

  16. Valle
    /#20049830

    Написал бы кто статью как устанавливать ту OpenJDK. Десятилетие с нормальным установщиком полностью стерло понимание что предполагается делать с тем набором файлов которое скачивается как OpenJDK.

    • DSolodukhin
      /#20049880

      как устанавливать ту OpenJDK

      sudo apt install openjdk-[version]-jdk
      Вся статья.

      • klvov
        /#20050812 / +1

        Казалось бы, все просто: скачиваем этот openjdk, распаковываем куда-нибудь, нацеливаем на него JAVA_HOME, прописываем bin в PATH. Начинаем запускать:

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

        И еще неизвестно сколько софта тоже наверное не запускается, непонятно почему. Привет, бубен.

        • Teapot
          /#20053518

          Бубен не нужен, просто можно взять дистрибутив с нормальным инсталлятором, например Либерику.

          • klvov
            /#20055384

            Интереса ради проверил: да, с JDK от Либерики это все запускается. Для того, чтобы запустился sqldeveloper, пришлось скопировать msvcr120.dll рядом под именем msvcr100.dll, видимо там у него внутри это где-то захардкожено, или у меня версия старая. Спасибо.

        • sergey-gornostaev
          /#20054066

          NetBeans не запускается потому, что

          The 8.2 version of the IDE cannot be installed or run on the JDK older than JDK 8.

      • KnockKnock
        /#20055000

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

  17. rjhdby
    /#20050960

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

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

    • KnockKnock
      /#20055012

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

  18. dominigato
    /#20051778 / +1

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

    • DieSlogan
      /#20052176 / +2

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

  19. kuftachev
    /#20051928 / -2

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

    • DieSlogan
      /#20052166 / +1

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

      • vasyan
        /#20055056

        MS просто хотят продавать облака, а не софт, как Oracle.