Изменения в Java 1.6.0 update 21 привели к нарушению совместимости с Eclipse

В Java SE 6 Update 21 среди прочих исправлений была внесена незначительная на первый взгляд модификация: в поле "компания-производитель" строка 'Sun Microsystems, Inc' была заменена на 'Oracle. Данная правка привела к регрессивным изменениям, которые привели к нарушению совместимости со многими Java-программами, включая платформу Eclipse. Как оказалось многие программы используют данное поле для определения типа виртуальной машины Java. Если в поле указано Sun Microsystems, программы считают, что программа запущена в оригинальном Java-окружении и применяют некоторые, учитывающие особенности данного окружения, шаги.

При использовании Java 1.6.0 update 21 во всех версиях Eclipse, начиная с 3.3 и заканчивая недавно выпущенным релизом 3.6 Helios, пользователи отмечают крах приложения из-за исчерпания доступной памяти (OutOfMemoryError). В качестве временного решения разработчики рекомендуют откатиться на прошлую версию Java 1.6.0 update 20 (в 21 обновлении не было исправлений безопасности) или указать в файле eclipse.ini после строки "-vmargs" опцию "-XX:MaxPermSize=256m". Сообщается, что по умолчанию проблема проявляется только в Windows-сборке Eclipse, версии для Solaris и Linux работают корректно (популярные Linux-дистрибутивы пока не перешли на обновление Java 1.6.0 update 21, поэтому возможно для данной платформы проявление проблем в будущем).

Проблема усугубляется еще и тем, что 21 обновление Java распространяется для пользователей Windows через службу автоматической установки обновлений, не требующей подтверждения от пользователя - некоторые Java-приложения просто перестают работать в один прекрасный момент.

©  OpenNet