Для каких сюрпризов мне нужно подготовиться, если я переключусь с Sun JDK на OpenJDK?
Если бы я переключился с Sun JDK на OpenJDK, с каким сюрпризом я должен подготовиться?
Что часто происходит неправильно и насколько это сложно?
Конечно, каждое приложение может иметь свои индивидуальные проблемы, но я ищу классы проблем, с которыми многие люди уже сталкивались при переключении JDK.
Ответы
Ответ 1
Маловероятно, что с OpenJDK что-то пойдет не так. К настоящему времени он считается 100% совместимым. Но я думаю, что хорошо знать, какие части пришлось переписать и поэтому не используют тот же код, что и SunJDK.
запись в Википедии имеет хороший обзор:
По состоянию на май 2008 года единственная часть библиотеки классов, которая остается частной и закрытой (4% по состоянию на май 2007 года для OpenJDK 7 и менее 1% по состоянию на май 2008 года и OpenJDK 6) - это реализация SNMP.
С момента выпуска в мае 2007 года Sun Microsystems, с помощью сообщества, выпустила как бесплатное программное обеспечение с открытым исходным кодом или заменила бесплатные альтернативы с открытым исходным кодом почти на весь обремененный код:
-
Все звуковые коды двигателя, включая программный синтезатор, были выпущены как Open-source. Синтезатор с закрытым исходным кодом был заменен новым синтезатором, разработанным специально для OpenJDK под названием Gervill,
-
Все классы криптографии, используемые в библиотеке Class, были выпущены как Open-source,
-
Код, который масштабирует и растеризует шрифты, был заменен на FreeType
-
Собственная система управления цветом была заменена на LittleCMS. В JDK есть подключаемый слой, так что коммерческая версия может использовать старую систему управления цветом, а OpenJDK может использовать LittleCMS.
-
Среда сглаживания графического растеризатора заменена визуализатором рендеринга с открытым исходным кодом, используемым в проекте phoneME. Этот код полностью функциональный, но все же нуждается в некоторых улучшениях производительности,
-
Плагин JavaScript был открыт (исходный JavaScript-движок Rhino был открыт с самого начала).
Ответ 2
Как я знаю, шрифты будут выглядеть искаженными, Sun пришлось удалить оригинальные из OpenJDK, так как они не являются "открытым исходным кодом", а JVM будет использовать некоторые значения по умолчанию, которые не так хороши...
Ответ 3
Поскольку OpenJDK - это проект Sun, основанный на исходном источнике Java, я не ожидал бы многих проблем. Единственной областью, где все может сломаться, является код, который нужно заменить (потому что он не может быть выпущен под GPL) или изменения из-за новых функций (но они должны быть почти такими же, как в официальном JDK).
Ответ 4
Используйте сборку OpenJDK, известную для передачи TCK, чтобы свести к минимуму неожиданности.
Ответ 5
Некоторые из пользовательских интерфейсов swing не совпадали полностью (у металла были прокладки, которые были отключены, как можно заметить). Обратите внимание, что это было 8 месяцев назад.
Ответ 6
OpenJDK (IcedTea) апплеты под Linux - это ОСНОВНАЯ БОЯ. Я уже несколько часов борюсь с удаленной отладкой куска довольно ржавого кода. Официальная документация о том, как подключиться к апплету в браузере, просто не работает для меня. По умолчанию нет java-консоли, BTW. Я серьезно рассматриваю возможность тиражирования конфигурации апплета и использования JDK встроенного средства просмотра апплетов вместо того, чтобы пытаться отладить размещенную в браузере JVM.
UPD. Я не совсем уверен, что OpenJDK не имеет самого браузера. Возможно, это изменилось недавно.
Ответ 7
OpenJDK более безопасен, чем двоичные файлы Oracle из-за IcedTea.