OpenJDK: что за зверь?

В связи с усиливающимся шевелением вокруг свободной реализации JDK — OpenJDK — решил я попробовать эту оснастку в деле. По отношению к этому продукту принято высказываться крайне негативно, презрительно и даже матерно. Но если судить непредвзято, то в OpenJDK тормозят и работают глючно в основном компоненты, связанные с GUI. А вообще-то этот продукт по большей части состоит из того же кода, что и «родной» JDK от Sun/Oracle (далее SunJDK). Так что если я, например, в основном работаю с консольными приложениями, то какая разница? Тем более, что к продуктам с открытым исходным кодом я уже привык. Как ни парадоксально, JDK как раз и оставался в подборке софта, которым я пользуюсь, чуть ли не единственным компонентом с несвободной лицензией.

Процедура установки такая. Нужно скачать 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 — это еще и возможность заглянуть в будущее.
  • +4
  • 13 декабря 2010, 19:43
  • yababay

Комментарии (3)

RSS свернуть / развернуть
+
0
Думаю что OpenJDK будет развиваться активнее в связи с недавними событиями.
Сам пока-что имел только негативный опыт работы с ним. Но попробую еще раз. А из-за предвзятого отношения или идя на поводу у большинства можно прозевать действительно стоящие вещи.
avatar

Sergei_T

  • 13 декабря 2010, 23:28
+
0
GUI у него косячит сильно
avatar

Mihael

  • 14 декабря 2010, 10:06
+
0
Чайниками принято к сведению...
avatar

Markony

  • 14 декабря 2010, 14:52

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