Это подробно объясняется на странице OpenJDK: Предложение по обновлению проекта JDK 7 : вопросы и ответы
Будет ли этот проект служить основой для обновлений Oracle JDK 7 Update?
Да.
Цитата из поста Джо Дарси в блоге FOSDEM на OpenJDK 6 :
В частности, не будет такой же дихотомии между базой кода OpenJDK 7 и базой 7 кода обновления, как между OpenJDK 6 и последовательностью 6 обновлений ...
Согласно моему прочтению, вышеприведенное по существу означает, что исправления и обновления обычно идут сначала в Open JDK, а затем с минимальной задержкой доставляются в Oracle JDK.
Что касается исправлений безопасности, картина выглядит противоположной, то есть я бы предпочел, чтобы они сначала шли в релизы Oracle, а затем (опять же, с минимальной задержкой) в OpenJDK:
Получит ли 7-й проект обновления исправления безопасности от Oracle?
Да.
Как и в OpenJDK 6, исправления безопасности сначала сохраняются в тайне и применяются к частному лесу, а затем передаются в общий лес в рамках общей синхронизированной публикации исправления в затронутых поездах выпуска JDK. Кроме того, они не пройдут процедуру проверки и одобрения общедоступного кода, а их соответствующие проблемы в системе отслеживания проблем Проекта не будут отображаться в открытом доступе.
Когда этот проект получит исправления безопасности от Oracle?
Расписание для Oracle Java SE Critical Patch Обновления публично доступны .
Исправления безопасности для исходного кода этого проекта будут доступны в проекте обновления JDK 7 примерно в то же время, когда они были выпущены в продуктах от Oracle ...
Чтобы лучше понять причины, по которым, по-видимому, так много усилий уделяется синхронизации Oracle и Open JDK, имеет смысл взглянуть на решение Oracle по предыдущему проекту: переход к OpenJDK в качестве официальной ссылочной реализации Java SE 7 :
... Oracle и другие члены группы экспертов по Java SE 7 вносят последние изменения в спецификацию Java SE 7 ( JSR 336 ). Будучи ведущим специалистом по спецификации, Oracle отвечает за предоставление эталонной реализации Java SE 7 ... мы собираемся предоставить эталонную реализацию, полностью основанную на открытом исходном коде OpenJDK, и сделать ее доступной по лицензии с открытым исходным кодом GPL. ,
Роль эталонной реализации (RI) должна использоваться в качестве золотого стандарта для всех реализаций Java. Для того чтобы реализация была сертифицирована как совместимая с Java SE, разработчик должен пройти большое количество тестов на совместимость - комплект совместимости технологий (TCK). Кроме того, реализации могут сравниваться с RI в качестве дополнительной проверки совместимости. По сути, если ваша реализация сертифицирована на то же поведение, что и RI, она совместима с Java. Для получения дополнительной информации по этой теме обратитесь к FAQ JCP .
Исторически Sun всегда использовала Sun JDK в качестве RI и делала его доступным по лицензии двоичного кода (BCL). Это было очень удобно для Sun, поскольку это означало, что реализация его продукта была совместима по определению. Однако это также сбивало с толку, поскольку Sun JDK содержал довольно много функций, которые не были частью стандарта, таких как плагин Java. Кроме того, продолжение этой практики усложнит работу разработчиков с открытым исходным кодом, поскольку они не смогут изучать и оценивать официальный исходный код RI. (Исходный код для Oracle JDK немного отличается от OpenJDK - то, к чему мы будем обращаться в будущем).
Имея это в виду, Oracle будет:
- Создайте двоичные файлы RI только на основе кода OpenJDK.
- Сделайте двоичные файлы RI доступными в соответствии с BCL (обычная лицензия Java) для коммерческих разработчиков и GPLv2 (за исключением Classpath) для разработчиков с открытым исходным кодом.
- Продолжайте предоставлять TCK коммерческим лицензиатам, но также обновляйте лицензию OCTLA, чтобы она охватывала Java SE 7. Последняя позволяет разработчикам с открытым исходным кодом бесплатно получать доступ к TCK для проверки своих реализаций ...
Вышеупомянутое решение означает много усилий для внедрения в код Open JDK, для выпуска официально проверенного, протестированного, лицензированного и совместимого кода. Если вы добавите, что он должен быть выпущен в соответствии с согласованным общедоступным графиком, становится очевидным, что такие усилия будут примерно такими же, как это было ранее в «традиционных» выпусках Sun / Oracle Java.
Это делает разумным поддерживать как можно более близкими базы кода Open и Oracle JDK: в противном случае дублирование разработки и исправления, делающие оба проекта совместимыми с TCK, могут стать чрезмерно утомительными.
Похоже, что решение использовать Open JDK в качестве эталонной реализации сделало в интересах Oracle поддерживать максимально возможную близость их JDK к синхронизации с Open JDK - вплоть до выпуска JDK 7.
Чтобы понять, что может мотивировать Oracle на дальнейшую синхронизацию, в выпусках обновлений JDK 7 лучше взглянуть на проект Open JDK 8 , цель которого описана почти так же, как в Open JDK 7:
Целью этого проекта является создание эталонной реализации платформы Java SE 8 с открытым исходным кодом, которая будет определена JSR 337 в процессе сообщества Java .
По тем же соображениям, которые были объяснены выше в отношении эталонной реализации JDK 7, опять же, в интересах Oracle поддерживать синхронизацию обновлений обоих JDK в максимально возможной степени.
Чем больше различий будет между этими JDK, тем сложнее будет Oracle выпустить Java SE 8 из-за дублирования усилий, необходимых для приведения их собственного выпуска в соответствие с TCK. Верно и обратное, то есть чем ближе будут оба проекта к настоящему времени, тем меньше усилий потребуется для выпуска обеих реализаций Java 8.
Случалось ли вам когда-нибудь поддерживать две слегка отличающиеся друг от друга версии одного и того же программного обеспечения, ориентированные на разных клиентов? Если да, вы, вероятно, помните желание держать их обоих как можно ближе, и неудобства, которые вы испытывали, когда они были не синхронизированы. С Open и Oracle JDK это очень похоже, только в большем масштабе.
Почти все исправления ошибок идут непосредственно через проект OpenJDK, а затем в нисходящих поставщиков JVM (Oracle, Azul, RedHat и т. Д.).
Исключением является то, что некоторые исправления безопасности исправляются в последующих версиях (в частности, в Oracle), прежде чем тихо перенести их обратно в OpenJDK. Это позволяет поставщикам обновлять большую часть мира с помощью исправления безопасности, прежде чем публиковать информацию об уязвимости в проекте с открытым исходным кодом.
Некоторые поставщики также предпочитают не возвращать свои изменения обратно в OpenJDK. Например, и Google, и Twitter изменили версии OpenJDK, которые они используют внутри, с исправлениями ошибок и функциями, которые не были возвращены в основной проект OpenJDK.
НТН
источник