Технически, в чем главное отличие Oracle JDK от OpenJDK?

Я использовал OpenJDK целую вечность, первоначально для небольших проектов, где у него нет проблем. Но так как я начал играть с ним для больших игрушек, я начал замечать случайные/неизвестные фатальные ошибки и сбои (с кодеками H.264 и т.д.), И до тех пор это был кошмар, чтобы испытать крах системы + фатальные ошибки вызвано OpenJDK.

После полного разочарования и усталости от OpenJDK я, наконец, решил переключиться на Oracle JDK 7. С тех пор мои фатальные ошибки/сбои исчезли. Я все еще делаю трассировку, чтобы увидеть, происходит ли это, но у меня еще не было таких сбоев системы.

Теперь мне интересно, если OpenJDK - только проблема с лицензией, почему стабильность с ним невозможна?

Почему OpenJDK поддерживает ошибки в своих стабильных выпусках, но утверждает, что это клон Oracle JDK (который на самом деле им не является), и что в действительности технически отличает OpenJDK от Oracle JDK? (только быстрая доступность функций? Или нацеленность на стабильность/надежность?)

Ответ 1

Технические различия являются следствием цели каждого из них (OpenJDK предназначен для ссылочной реализации, открытой для сообщества, а Oracle - коммерческой)

Оба они имеют "почти" один и тот же код классов в Java API; но код для самой виртуальной машины фактически различен, и когда дело доходит до библиотек, OpenJDK имеет тенденцию использовать открытые библиотеки, в то время как Oracle стремится использовать закрытые; например, библиотека шрифтов.

Ответ 2

OpenJDK является эталонной моделью и открытым исходным кодом, в то время как Oracle JDK является реализацией OpenJDK и не является открытым исходным кодом. Oracle JDK более стабилен, чем OpenJDK.

OpenJDK выпускается под лицензией GPL v2, тогда как Oracle JDK лицензируется в соответствии с лицензионным соглашением Oracle для двоичного кода.

OpenJDK и Oracle JDK имеют почти одинаковый код, но Oracle JDK имеет больше классов и исправлены некоторые ошибки.

Поэтому, если вы хотите разрабатывать корпоративное/коммерческое программное обеспечение, я бы предложил использовать Oracle JDK, так как оно тщательно протестировано и стабильно.

Я столкнулся с множеством проблем со сбоями приложений с использованием OpenJDK, которые устраняются путем переключения на Oracle JDK