Відповіді:
Це детально пояснюється на сторінці OpenJDK: JDK 7 Оновити пропозицію проекту Q & A
Чи буде цей Проект послужити основою для версій оновлень Oracle JDK 7 Update?
Так.
Процитуйте повідомлення про блог Джо Дарсі FOSDEM на OpenJDK 6 :
Зокрема, між базою коду OpenJDK 7 та базою коду оновлення 7 не буде такої ж дихотомії, як між OpenJDK 6 та 6 потягом оновлення ...
На моє читання, вище, по суті, означає, що виправлення та оновлення, як правило, спочатку переходять до Open JDK, а потім з якомога меншою затримкою доставляються в JDK Oracle.
Для патчів безпеки зображення здається протилежним, тобто я б очікував, що вони перейдуть спочатку до версій 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. Для отримання додаткової інформації з цієї теми зверніться до поширених запитань JCP .
Історично, Sun завжди використовував JDK Sun як RI і робив його доступним за ліцензією на бінарний код (BCL). Це було дуже зручно для Sun, оскільки це означало, що його реалізація продукту сумісна за визначенням. Однак це було також заплутано, оскільки JDK Sun містило досить багато функцій, які не входили до стандарту, наприклад, плагін Java. Крім того, продовження цієї практики ускладнюватиме роботу виконавців з відкритим кодом, оскільки вони не зможуть вивчити та оцінити офіційний вихідний код RI. (Вихідний код для Oracle JDK трохи відрізняється від OpenJDK - те, про що ми будемо говорити, рухаючись вперед).
Зважаючи на це, Oracle:
- Створюйте бінарні файли RI лише на основі коду OpenJDK.
- Зробіть доступними бінарні файли RI під BCL (звичайна ліцензія Java) для комерційних впроваджувачів та GPLv2 (за винятком Classpath) для реалізаторів з відкритим кодом.
- Продовжуйте надавати TCK комерційним ліцензіатам, але також оновлюйте ліцензію OCTLA, щоб вона охоплювала Java SE 7. Остання дозволяє реалізаторам з відкритим кодом безкоштовно отримати доступ до TCK для перевірки їх реалізації ...
Вищевикладене рішення означає багато зусиль для введення коду Open JDK, випуску офіційно перевіреного, перевіреного, ліцензованого та сумісного коду. Якщо ви додасте, що його потрібно випустити за узгодженим загальнодоступним розкладом, стає очевидним, що таке зусилля буде приблизно таким же, як раніше було вкладено в "традиційні" версії Sun / Oracle Java.
Це робить єдиним розумним підтримувати бази кодів відкритого та 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.
Чи траплялось вам коли-небудь паралельно підтримувати дві трохи різні версії одного і того ж програмного забезпечення, орієнтовані на різних клієнтів? Якщо так, ви, ймовірно, пам’ятаєте про бажання тримати їх як можна ближче, а також незручності, які ви відчували, коли вони не синхронізувалися. З відкритими та Oracle JDK, це в значній мірі, тільки в більшому масштабі.
Практично всі виправлення помилок проходять безпосередньо через проект OpenJDK, а потім - до наступних постачальників JVM (Oracle, Azul, RedHat тощо).
Винятком є те, що деякі виправлення безпеки фіксуються у нижчих версіях (зокрема, Oracle), перш ніж тихо перенести його назад у OpenJDK. Це дозволяє постачальникам оновити більшу частину світу з виправленням безпеки перед тим, як оприлюднити вразливість у проекті з відкритим кодом.
Деякі продавці також вирішують не відштовхувати свої зміни назад у OpenJDK. Наприклад, і Google, і Twitter змінили версії OpenJDK, які вони використовують внутрішньо, з виправленнями помилок та функціями, які не повернулися до головного проекту OpenJDK.
HTH