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	4788SunJDK
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
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.