К каким неожиданностям мне следует подготовиться, если я перейду с Sun JDK на OpenJDK?

Если бы я перешел с Sun JDK на OpenJDK, к каким сюрпризам я должен был бы подготовиться?

Что часто идет не так и насколько это может быть сложно?

Конечно, у каждого приложения могут быть свои индивидуальные проблемы, но я ищу классы проблем, с которыми уже столкнулись многие люди при переходе на JDK.


person Daniel Rikowski    schedule 10.02.2010    source источник
comment
Если вы можете подготовиться к ним, то это не сюрприз ;-)   -  person Joachim Sauer    schedule 10.02.2010
comment
А если серьезно: если вы расскажете нам, что делает ваше приложение, вы, вероятно, получите более конкретные ответы.   -  person Joachim Sauer    schedule 10.02.2010
comment
Вы сможете изменить код JVM, если он работает плохо. Разве это не удивительно?   -  person P Shved    schedule 10.02.2010
comment
Солнце приобретено оракулом. Так что будущее OpenJDK мне не кажется радужным. Любые комментарии.   -  person anil    schedule 10.02.2010
comment
В настоящее время я использую OpenJDK без каких-либо проблем. Проблема со шрифтами не так уж и плоха в новых версиях OpenJDK. Он полностью пригоден для использования. Что касается будущего, это GPL, поэтому я сомневаюсь, что он просто умрет.   -  person gpampara    schedule 10.02.2010
comment
@gpampara: я ожидаю, что кто-нибудь поднимет его, если Oracle его бросит. Достаточно людей хотят, чтобы JDK с бесплатным/открытым исходным кодом продолжал работать.   -  person David Thornley    schedule 10.02.2010


Ответы (7)


Маловероятно, что с OpenJDK что-то пойдет не так. На данный момент он считается совместимым на 100%. Но я думаю, что хорошо знать, какие части пришлось переписать и, следовательно, не использовать тот же код, что и SunJDK.

В Википедии есть хороший обзор этого:

По состоянию на май 2008 г. единственная часть библиотеки Class, которая остается частной и закрытой (4% на май 2007 г. для OpenJDK 7 и менее 1% на май 2008 г. и OpenJDK 6), — это реализация SNMP.

С момента первого выпуска в мае 2007 года Sun Microsystems с помощью сообщества выпустила бесплатное программное обеспечение с открытым исходным кодом или заменила бесплатными альтернативами с открытым исходным кодом почти весь обремененный код:

  • Весь код звукового движка, включая программный синтезатор, был выпущен с открытым исходным кодом. Программный синтезатор с закрытым исходным кодом был заменен новым синтезатором, разработанным специально для OpenJDK, под названием Gervill.

  • Все классы криптографии, используемые в библиотеке классов, выпущены с открытым исходным кодом.

  • Код, который масштабирует и растрирует шрифты, заменен на FreeType.

  • Родная система управления цветом заменена на LittleCMS. В JDK есть подключаемый слой, так что коммерческая версия может использовать старую систему управления цветом, а OpenJDK может использовать LittleCMS.

  • Код растеризатора графики со сглаживанием был заменен средством визуализации Pisces с открытым исходным кодом, используемым в проекте phoneME. Этот код полностью функционален, но все еще нуждается в некоторых улучшениях производительности.

  • Плагин JavaScript имеет открытый исходный код (сам движок Rhino JavaScript с самого начала был открытым).

person Bani    schedule 10.02.2010
comment
OpenJDK, включенный в большинство дистрибутивов Linux, не совместим на 100%. Реализация Java Sound исходит от IcedTea и ведет себя иначе, чем Sun. Например, он генерирует исключение, если вы пытаетесь записать в закрытую строку, как работает почти весь существующий код Java Sound (например, JavaZOOM, jsresources.org). Что касается трудностей с рендерингом шрифтов, я бы назвал его совместимым только на 98%. - person Yuvi Masory; 05.05.2010

Поскольку я знаю, что шрифты будут выглядеть искаженными, Sun пришлось удалить оригинальные шрифты из OpenJDK, поскольку они не являются «открытым исходным кодом», а JVM будет использовать некоторые значения по умолчанию, которые не так хороши...

person ante.sabo    schedule 10.02.2010
comment
Да, это была наша самая большая проблема, когда мы мигрировали. - person Kevin Bourrillion; 11.02.2010
comment
После некоторого тестирования это была единственная проблема, с которой я столкнулся в OpenJDK. JasperReports был почти непригоден для использования. - person Daniel Rikowski; 04.01.2012

Поскольку OpenJDK — это проект Sun, основанный на оригинальном исходном коде Java, я не ожидаю многих проблем. Единственная область, где что-то может сломаться, — это код, который пришлось заменить (поскольку его нельзя было выпустить под GPL) или изменить из-за новых функций (но они должны быть почти такими же, как в официальном JDK).

person Aaron Digulla    schedule 10.02.2010
comment
Единственная область, где что-то может сломаться, — это код, который пришлось заменить — вы случайно не знаете, что это были за области? - person Paolo; 10.02.2010

Используйте сборку OpenJDK, о которой известно, что она передает TCK, чтобы свести к минимуму неожиданности.

person Thorbjørn Ravn Andersen    schedule 10.02.2010

Некоторые пользовательские интерфейсы качелей не полностью совпадали (у металла были отступы, которых было достаточно, чтобы заметить). Обратите внимание, что это было 8 месяцев назад.

person KitsuneYMG    schedule 10.02.2010

Апплеты OpenJDK (IcedTea) под Linux — это БОЛЬШАЯ БОЛЬ. Уже пару часов бьюсь над удаленной отладкой довольно ржавого кода. Официальная документация о том, как подключиться к аплету в браузере, просто не работает для мне. Кстати, Java-консоли по умолчанию нет. Я серьезно рассматриваю возможность репликации конфигурации апплета и использования встроенного средства просмотра апплетов JDK вместо того, чтобы пытаться отлаживать JVM, размещенную в браузере.

UPD: я не совсем уверен, что у OpenJDK нет самого плагина для браузера. Может быть, это изменилось в последнее время.

person Anton Kraievyi    schedule 17.11.2011
comment
В 2009 году Джозеф Дарси написал в блоге, что плагин для браузера станет открытым (blogs.oracle.com/darcy /entry/openjdk_and_the_new_plugin), но этого никогда не было, а в июле 2010 года он сказал мне, что не существует дорожной карты, когда это будет. - person damjan; 11.03.2013

OpenJDK более безопасен, чем бинарные файлы Oracle, благодаря IcedTea.

person Andreas Kuckartz    schedule 13.01.2013