IBM J9
Вы можете прочитать или услышать о рекламной речи о J9:
IBM выпустила SDK для Java 6. Двоичные файлы продукта доступны для Linux на x86 и 64-битных AMD, а AIX для PPC для 32- и 64-битных. В дополнение к поддержке спецификации платформы Java SE 6 новый SDK также фокусируется на: обмен данными между виртуальными машинами Java, расширенная диагностическая информация, обратные трассировки стека операционной системы, обновленный инструмент jdmpview, стабильность платформы и производительность.
Кто-то скажет, что у IBM SDK есть некоторые преимущества, помимо скорости, что использование и расширение PermGenSpace намного лучше, чем в Sun SDK или GCJ (не большая проблема для клиентских приложений, но тяжелые серверы J2EE, особенно портальные сервера, действительно может вызвать изжогу Sun JDK). Но, согласно этой статье , сравнивающей Sun с IBM JVM GC, оказывается, что производительность памяти зависит в основном от приложения, а не от виртуальной машины.
Итак, хотя IBM JVM хорошо известна своими функциями устранения неполадок (более продвинутыми, чем JVM от Sun), меня не убеждают различия на уровне GC.
И JVM от Sun имеет большое преимущество перед IBM, по крайней мере, в Solaris: поставщики DTrace. На самом деле, я в основном работал с Weblogic на Solaris, поэтому JVM от Sun всегда был естественным выбором.
Oracle JRockit
Я провел несколько тестов BEA / Oracle JRockit несколько лет назад, и это действительно была быстрая виртуальная машина, и тогда она поддерживала большие кучи, чем виртуальная машина Sun в это время. Но у него есть некоторые проблемы со стабильностью, что не очень хорошо для производства. С тех пор все могло измениться.
Apache Harmony
Я могу ошибаться, но для меня Harmony состоит из пожертвований кода от IBM (преимущества: сообщество занимается обслуживанием), и я не совсем понимаю, почему я должен рассматривать Harmony, а не IBM J9.
Apple's JDK
Мне никогда не приходилось использовать Mac для производства, поэтому я не могу ответить. Я просто помню, что Apple понадобилось некоторое время для сборки Java 6, и я не знаю почему. Возможно, это не рационально, но это вызывает у меня подозрение.
OpenJDK
Я знаю, что некоторые поставщики предлагают производственную поддержку (например, RedHat с RHEL 5.3+, см. Эту запись в блоге ) для OpenJDK, так что это может быть вариантом для платформ, не поддерживаемых Sun. Однако, если кто-то не скажет мне, что делает OpenJDK лучше, чем у Sun, я думаю, что я установлю Sun JVM на поддерживаемые платформы.
Так что для меня выбор на самом деле: JVM от Sun, если только я не буду запускать некоторые вещи Websphere, в этом случае я бы выбрал IBM J9. Но, честно говоря, я никогда не сталкивался с ситуацией, которую я не мог решить с помощью JVM от Sun, и которая могла бы оправдать (временный) переход на IBM, поэтому я не могу точно сказать, насколько хороши функции устранения неполадок. Но я признаю, что могу страдать от недостатка знаний о JVM от IBM.