Не попадитесь в ловушку используя Oracle JDK 11

Привет, Хабр! Представляю вашему вниманию перевод статьи «Do not fall into Oracle's Java 11 trap» автора Stephen Colebourne.

Java 11 была официально выпущена. Это мажорный релиз, имеющий долгосрочную поддержку (LTS — long-term support). Однако Oracle приготовила ловушку (намеренно или случайно).

Ловушка


В течение 23 лёт разработчики привыкли загружать JDK с сайта Oracle и использовать его бесплатно. Введите «JDK» в свою любимую поисковую систему, и верхняя ссылка будет вести на страницу загрузки Oracle Java SE (я намеренно не предоставляю ссылку). Но этот запрос и эта ссылка теперь являются ловушкой.

Oracle JDK, на который ссылаются почти все поисковые запросы, теперь является коммерческим, и не является бесплатным.

Ключевая часть обновлённого лицензионного соглашения заключается в следующем:
You may not: use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application;

Перевод
Вы не можете использовать программы для любой обработки данных или для любых коммерческих, производственных или внутренних бизнес-целей, кроме разработки, тестирования, прототипирования и демонстрации вашего приложения;


Ловушка выглядит следующим образом:

  1. Загрузите Oracle JDK (потому что это то, что вы всегда делали, и это то, куда с большой вероятностью выведет вас поисковая система).
  2. Используйте его в продакшен среде (потому что вы не понимали и/или не знали, что лицензия изменена)
  3. Получите неприятный телефонный звонок от команды по защите прав Oracle, требующей много денег.

Другими словами, Oracle может полагаться на инерцию разработчиков Java, чтобы заставить их загружать неправильную (коммерческую) версию Java. Если вы не прочтете текст лицензионного соглашения или предупреждения очень осторожно, вы, возможно, даже не поймете, что Oracle JDK теперь является коммерческим, и поэтому вам, возможно, придётся заплатить Oracle за Java.

Является ли эта ловушка злонамеренным поведением со стороны Oracle? У читателей будет свое мнение. Стоит иметь в виду, что Oracle вкладывает огромные суммы в разработку Java, поэтому разумно иметь коммерческий план для тех, кто этого хочет. Однако, Oracle также они предоставляет бесплатную альтернативу.

Решение


Решение простое!

Используйте сборку OpenJDK.

Помимо своего коммерческого JDK, Oracle создает сборку OpenJDK. Это бесплатная сборка с лицензией GPL (исключением является Classpath, безопасно для коммерческого использования). Скачать можно здесь.

В данный момент, OpenJDK сборка от Oracle является единственно доступной. Однако, в скором времени будет доступно больше, например, от AdoptOpenJDK (вероятно, на этой неделе). А также сборки OpenJDK, от других, отличных от Oracle, участников комьюнити, которые будут использоваться для долгосрочной поддержки Java 11. (прим. переводчика: про разницу между OpenJDK и AdoptOpenJDK можно прочитать этот ответ на SO)



Резюме


НЕ загружайте и не используйте Oracle JDK, если вы не намерены платить за него.

С настоящего момента и впредь, для использования Java 11 загружайте и используйте сборку OpenJDK.

Дополнительная информация по теме (англ.):
blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
blog.joda.org/2018/08/java-is-still-available-at-zero-cost.html
blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html
Поделиться публикацией
Комментарии 68
    +3

    это же перевод. может стоит указать с ссылкой на оригинал?

      +1

      Да это несомненно перевод и оригинал здесь. MSBlast укажите пожалуйста ссылку на него в начале вашей статьи.

        +1
        Пардон, ссылка на оригинальную статью теперь есть в первом абзаце.
          0

          Спасибо

        +6

        В комментариях к исходной статье есть еще любопытное дополнение: Oracle давно начала отслеживать скачивания «бесплатных» дополнений для VirtualBox, и затем присылать угрожающие письма и счета компаниям, с адресов которых были скачаны данные дополнения.


        По мне так это тактика мелких жуликов, совершенно не вяжущаяся с образом большой солидной корпорации. Но давно уже чувствовалось, что с Oracle что-то не так.

          0
          Дайте ссылку, пожалуйста. Если исходная статья чуть выше, то там нет комментариев вообще.
          0
          А еще они убрали возможность загрузки старых версий jre/jdk со своего сайта из командной строки, т.е. всякие wget/curl уже не помогут. Для доступа к старым версиям надо обязательно регистрироваться на их сайте.
            0

            curl пашет — я свой скрипт даже не менял.
            А то, что регистрацию требуют — так это вроде не так и критично...

              0
              Если я правильно понял скрипт download_oracle.bash, то там происходит логин на oracle.com, т.е. вам нужно заводить учетную запись там.
                0

                да. для архивных надо заводить. Но, как я написал выше — это не критично же. Учётка заводится один раз — можно завести "техническую" учётку для таких дел (вроде не нарушает лицензии)

            +1
            Так ровно так они ведут свой бизнес уже много лет с БД.
            Они заключают контракт с фирмой на их БД и описывают в контракте, какими фичами можно пользоваться. Спустя некоторое время происходит обновление версии БД с разными фиксами и новыми фичами. Новые фичи доступны полностью, но формально юзать их нельзя. Раз в какое-то время Оракл проводит аудит и замечает, что фичи, которые нельзя юзать по контракту используются кем-то и требует уплаты кучи штрафов за это.
            0
            Раз предоставляют бесплатную открытую альтернативу, да еще и поддерживают ее — то все нормально. Ынтерпрайз таки должен читать лицензии на софт перед тем, как использовать продукт. Хотя баннер про платность коммерческого использования, вылетающий при скачивании, не помешал бы…
              0

              Там вылетает лицензионное соглашение на 100500 страниц :)

                +1
                Вообще-то огромный красный баннер там есть, намекающий о том что надо почитать лиц. соглашение. А вот и оно, и кстати оно небольшое.

                Скриншот ниже, тут в комментариях

                З.Ы. Не являюсь никак лицом представляющим Oracle, просто рекомендую всё же идти и проверять информацию с хабра. Это полезно увидеть своими глазами.
              –18
              Scala, наша все :)
                +6
                Дядя, ты дурак?

                Если вы scala-разработчик, то мне искренне жаль ваших коллег. Вы не можете отличить язык от платформы.

                0
                Вот хитрожопый Oracle)
                  +1
                  Снижу немного градус напряженности. Все не совсем так, как описано. Вот пояснения от Oracle blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
                  –1
                  Я ничего не понял.
                  apt search jdk

                  openjdk-11-jdk/cosmic 10.0.2+13-1ubuntu1 amd64
                  OpenJDK Development Kit (JDK)

                  Это оракл или кто-то другой?
                    0

                    Это чистый OpenJDK, конечно же. Если через PPA привезти Оракл, он бы назывался как-то oracle-java8.

                      +1
                      То есть проблема с oracle решена. Используйте apt-get и не используйте подозрительный код с легальными бомбами с подозрительных сайтов.

                      (На самом деле я всё понимаю и перевёл единственный проект в моём хозяйстве с oracle-jdk на openjdk ещё во времена версии 8, не смотря на вялое сопротивление java-программистов, у которых «всё и так работает, не надо трогать»).

                        0

                        Подскажу: не у всех есть apt-get, особенно, на Windows. Там очень многие минимум качали установщик с https://java.com, и вот-с.

                          0
                          Не могу использовать apt-get, у меня emerge.

                          А если серьезно, у меня oracle-jdk и не думаю, что это проблема для запуска clion для разработки своего опенсорса. Я же не компания.

                          Так что в некоторых ситуациях и менять ничего не надо.
                            0
                            Если ваш опенсорс потом окажется в платном проекте — я бы не стал испытывать на прочность юротдел oracle.
                              0
                              так он на си пишет.
                                0
                                На плюсах.

                                Но вот коммерческая разработка с использованием oracle jdk вполне является коммерческим применением, собственно, jdk.
                                0
                                Ну я бы тоже не стал. К счастью, я по принципиальным соображениям не монетизирую свой опенсорс иначе как «посмотри, потенциальный работодатель, как я умею».
                                0

                                Для запуска clion и любых производных idea рекомендуется использовать jetbrains jre. Если вы пользуетесь jb toolbox, то у вас она уже используется.


                                В ней исправлены проблемы сглаживания шрифтов, а так же добавлен марлин, который только в jre9+ есть у других сборок.

                                  +1
                                  А также она на основе OpenJDK.
                                0
                                К слову о восьмой версии.
                                www.java.com/en/download/release_notice.jsp
                                  0
                                  А это вы зря. OpenJDK вовсе не замена Oracle JDK. Я находил openjdk специфичные баги там. Кроме того некоторые вещи, например JAI, в openjdk не работают. Вы создали проблемы для ваших разработчиков ибо окружение стало не унифицированным и воспроизведение ошибок стало сложнее. Так что на их месте я бы сопротивлялся более активно.
                                    0
                                    Замена.

                                    Oracle, например, ломает partner ссылку ubuntu, сначала запретив редистрибьюцию, а потом удалив версию с сайта без предупреждения.

                                    У нас сломался CI (на котором ставился oracle-java), и в в процессе решения проблемы, проблему с oracle решили.

                                    Алсо, легальная бомба. Это не opensource а очень даже махровый проприетарный код. Какой oracle? Зачем?
                                +1
                                Это тоже Оракл, но openjdk сборка имеет другую (GPL v2) лицензию и будет поддерживаться самим Ораклом (включая security патчи) только следующие 6 месяцев после релиза, до выхода следующего мажорного (необязательно LTS) релиза.

                                Подробности здесь — stackoverflow.com/questions/22358071/differences-between-oracle-jdk-and-openjdk и по ссылкам, что приведены в конце статьи.
                                  0
                                  Поясните пожалуйста, запуская свой продукт под этой jdk я буду использовать библиотеки из поставки, rt.jar там и прочее… Насколько я знаю, лицензированные под GPL продукты не позволяют их использовать даже как библиотеки (в отличие от L-GPL). Значит ли это, что и я буду обязан раскрывать исходники своего продукта, запуская его на openjdk?
                                    0
                                    Там есть Classpath exception, так что с этим всё в порядке.
                                +1
                                На линуксе я использую sdkman.io для установки джавы от разных вендоров. Очень удобно переключаться с oracle на openjdk и на zulu. И graal там есть.
                                  +8
                                  На странице загрузки JDK11 висит достаточно крупная и заметная плашка о том, что условия лицензионного соглашения изменились и было бы неплохо их внимательно прочитать, иначе ССЗБ.

                                  image
                                    +1
                                    Все же, как хорошо, что есть Хабр, на котором есть добрые люди, которые скажут что к чему, и куда теперь бежать :)
                                      –1
                                      дожили, java стала платной ТТ…
                                        0
                                        те кто здесь с умным видом чтото обсуждает похоже вообще не из мира людей, а из мира говноявы
                                        +1
                                        Это всё конечно прикольно и интересно. Однако подобные вещи всегда очень быстро вскрываются. И вот теперь вопрос: как они собираются получать с этого деньги если есть openJDK который судя по недолгому гуглению в общем-то ничем не отличается от 11 версии oracle JDK кроме, естественно лицензии. Разве что залицензируют по самые помидоры какие-то части и будет полный oracle JDK и неполный openJDK. Как пример community и pro версия idea. Но это ведь не среда разработки, это язык. Подавляющие большинство сидят на версиях <9 и ещё очень-очень долго не будут понимать зачем им куда-то на что-то переходить. В enterprise приложениях есть немало примеров когда проекты сидят на 1.6 и плевать хотели что он устарел.
                                          +1
                                          во времена 7,8 не все проекты с Сан/Оракл Явы запускались на ОпенЖДК.
                                          1.6 это не версия Явы, а версия запускалки.
                                            –3

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

                                              +3

                                              Вынуждает открыть исходники виртуальной машины (если вы ее модифицировали), а не вашего приложения. И только в том случае, если вы собрались виртуальную машину эту распространять (например поставлять с приложением). Если она у вас где-то на бэкенде крутится, то никто никому ничего не должен.

                                                0

                                                Вы путаете JDK с JRE. JDK это не только машина, но и куча стандартнных библиотек. Линковка с ними вынудит отдать свой код под GPL. Даже если речь о бекенде, код которого под GPL, то в принципе любой ваш обиженный сотрудник может выложить исходники в паблик на легитимных основаниях. Деплой в облака при определенных условиях так же может трактоваться как распространение. И тут вопрос для бизнеса, что дешевле: отрабатывать юридические риски или купить. Орал все четко сделал.

                                                  +2

                                                  Прочитайте Classpath Exception.

                                                –2
                                                получается с java 11 — либо ты платишь килобаксы, либо опенсорсишь.
                                                ну или как-то скрываешь платформу.

                                                как-то не до конца понятна ситуация с jvm 8, т.е. в принципе можно остаться на jvm 8, использовать jdk 8 + kotlin/scala, таким образом скрывая исходники, но не нарушая лицензии, правильно ли я понимаю «архивные» java?
                                                  0
                                                  да, натупил жестко про лицензии :)
                                              +1
                                              А на какой версии OpenJDK, в нынешней ситуации, правильно начинать новый java-проект?
                                                +2

                                                Слава Богу, что к моменту лишения разума Оракла, Мелкомягкие исправились и теперь вместо Java 11 с Spring, есть C# 7 с .Net core.

                                                  +3

                                                  Вообще иронично, что джава много где (от андроидов до блюреев) выбиралась по принципу "ну открытое же", однако по факту Оракл регулярно нагибает с лицензиями и портит кровь разрабам, в том время как обитель зла в лице Мелкомягких ещё никого с дотнетом не нагнула, хотя изначально даже судьба Моно держалась на честном пионерском, и лишь относительно недавно они решили некоторые части дотнета и шарпа полноценно пооткрывать.


                                                  Интересно, почему так. Мелкомягким не настолько покласть на свою репутацию, как Ораклу?

                                                    +1
                                                    Sun и Oracle это разные компании. Sun никого вроде особо не нагибал, в то время Java и стала популярной. А сейчас на неё все подсели, вот и всё. Хотя существенных проблем с Java я на текущий момент не вижу, но общий облик Oracle меня бы отвратил от Java, если бы я начинал её изучать сейчас.
                                                      +1
                                                      С Java есть несколько проблем в дизайне языка. Он разрабатывался довольно давно и при этом всегда тянул обратную совместимость из за чего однажды принятые оптимальные тогда но не оптимальные сейчас решения нельзя изменить.
                                                      Зато c# иногда ломал совместимость зато сейчас приятнее в использовании.
                                                      +1

                                                      Developers же. Чем больше лояльных разработчиков, тем лучше Microsoft. Потому что создаётся больше программных решений, которые работают на их ОС. А кто-то из разработчиков её и Visual Studio купит, так что плюсы со всех сторон.
                                                      Ну а Oracle что? Их основной бизнес — СУБД, так что с Java они могут экспериментировать как угодно.

                                                    –9
                                                    Интересно если скачать это дер***** с открытого вифи какой нить кафешки, или из под ната, то кто будет платить за него, кому придет счет
                                                      0
                                                      Не понял про classpath. Поясните пожалуйста, что это за исключение?
                                                        0

                                                        Позволяет линковать Java код с JDK/JRE не накладывая вирусное условие GPL

                                                          0
                                                          можно пример? а то пока непонятно
                                                            +2

                                                            Ваша программа слинкованная с JDK не становится GPL программой. Ровно до тех пор, пока вы не линкуетесь с нативным кодом JDK и пока используете публичные механизмы Java. Конечно же, вам разрешено наследовать классы JDK, тут ограничений нет.

                                                              0
                                                              что такое линковка с JDK?
                                                              программа должна быть написана на с++ и скомпилирована вместе с jdk?
                                                                +1

                                                                Грубо говоря при наследовании от Object (или любого другого класса, но от Object вы наследуйтесь всегда), GPL вас вынудила бы открыть свой код.

                                                      +1

                                                      Друзья, читайте лицензии, а лучше имейте специалиста по лицензированию в штате или на аутсорсе. Специалисты вендоров и дистрибьюторов хуже вас разбираются в вопросах лицензирования, там главное — продать.
                                                      Через 3-5 лет к вам приходит вендор с аудитом, вы как добропорядочная компания запускаете скрипты (предварительно проверив их на закладки) аудита и отправляете вендору. Спустя пару недель к вам с настойчивостью коллектора, начинают стучаться дятлы с требованием заплатить $100к-$700к, хотя изначально спецификация одобрялась вендором же
                                                      Вы должны будете оплатить за поддержку софта (если не платили) за все годы использования, штраф и разницу в лицензиях.
                                                      Еще одна засада: при установке софта ставьте только то, за что заплатили (например, партициониорование Oracle входит в стандартный дистрибутив, но помните, это платная фича и ее нужно покупать).

                                                        0
                                                        Кстати на продакшене JDK вовсе не нужен. Нужен JRE. А это вероятно другая лицензия.

                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                        Самое читаемое