Раньше деревья были выше, трава зеленее, а Java была бесплатной. А что сейчас? Про биологию не знаю, а с Java давайте разбираться…

Статья подготовлена специально для блога OTUS и приурочена к запуску очередного курса «Разработчик Java».

Наверное, многие уже видели, что последний релиз Oracle Java немного необычный.
На странице с дистрибутивом красуется такой текст:
Important changes in Oracle JDK 11 License
With JDK 11 Oracle has updated the license terms on which we offer the Oracle JDK.
Изменилась лицензия использования Java. Проходим по ссылке и читаем:
Oracle grants You a nonexclusive, nontransferable, limited license to internally use the Programs, subject to the restrictions stated in this Agreement and Program Documentation, only for the purpose of developing, testing, prototyping and demonstrating Your Application and not for any other purpose.
Т.е. Oracle теперь четко определил для каких целей можно использовать Java 11, это:

  • developing (разработка)
  • testing (тестирование)
  • prototyping (прототипирование)
  • and demonstrating (и демонстрация).

Все, больше ничего нет. Это закрытый четкий список.

А где-же коммерческое использование с целью получения прибыли?

А его больше нет. Если ходите использовать java 11 в коммерческих целях — покупайте подписку.

Получается, что бесплатная Java стала неожиданно платной.

Вы скажете, что это не большая проблема, т.к. в природе есть OpenJDK и он нас спасет.

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

Тут на сцене появляются организации, которые сделают это важное дело. Но как выясняется, их изделия или низкого качества или дорогие. А нам надо бесплатно и качественно.

Что делать?

В Питере у компании Oracle был центр разработки, в котором разрабатывали и тюнили Java. Многих из этих грамотных инженеров мы знаем по многочисленным и очень полезным докладам на Jpoint, Joker и т.д.

Oracle закрыл центр, инженеры разошлись. Некоторые из них организовали софтверную компанию BellSoft. Компания BellSoft кроме прочего собирает и тестирует билд JDK на основе OpenJDK (Liberica JDK). У них есть платная подписка, а есть возможность абсолютно бесплатно, т.е. даром пользоваться бинарной сборкой, т.е. тем, что мы раньше качали с сайта Oracle.

Бесплатно — это хорошо, а что насчет качества?

Во-первых, этой работой занимаются, не случайные люди, а опытные разработчики Oracle JDK, которые изнутри знают, как оно там все работает.

Во-вторых, BellSoft — технологический партнер другой известной компании JetBrains. BellSoft поддерживает JetBrains Runtime — это платформа, на которой работают продукты IntelliJ.

Очевидно, что у нас достаточно оснований, чтобы попробовать Liberica JDK в деле и сэкономить значительные бюджеты.

P.S.: Кстати, 14 февраля в Кроке представители BellSoft рассказывали по Liberica JDK. Организаторы обещали выложить материалы тут, ждем :)

UPD.
Мысль поста одной строкой:
Java Platform (JDK), который качали с сайта Oracle, больше нельзя использовать в коммерческих целях.
Есть альтернативы, одна из них — Liberica JDK.

UPD-2.
Ссылка на обзор основных сборок OpenJDK:
Time to look beyond Oracle's JDK

Комментарии (27)


  1. bentall
    16.02.2019 01:22

    Не, я всё понимаю, поддержим отечественного производителя, и всё такое, но мне казалось, что опция по умолчанию всё же adoptopenjdk.net У адоптов нет Linux ARMv7 версии, но зато есть IBM-овский OpenJ9 как альтернатива HotSpot.


    1. Petrelevich Автор
      16.02.2019 01:41
      +2

      Liberica JDK прошел проверку соответствия TCK, а вот adoptopenjdk нет.
      Поэтому строго формально adoptopenjdk — это не «опция по умолчанию».


  1. Stas911
    16.02.2019 04:16

    А еще у Амазона есть бесплатный Corretto


  1. olegchir
    16.02.2019 05:05
    +4

    > собрать готовый к бою runtime из файлов OpenJDK — дело не самое простое.

    В чем сложность? опенждк собирается в три строчки в консоли, постоянно это делаю. Может мне тоже выложить ОлегJDK теперь? :) Мне почему-то кажется, что суть OpenJDK именно в том, и есть что оно одинаковое у всех, ничем не отличается.

    А вот коммерческая поддержка от белсофта — вот это действительно круто, учитывая что это российская компания с главным офисом разработки в Питере, и работают там живые люди, а не биороботы. Если у тебя беда, или нужно какое-то специальное решение, или вообще что угодно — в России есть единственное вполне конкретное место, куда нужно обращаться, и это белсофт.


    1. Petrelevich Автор
      16.02.2019 15:46

      Ну что-то собрать может и не сложно.
      А тестирование, в том числе нагрузочное?
      на тест на соответствие: Technology Compatibility Kit (https://en.wikipedia.org/wiki/Technology_Compatibility_Kit)
      вы это тоже делаете?

      Хотя, согласен, требования к стабильности разные…


      1. olegchir
        16.02.2019 17:13

        Какие вещества ты там употребляешь? На том же самом исходнике TCK уже прошла толпа компаний.

        Олсо, TCK всем форкам OpenJDK выдается почти мгновенно. Так что можно и пройти, но не нужно по вышеописанной причине. У AdoptOpenJDK тоже нет TCK.


        1. Petrelevich Автор
          16.02.2019 18:45

          Олег, а как BellSoft обосновывает появление Liberica?


          1. olegchir
            17.02.2019 08:43
            +1

            Какая разница? Они — коммерческая компания, и свою работу могут объяснять любым выгодным им способом. Хорошо что они есть, и мне самому понятна их нужность. Плохо, что ты притащил всю эту рекламу под видом независимого мнения, за что и поплатился.

            Объясняю, почему это «реклама». Потому что в тексте написано «Что делать?» и дается единственный ответ — брать продукт одной-единственной компании. В то время, когда на рынке дочерта уже таких продуктов: AdoptOpenJDK от IBM, Zulu от Azul, сборка OpenJDK без какого-то особого названия от RedHat, Corretto от Amazon, SAPMachine от SAP, ещё чьи-то, включая самый главный — собираемый из исходников OSS вариант. У всех есть свои преимущества, например, с точки зрения глобальной справедливости, Zulu старше всех этих сборок. Превратить это в нормальную статью можно было бы добавлением аналитики: какой из этих продуктов, когда и зачем нужен. Или например, взяв интервью у создателей — тогда это перестанет быть независимым мнением. Или ещё как-то.

            BellSoft — моя любимая компания, и очень неприятно, что приходится оставлять такие комментарии под постом, который мог бы пойти им на пользу. От себя советую скачать и попробовать использовать Liberica (угадайте что — она работает на ура, причем не только на Arm64+GNU/Linux, как многие считают, а на чём угодно). Но пожалуйста, делайте это с умом, а не потому, что кто-то в интернете сказал, что это единственное решение.


  1. ivan19631224
    16.02.2019 05:25
    +3

    «Но как выясняется, их изделия или низкого качества или дорогие.»

    А вот этот момент можно пояснить? Что именно может быть не так со сборками, собираемыми из сорцов? И как этого избегают те кто собирает качественно?


  1. faoriu
    16.02.2019 07:16

    Подозреваю, что с такой политикой Oracle с Java люди начнут переходить на .NET.


    1. alexs0ff
      16.02.2019 08:02

      уточнение: на .net Core


    1. BUY33
      16.02.2019 10:02
      +1

      На java столько всего уже написано, что java практически стала бессмертной. Нужны золотые горы и долгие годы, чтобы превратить java в cobol. Никто никуда в ближайшие десятилетия не перейдёт.


      1. Matisumi
        16.02.2019 12:13
        +1

        Перейти не перейдет, а вот новые наработки могут начать писать на другом стеке, в том числе на .net


  1. bvn13
    16.02.2019 10:27
    +2

    А как же openjdk.java.net?

    Тут внизу страницы указано:

    License: GPLv2


    1. Petrelevich Автор
      17.02.2019 02:43

      Можно и этим пользоваться, однако

      Oracle will lead the first six months of an OpenJDK LTS code line, providing updates and producing Oracle OpenJDK builds, but will then afterward only provide updates for Oracle JDK, under a paid support plan.

      источник цитаты

      Как вы понимаете эту цитату?


      1. bvn13
        17.02.2019 08:19

        Примерно так: оракл делает билды openjdk — первые 6 месяцев релиза можно пользоваться бесплатно, последующее время апдейты платные. Если мне не изменяет память, то у оракла в планах выпускать новый релиз каждые полгода. Поэтому — обновлять и пользоваться.


  1. rsashka
    16.02.2019 11:10

    Для меня оказалось очень большой новостью, что теперь Java платная для коммерческого использования. А с учетом того, что Oracle выиграла апелляцию у Google, про API Java в Android, то существует вероятность, что в скором времени Oracle может наложить лапу вообще на любую разработку под Java.


  1. pmcode
    16.02.2019 12:12

    Сами же приводите цитату «Important changes in Oracle JDK 11 License» и следующей строчкой переводите ее как «Изменилась лицензия использования Java». WTF? И дальше тоже бред «Oracle теперь четко определил для каких целей можно использовать Java 11». Пофиксите, вы только людей которые не в теме путаете — не лучшая реклама курсам. Платным стал Oracle JDK, но Oracle JDK != Java.


    1. rsashka
      16.02.2019 12:59
      -1

      Да не это совсем бред.
      Java распространяется как JRE или JDK.
      Бесплатно для коммерческого использования остался только первый вариант, а лицензионные ограничения для использования Java JDK в коммерческих целях появилось уже начиная с Java SE 8.
      Тут впору написать Java JRE != Java


      1. pmcode
        16.02.2019 13:50
        -1

        Да нет уже никакого JRE. Это просто голый рантайм, без инструментов разрабочика. Может кто-то и начал собирать, но мне пока не попадалось. Oracle продвигает jlink и распространение Java приложений вместе с рантаймом.
        OpenJDK бесплатна для коммерческого использования в рамках полугодового релизного цикла. Дальше вы должны либо перейти на новую версию JDK, либо сидеть на старой, но без апдейтов.

        Был же вроде перевод этой исчерпывающей статьи на хабре

        Oracle JDK / Oracle OpenJDK builds and OpenJDK builds from other providers will be built from the same source for the first six months of updates and should be interchangeable for that period. After six months Oracle JDK / Oracle OpenJDK builds will be built from Oracle’s own fork. Other OpenJDK providers will continue to create binaries from the OpenJDK updates project. Oracle JDK / Oracle OpenJDK and OpenJDK builds from the other providers may therefore differ in small ways.

        Q. If I stay on Oracle JDK 8 / 11, do I have to pay to get security and bug fixes?
        For Oracle JDK 8, for personal desktop use, then no. For commercial use after January 2019, then yes. For Oracle OpenJDK builds starting with Java SE 11, after the initial 6 months of updates, then yes.

        Q. If I stay on OpenJDK 8 / 11, do I have to pay to get security and bug fixes?
        Not necessarily. As was the case with Java SE 6 and Java SE 7, Oracle works with the OpenJDK community to transition the leadership of OpenJDK update projects to other contributors. This has worked well for over a decade. It is very likely Red Hat will continue this leadership in OpenJDK 8 and OpenJDK 11 updates with help from Oracle and other parties. This means important patches will get selectively backported. You then have the choice of taking downstream OpenJDK based binaries from a variety of providers for free, or as part of a paid support offering. In particular, there is an OpenJDK Vulnerability group which deals with 0-day exploits and CVE’s and ensures that fixes get out as quickly as possible.


        1. rsashka
          16.02.2019 14:08
          -1

          Вы сами начали конкретизировать, что Oracle JDK != Java.
          Да, JRE и есть рантайм, как и есть возможность его скачать для предыдущих версий.
          Но так как в последних версиях доступна для загрузки только Java SE, то выходит Java = Java SE.
          А у Java SE лицензия запрещает коммерческое использование.
          Или я где-то ошибся в логике?


          1. pmcode
            16.02.2019 15:04

            Java SE в широком смысле включает в себя спецификацию языка, стандартную библиотеку (JCL) и спецификацию JVM. В узком смысле — только API. Java SE распространяется в виде JDK (ранее JDK + JRE). Коммерческое использование запрещает имплементация Java SE, которая называется Oracle JDK. Вы можете использовать имплементацию Java SE в виде OpenJDK для коммерческого использования бесплатно в течении 6 месяцев и далее в соотвествие с условиями конкретного вендора.

            в последних версиях доступна для загрузки только Java SE

            Java EE отдали в опенсорс и теперь она называется Jakarta EE.


  1. tempick
    16.02.2019 14:59

    Ну на мой взгляд логично — хочешь получить с этого прибыль — поделись ею с теми, благодаря кому ты зарабатываешь на этот хлеб. Ты хочешь кушать и они тоже кушать хотят. В чём проблема-то собсна?


  1. pmcode
    16.02.2019 15:04

    del


  1. alek_sys
    16.02.2019 17:18
    +2

    А где-же коммерческое использование с целью получения прибыли? А его больше нет. Если ходите использовать java 11 в коммерческих целях — покупайте подписку. Получается, что бесплатная Java стала неожиданно платной.

    Это хороший пример FUD, надеюсь, что исходит это не от компании Bell Software. Если коротко про Java:


    • OracleJDK теперь платная для коммерческого использования
    • OpenJDK совпадает по фичам с Oracle, все фичи коммерческой версии были выложены в OpenJDK
    • OpenJDK бесплатна для коммерческого использования
    • Новая версия OpenJDK выходит раз в 6 месяцев, при этом старые версии не поддерживаются
    • Long Term Support версии OpenJDK выходят раз в 3 года, но поддерживаются сторонними компаниями (платно или бесплатно)
    • Есть некоммерческие бесплатные дистрибутивы OpenJDK от Amazon, Microsoft, Azul Systems, Red Hat, а с недавних пор еще и от Bell Software, в том числе и LTS версии. А есть платные, например от Oracle.

    P.S. AdoptOpenJdk не имеет сертификата TCK не потому, что не проходит тесты, а из-за лицензионных ограничений Оракл, но это не значит что эти сборки не тестируются.


  1. dougrinch
    16.02.2019 22:09
    -2

    В принципе, в комментах уже подробно расписали про все ошибки в статье и полное непонимание темы автором. На всякий случай просто оставлю линк на «дефолтные» сборки OpenJDK от Оракла «как раньше».

    jdk.java.net

    Там все стандартно:

    This page provides production-ready open-source builds of the Java Development Kit, version 11.0.2, an implementation of the Java SE 11.0.2 Platform under the GNU General Public License, version 2, with the Classpath Exception.

    Commercial builds of JDK 11.0.2 from Oracle under a non-open-source license, for a wider range of platforms, can be found at the Oracle Technology Network.


    1. Petrelevich Автор
      16.02.2019 22:19
      +1

      Возьмите на себя труд по пунктам перечислить ошибки статьи.