Став хозяином Java, Oracle невольно сломал Eclipse

http://www.zdnet.com/blog/burnette/oracle-rebrands-java-breaks-eclipse/2012
  • Перевод
В этом месяце (пост от 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”. Вот что пишет один из разработчиков:
Одним из этапов ребрендинга всех продуктов 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.
Метки:
Поделиться публикацией
Похожие публикации
Комментарии 70
  • НЛО прилетело и опубликовало эту надпись здесь
    • +32
      Комент туповат.
      • НЛО прилетело и опубликовало эту надпись здесь
      • +16
        Это не самый большой недостаток для новости, которую уже месяц назад успели обсудить :)
      • НЛО прилетело и опубликовало эту надпись здесь
        • +5
          Как выяснилось не только эклипс. На месте Оракла, я бы ничего не стал менять. Всё равно никто не денется с подводной лодки.

          Правильное решение: выпустить патч, который ставит оптимальное значение `MaxPermSize`. Плюс добавить ключик -defaultParams, который бы возвращал полезную инфу о параметрах, необходимую для запуска
          • +12
            Как выяснилось не только эклипс

            Это никак не оправдывает Eclipse. К Oracle странно иметь претензии, ребрендинг вполне логичен.
            • +3
              Я не оправдываю Эклипс — у него очень много кривых моментов.

              Странно, что Oracle откатил изменения. Я считаю, кривость кода, дошедшую до такой степени, нужно выбивать насильно. Иначе году в 2020 мы получим платформу полную костылей из-за тех, кто эти костыли не хочет чинить у себя.

              • +2
                Так как бы уже. В java охрененная обратная совместимость — со всеми костылями прошлых версий :)
            • –3
              угу, купить Sun за много много зелёных бумажек и не надеть на себя корону? ну ну ))
            • +2
              На какую только хрень не приходится завязываться in the wild :)

              У меня были ситуации, когда для получения какой-нибудь информации приходилось как раз парсить вот такие текстовые описательные поля, как бы глупо это не выглядело — просто иногда нет ничего более доступного.
            • +5
              Мда, каких только костылей не бывает :)
              • НЛО прилетело и опубликовало эту надпись здесь
                • +4
                  Завязать код на строку копирайта — это жесть…
                  • +24
                    Ага, и коммент ещё рядом:
                    //not really hardcode, as this will never change!
                    • –4
                      где это?
                      • +1
                        Не обращайте внимания, это был юмор, просто читайте дальше
                    • 0
                      Ага, и коммент ещё рядом:
                      // No hardcode in fact, as this will never, ever change!
                  • –13
                    Это как яркий пример качество кода производимого индусами.
                    • –7
                      Оракл! Эклипипс мне запили! Быстра блять!
                      • 0
                        Я думаю, что разработчики, а также многие менеджеры не раз сталкивались с похожими проблемами при ребрендинге компании и, соответственно, кода.
                        То в ресурсах такое творится, что потом выкопаться нельзя, то в использовании различного рода сторонних библиотек.
                        Думаю, достаточно показательный пример того факта, что при разработке многие думают о масштабировании системы, а достаточно простые вещи упускаются из вида например такое как смена имени, логотипа и других атрибутов.
                        • –20
                          Оракал это же вроде пленка самоклеющаяся? :)
                          • –10
                            1. Завязать работоспособность эклипса на имени вендора — это круто и хороший юмор от Sun!
                            2. Обращаем внимание, что данная проблема актуальна только под виндой, так что писать метаданные в экзешник — это неверно в плане архитектуры, имхо.
                            • +4
                              Винда виновата?
                              • –12
                                Я не против винды, просто приятно смотреть, что бага не затрагивает Unix-подобные системы.
                                • +8
                                  Логика на уровне первого класа: Двери — это зло, ведь ними можно пальцы себе защемить. Вот будет у меня дом — не будет в нем дверей, чтоб никто себе пальцев не защемил.
                                  • +17


                                    Uploaded with ImageShack.us
                                    • –7
                                      Двери как раз есть. Я имел в виду, что мой Eclipse под линухом не задет заменой Sun на Oracle. Могу я хотя бы тут не восхищаться майкрософтом?
                                      • +6
                                        Sun JVM выделяет недостаточно памяти для Eclipse по умолчанию — и здесь майкрософт виноват?
                                        • 0
                                          а вы пользуетесь OpenJDK или Sun?
                                          • 0
                                            Майкрософт к этой проблеме аж ну никак не причастна, все претензии к разработчикам эклипса
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                    • +2
                                      Мораль — костыли должны быть костылями, а не постоянным решением. Не надо их оставлять в коде навечно. Рефакторинг — наше всё.
                                      • –6
                                        Мне становится страшновато… Oracle стал еще большим монстром, возможно даже более влиятельным чем Google. Теперь у Oracle в конкурентах по СУБД только PostgreSQL, и его могут купить тоже.
                                        • +3
                                          А как же MS SQL Server и IBM DB2? :)
                                          • –5
                                            Я же сказал именно про конкурентов, а не вообще про СУБД =))
                                            • +3
                                              Вот как раз MS SQL Server и IBM DB2 и являются конкурентами Oracle. В отличии от.
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                            • 0
                                              Не, не купят, ибо Linux не принадлежит какой-то одной компании.
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                          • –1
                                            Это печально…
                                            • –1
                                              Интел, кстати, развлекался в свое время подобными вещами: определенные компиляторы создавали код привязанный к имени процессора, который на процессорах Интела выполнялся быстрее чем на других.
                                              • +1
                                                Тут две большие разницы, как говорят в Одессе. Одно дело — Интел, умышленно изменяющая код компилятора, а другое дело — разработчики Eclipse, понадеявшиеся на авось.
                                                • +7
                                                  Как часто Sun продается Oracle?
                                                  • +1
                                                    Я понимаю, что первый порыв — защищать Eclipse до последнего :)
                                                    Но костыль есть костыль, писавший вышеупомянутый коммент знал об этом, но ничего для исправления костыля за 3 года(!) не сделал. Не сделал и узнав, что Sun таки продалась Oracle.
                                                    Обижаться тут не на что, и оправдываться не стоит. Просто, думаю, пример этот станет хрестоматийным примером о том, как можно облажаться даже в самом серьёзном продукте.
                                                    Качество Eclipse я ни в коей мере не подвергаю сомнению, иначе бы она не была любимым инструментом разработки для огромной армии Java-кодеров.
                                                    • +6
                                                      Я не считаю это костылем, просто другого способа отличить одну JVM от другой не было (а может быть и сейчас нет). Вина в данном случае скорее лежит на разработчиках SUN, не предусмотревших стандартного параметра для изменения размера MaxPermSize. Вероятность же того, что название JVM изменится была крайне невелика, однако иногда происходят и события с крайне малой вероятностью.
                                                      • 0
                                                        Да, простите, не прочитал. Ссылку ниже полностью. Видимо, действительно, вина лежит на разработчиках SUN. Плохо только, что за 3 года проблему так и не решили полноценно(если надо — с привлечением Sun), довольствуясь тем, что есть. Получается «Пока гром не грянет — мужик не перекрестится...».
                                                        • +4
                                                          В том то и дело, что три года проблемы не было, SUN не меняла название своей JVM. Уверен, что если бы Oracle предупредила об изменении метаданных заранее, Eclipse-коммиттеры нашли бы способ решить данную проблемы.

                                                          Я конечно понимаю, что в идеальном мире с бесконечным числом разработчиков нужно предусматривать заранее любой чих той или иной корпорации, однако число разработчиков Eclipse не бесконечно и скорее всего у них были более важные задачи.

                                                          З.Ы. «Проблема» решается на уровне файла конфигурации прописыванием одной строчки.
                                                          • 0
                                                            >Уверен, что если бы Oracle предупредила об изменении метаданных заранее, Eclipse-коммиттеры нашли бы способ решить данную проблемы.
                                                            Вот это и есть корень зла :) Хотя наверное правильнее считать, что произошло роковое стечение обстоятельств. К счастью, менее критичное, чем, например, в Чернобыле.
                                                            • +1
                                                              Мне вот интересно сколько пользователей Eclipse из-за данной ситуации откажутся от него в пользу другой IDE.
                                                              • 0
                                                                ерунда. я первым делом подумал на JRE, а не на среду разработки. сразу скачал свежий JRE и все стало нормально.
                                                                • 0
                                                                  у меня на 21. Несколько программ глючить начало. Я даже не думал, что в эклипсе и другом софте косяк, пока на javalobby не прочитал.
                                                                  • 0
                                                                    Я вообще пропустил это обновление. Отпуск ^_^
                                                            • 0
                                                              >Я не считаю это костылем, просто другого способа отличить одну JVM от другой не было (а может быть и сейчас нет).

                                                              А как насчет системных property, например, java.vendor? Не могу сказать, менялись ли они в упомянутом апдейте, но по-моему куда более правильно завязываться на стандартные свойства, чем на строку копирайта.
                                                              • 0
                                                                определять вендора надо на этапе работы нативного лаунчера (eclipse.exe в windows)
                                                                • 0
                                                                  Ну и дергали бы метод перед запуском. Не очень эффективно, но надежно. Впрочем, об этом всем написано в посте и баге.
                                                              • 0
                                                                По моему, параметр -XX:MaxPermSize=xxx Появился довольно давно, ну года три точно есть в HotSpot…
                                                                • 0
                                                                  В том то и дело, что параметры, начинающиеся на XX: — специфичны для SUN JVM. Соответственно, нужно как-то проверить, что у нас SUN JVM и мы имеем право подсунуть ей этот параметр.
                                                        • 0
                                                          может потому, что компиляторы интел лучше знаю как оптимизировать код под свои процессоры?
                                                      • +3
                                                        Всем хомякам, воющим про то, что Eclipse во всем виноват два вопроса:
                                                        1. Каким приложением уровня Eclipse можете похвастаться?
                                                        2. Читали ли вы вот это: njbartlett.name/2010/07/29/eclipse-java6u21-blame-game.html
                                                        • 0
                                                          Правильно, сначала добейся
                                                        • +4
                                                          партизаны Sun ликуют )
                                                          • –2
                                                            Ну как всегда, или хрен пополам или манда вдребезги
                                                            Простите, не выдержал(
                                                            • +1
                                                              Какой смысл писать об этой проблеме через несколько недель после того как она была исправлена? Еще и с таким желтым загловком не соответсвующем действительности.
                                                              • –4
                                                                Заголовок взят из оригинала, причем уже изменен, чтобы не искажать реальность.

                                                                Смысл писать о проблеме — у некоторых до сих пор что-то не работает.
                                                                • –1
                                                                  а вы на ник топикстартера посмотрите ;)

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