OpenJDK: что за зверь?
В связи с усиливающимся шевелением вокруг свободной реализации JDK — OpenJDK — решил я попробовать эту оснастку в деле. По отношению к этому продукту принято высказываться крайне негативно, презрительно и даже матерно. Но если судить непредвзято, то в OpenJDK тормозят и работают глючно в основном компоненты, связанные с GUI. А вообще-то этот продукт по большей части состоит из того же кода, что и «родной» JDK от Sun/Oracle (далее SunJDK). Так что если я, например, в основном работаю с консольными приложениями, то какая разница? Тем более, что к продуктам с открытым исходным кодом я уже привык. Как ни парадоксально, JDK как раз и оставался в подборке софта, которым я пользуюсь, чуть ли не единственным компонентом с несвободной лицензией.
Процедура установки такая. Нужно скачать 80-мегабайтный дистрибутив исходников. При этом «обычный» JDK должен уже присутствовать в системе, чтобы было чем компилировать Java-классы. Кроме того, нужно установить OpenJDK-версию Java-плагина для браузера.
Собирать можно как от имени корневого пользователя, так и от обычного. Перед сборкой нужно установить некоторые переменные среды:
Еще одна переменная, которую нужно установить, но о которой не сказано в README —
Это чтобы по ходу дела подзагружались необходимые библиотеки из сети. Для этого нужно, ессно, подключение к Интернету.
Для проверки того, что все условия перед установкой соблюдены, нужно выполнить
Если команда отработала успешно — вводим
и… ждем 3 часа, или около того в зависимости от мощности компьютера.
Установив OpenJDK, запустил для пробы пару консольных программок. Вроде разницы не видно, работает как обычная Java. Скомпилировал также простой тест с сайта Sun и запустил сначала под OpenJDK, затем под «родным». Вот результаты (числа — время, затраченное на выполнение неких алгоритмов):
OpenJDK
SunJDK
Как ни парадоксально, в OpenJDK данный тест выполняется в среднем на 50% быстрее, чем в «родном». Ничего в связи с этим не хочу утверждать. Тест первый попавшийся и очень примитивный. Плюс OpenJDK собрана из исходников именно под мою машину, а SunJDK разархивирована из бинарников (тоже фактор!). И все-таки, это аргумент для того, чтобы перестать воротить нос от OpenJDK и посмотреть на этот продукт повнимательнее.
Ну и последний аргумент. OpenJDK — это уже Java7, в которой концептуально предусмотрены революционные вещи, в частности, модульная система, позволяющая избавиться от такого недостатка прежних версий, как огромное пространство, занимаемое на диске. А вот коммерческая версия Java7 появится только следующим летом (хотя обещали этой осенью). Так что OpenJDK — это еще и возможность заглянуть в будущее.
Процедура установки такая. Нужно скачать 80-мегабайтный дистрибутив исходников. При этом «обычный» JDK должен уже присутствовать в системе, чтобы было чем компилировать Java-классы. Кроме того, нужно установить OpenJDK-версию Java-плагина для браузера.
Собирать можно как от имени корневого пользователя, так и от обычного. Перед сборкой нужно установить некоторые переменные среды:
export ALT_BOOTDIR=<путь, где находится работающий JDK>
export ALT_BINARY_PLUGS_PATH=<путь, где находится open Java-плагин (см. выше)>
export ALT_OUTPUTDIR=<путь, где окажется скомпилированный OpenJDK>
Еще одна переменная, которую нужно установить, но о которой не сказано в README —
export ALLOW_DOWNLOADS=true
Это чтобы по ходу дела подзагружались необходимые библиотеки из сети. Для этого нужно, ессно, подключение к Интернету.
Для проверки того, что все условия перед установкой соблюдены, нужно выполнить
make sanity
Если команда отработала успешно — вводим
make
и… ждем 3 часа, или около того в зависимости от мощности компьютера.
Установив OpenJDK, запустил для пробы пару консольных программок. Вроде разницы не видно, работает как обычная Java. Скомпилировал также простой тест с сайта Sun и запустил сначала под OpenJDK, затем под «родным». Вот результаты (числа — время, затраченное на выполнение неких алгоритмов):
OpenJDK
1 1142 1608 2277 2568 3053 4047
2 1974 2597 2889 3066 3931 3864
3 2501 2696 3189 3496 3847 3817
4 2759 3300 3795 3453 4528 4492
5 3238 3254 4264 3913 4190 4413
6 3883 3667 4633 4096 4564 4532
7 4472 3976 6084 4290 4589 4788
SunJDK
1 1714 2545 2965 3533 4387 7450
2 4308 4367 5723 6828 6784 6999
3 6096 5859 6274 6100 7254 8027
4 4995 4961 5974 4915 6061 5888
5 5484 5425 6187 5546 6124 6227
6 7084 5591 6545 5484 6646 5861
7 8545 5903 7494 5648 6956 6102
Как ни парадоксально, в OpenJDK данный тест выполняется в среднем на 50% быстрее, чем в «родном». Ничего в связи с этим не хочу утверждать. Тест первый попавшийся и очень примитивный. Плюс OpenJDK собрана из исходников именно под мою машину, а SunJDK разархивирована из бинарников (тоже фактор!). И все-таки, это аргумент для того, чтобы перестать воротить нос от OpenJDK и посмотреть на этот продукт повнимательнее.
Ну и последний аргумент. OpenJDK — это уже Java7, в которой концептуально предусмотрены революционные вещи, в частности, модульная система, позволяющая избавиться от такого недостатка прежних версий, как огромное пространство, занимаемое на диске. А вот коммерческая версия Java7 появится только следующим летом (хотя обещали этой осенью). Так что OpenJDK — это еще и возможность заглянуть в будущее.
Комментарии (3)
RSS свернуть / развернутьСам пока-что имел только негативный опыт работы с ним. Но попробую еще раз. А из-за предвзятого отношения или идя на поводу у большинства можно прозевать действительно стоящие вещи.
Sergei_T
Mihael
Markony
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.