В этом месяце (пост от 28 июля — прим. пер.), компания Oracle выпустила новую версия Java, 1.6.0_21 (она же 6u21). К сожалению, пользователями Eclipse было быстро обнаружено, что это версия несовместима с Eclipse и программами Eclipse Rich Client Platform (RCP).
Бага 319514 из эклипсовосой багтрекинг системы cодержала описание этой проблемы с принтскрином шелла, в котором было видно, что Oracle изменили имя компании в параметрах файла java.exe с “Sun Microsystems, Inc” на “Oracle”. Это изменение не вошло в официальный release notes. По иронии судьбы, Eclipse с 2007 был завязан на данный параметр, для решения другой проблемы, связанной с малым значением параметра “MaxPermSize”, устанавливаемого Sun, из-за чего эклипс просто не запускался. А вот когда окружение изменилось, то и этот фикс так же перестал работать, и многие получили проблемы с “PermGen”.
На это Oracle в понедельник ответил обновлением версии 6u21, в которой вернули прежнее значение. Кроме того, было ясно сказано, что в JDK 7 в поле компании будет опять указано “Oracle”. Вот что пишет один из разработчиков:
Этим утром, я убедился, что на официальной странице загрузки выложена версия, работающая с Eclipse. Вот что будет выдано на экран в командной строке при вызове java -version:
Если вы скачали Java под 32-х или 64-х версию Windows, убедитесь, что эта версия называется 1.6.0_21-b07, а не b06.
Бага 319514 из эклипсовосой багтрекинг системы cодержала описание этой проблемы с принтскрином шелла, в котором было видно, что Oracle изменили имя компании в параметрах файла java.exe с “Sun Microsystems, Inc” на “Oracle”. Это изменение не вошло в официальный release notes. По иронии судьбы, Eclipse с 2007 был завязан на данный параметр, для решения другой проблемы, связанной с малым значением параметра “MaxPermSize”, устанавливаемого Sun, из-за чего эклипс просто не запускался. А вот когда окружение изменилось, то и этот фикс так же перестал работать, и многие получили проблемы с “PermGen”.
На это Oracle в понедельник ответил обновлением версии 6u21, в которой вернули прежнее значение. Кроме того, было ясно сказано, что в JDK 7 в поле компании будет опять указано “Oracle”. Вот что пишет один из разработчиков:
Одним из этапов ребрендинга всех продуктов Sun’а в продукты Oracle’а, состоял в том что надо было изменить значение параметра Company Name для файла java.exe, что и было сделано в Java SE 6u21.
После того, как новая версия была выложена на сайтеjava.sun.com, мы получили много заявлений о том, что новые изменения повлияли на работу пользователей Eclipse под Windows. Все данные и workaround проблемы были тут же отмечены на сайте Eclipse, но лавинообразное распространение новой версии затрагивало все новых и новых пользователей. Понимая это, а так же учитывая пожелания Eclipse и многих тысяч пользователей Oracle восстановил значения параметра Company Name на “Sun Microsystems”.
Изменения затронули только версия для Windows, в то время как версии для Solaris и Linux работали исправно. Ради того, чтобы этот все заработало и в Windows, был выпущен новый билд, в котором версия была изменена с 6u21-b06 на 6u21-b07. Под Solaris and Linux по-прежнему поставлялся билд 6u21-b06.
Отдел инжиниринга при этом отмечает, что: в Java значения параметром java.vendor и java.vm.vendor не изменятся ни в одном из релизов jdk6 и будут по-прежнему иметь вид “Sun Microsystems, Inc.”. Было выяснено, что имя поставщика критически влияет на работоспособность целого ряда программ. А в Windows проблемой явилось явно указываемое для exe/dll поле “COMPANY”, которое и явилось источником проблемы. Вообще, для нас это стало большим сюрпризом, что кто-то вообще завязывается на подобные параметры. Учитывая это, для релизов jdk6 поле COMPANY было восстановлено. Но в релизах jdk7 произойдет окончательное изменение всех параметров, указывающих на имя компании, в том числе java.vendor и java.vm.vendor.
Этим утром, я убедился, что на официальной странице загрузки выложена версия, работающая с Eclipse. Вот что будет выдано на экран в командной строке при вызове java -version:
C:\> java -version
java version “1.6.0_21″
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b17, mixed mode)
Если вы скачали Java под 32-х или 64-х версию Windows, убедитесь, что эта версия называется 1.6.0_21-b07, а не b06.