Реализации JVM могут различаться в том, как они реализуют компиляцию JIT, оптимизацию, сборку мусора, поддерживаемые платформы, версию поддерживаемой Java и т. Д. Все они должны соответствовать набору функций и поведения, чтобы они правильно выполняли ваши байт-коды Java.
Как вы указали, основное различие, как правило, заключается в лицензировании. Другие нетехнические различия, как правило, находятся в вариантах бесплатной/платной поддержки, интеграции с другими технологиями (обычно это серверы J2EE) и доступа к исходному коду.
Примечание. Хотя на JVM-сервере работает J2EE-сервер, некоторые серверы имеют встроенные средства для мониторинга, анализа и настройки производительности JVM.
Что касается технических отличий, то за эти годы они стали менее значительными. Когда-то IBM и JRockit JVM имели более высокую производительность для эталонной реализации Sun. Это было связано с существенными различиями в типах оптимизации времени выполнения, различиях в сборе мусора и различиях в собственном коде (и в том, как использует собственный класс для разных классов). Эти различия в производительности не так важны.
Некоторые JVM также включают или интегрируют средства диагностики и мониторинга. JRockit включает в себя набор инструментов для мониторинга производительности JVM. Sun предоставляет различные инструменты на основе JMX с перекрывающимися функциями, чтобы сделать то же самое. IBM Websphere когда-то включала в себя аналогичный набор инструментов для всего своего сервера приложений J2EE (не уверен, что они все еще делают, но я бы предположил, что это все еще правда) ...
Некоторые из JVM с открытым исходным кодом имеют тенденцию к снижению производительности, поскольку они были переработаны с нуля. Таким образом, у них есть немного больше возможностей догнать. Последнее, что я проверил около 2 лет назад, Blackdown был значительно медленнее (1.5x-2x?), Чем Sun JVM. Это также немного отставало от поддерживаемых версий Java.
Поскольку кто-то вынужден использовать JRockit уже более 5 лет, я бы сказал, что в целом это не быстрее, чем Hotspot, но это определенно не так сильно. Они жертвуют надежностью для скорости, и в итоге ничего не получают. – erickson
@erickson, Как человек, который добровольно использовал JRockit уже более 5 лет, могу сказать, что ваш опыт не универсален. JRockit сохранил хотя бы один раз с помощью средства обнаружения утечки памяти. :) У меня больше не было сбоев, чем с виртуальными машинами Sun (хотя их было 1 или 2). – jsight