16.07.2007

Разные VM для Eclipse

После продолжительных поисков IDE своей мечты, похоже я окончательно остановился на Eclipse. Не последним аргументом в его пользу была открытость. Но тут как и с любым open source решением есть ряд подводных камней, одним из которых является банально проблема запуска.

Если просто в лоб установить Eclipse из репозитариев Ubuntu и запустить его из меню, то для запуска будет использована виртуальная машина GCJ. Я плохо разбираюсь в особенностях Java, и не знаю имеет ли эта машина какие-либо преимущества перед другими кроме открытости, но Eclipse под этой VM работает из рук вон медленно и нестабильно. У меня сложилось впечатление, что этот GCJ вообще немного для других вещей предназначен. К щастью это не единственная виртуальная машина в мире.

Для того, чтобы определить VM с помощью которого будет запускаться Eclipse есть 2 пути.

Systemwide (т.е. настройки всей системы в целом)

В файле /etc/eclipse/java_home есть список к путей к разным VM. Eclipse воспользуется первой машиной, которую найдёт из этого списка. Значит можно либо отредактировать это список, либо деинсталлировать нежелательную VM (последнее не пробовал и не советую).

Для пользователя

В каталоге ~/.eclipse нужно создать файл eclipserc и в нём определить переменную JAVA_HOME:

JAVA_HOME=/path/to/jvm

Выбор VM

В репозитариях убунту, кроме GCJ есть ещё три виртуальные машины. Две от Sun и Blackdown:

  • Sun Java(TM) Runtime Environment (JRE) 5.0 (sun-java5-jre)
  • Sun Java(TM) Runtime Environment (JRE) 6 (sun-java6-jre)
  • Blackdown Java(TM) 2 Runtime Environment, Standard Edition (j2re1.4)

В документации по Eclipse упоминаются только машины J9 и IBM Developer Kit, Java(TM) Technology Edition VM, а устанавливать софт не из репозитариев я очень не люблю и делаю только в крайнем случае. Поэтому решил сравнить работу под каждой из VM сам. Собственно сравнение по двум параметрам. Объективному (количество потребляемой памяти) и субъективному (скорость). Вот результаты по потреблению памяти:

The GNU compiler for Java(TM) 131Mb
Sun Java(TM) Runtime Environment (JRE) 5.0 69Mb
Sun Java(TM) Runtime Environment (JRE) 6 71Mb
Blackdown Java(TM) 2 Runtime Environment, Standard Edition 66Mb

Замер производился после запуска, открытия двух проектов PyDev и сканирования PYTHON_PATH. Никаких дополнительных оптимизаций типа подстройки heap не делалось.

GNU Compiller оставлю без комментариев, поскольку говорил о нём раньше. Остальные машины работают примерно одинаково, разница размеров потребляемой памяти в пределах погрешности. Скорость сканирования PYTHON_PATH одинаковая плюс-минус пара секунд.

Комментарии

22.08.07 19:23 n0d комментирует:

Хм. полезно. не знал про производительность.
я кстати еще с такой проблемой столкнулся.. установил еклипс из репозитория. и при запуске получаю ошибку - An error has occurred. See the log file
~/.eclipse/org.eclipse.platform_3.2.0/configuration/1187810541277.log.
и не запускается воовсе. не встречал?

23.08.07 08:33 uptimebox комментирует:

А что написано в том логе, на который оно ссылается?

05.05.08 06:45 devel0per комментирует:

Попробуй запустить через:

eclipse -vm `java-config –java`

25.05.08 12:53 Anonymous комментирует:

На habrahabr.ru еще упоминалось:

«sudo update-alternatives –config java

и в появившемся меню выбрать
/usr/lib/jvm/java-6-sun/jre/bin/java»
(Ubuntu+Aptana=…)

25.05.08 16:12 Anonymous комментирует:

Анонимный, 25.05.2008 16:53:00 меня опередил. С помощью update-alternatives можно определить Sun’овскую Java для всех явовых приложений. Ещё кстати: после установки sun-java6-jre можно сносить gcj и всё с ним связанное, OpenOffice на зависимотсти ругаться не будет. Ну то есть открытость это конечно хорошо, но по моим ощущуниям проще дождаться когда Sun свою Java откроет чем когда gcj допилят

З. Ы. update-alternatives вообще очень полезная вещь - например выбрать что использовать по умолчанию из php5 и php4 , gcc разных версий и т. д. Ну и True Debian Way :)