Changes/Java8

From FedoraProject

< Changes(Difference between revisions)
Jump to: navigation, search
(initial page)
 
(Add more information)
Line 2: Line 2:
 
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
 
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
  
= Change Proposal Name Java 8 =
+
= Java 8 =
  
 
== Summary ==
 
== Summary ==
Line 34: Line 34:
  
 
== Detailed Description ==
 
== Detailed Description ==
The current default Java 7 runtime in Fedora is OpenJDK 7. The latest version of OpenJDK, 8, is to be released by the end of March 2014.
+
The current default Java 7 runtime in Fedora is OpenJDK 7. The latest version of OpenJDK, 8, is to be released by the end of March 2014. Given that Fedora 21 will not be released before August, it makes sense to include the latest version of OpenJDK in Fedora 21.
  
OpenJDK 8 is a significant update to Java. It brings in significant new features to the Java language.
+
OpenJDK 8 is a significant update to Java. It brings in significant new features to the Java language, including lambdas, a new javascript engine and lots of new library features. A [http://openjdk.java.net/projects/jdk8/features complete list of features] is available.
  
 +
OpenJDK 8 is a backwards compatible update. Theoreticallyn everything that worked against OpenJDK 7 should continue working against OpenJDK 8. There are a few exceptions:
 +
* OpenJDK8 is much more strict when it comes to building javadocs. Many <code>-javadoc</code> package in Fedora fail to build. Those that are built should continue working just fine.
 +
* Packages that rely on non-public OpenJDK API may fail to build/run.
 +
 
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
 
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
  
Line 43: Line 47:
 
<!-- What is the benefit to the platform?  If this is a major capability update, what has changed?  If this is a new functionality, what capabilities does it bring? Why will Fedora become a better distribution or project because of this proposal?-->
 
<!-- What is the benefit to the platform?  If this is a major capability update, what has changed?  If this is a new functionality, what capabilities does it bring? Why will Fedora become a better distribution or project because of this proposal?-->
  
Shipping the latest version of OpenJDK works towards the Fedora goal of "First". OpenJDK 8 brings significant new features to  
+
Shipping the latest version of OpenJDK works towards the Fedora goal of "First". OpenJDK 8 brings significant new features to the Java language and libraries and platform.
  
If what happended with OpenJDK 6 is an example, then development of OpenJDK 7 will stop before Fedora 21 is End-of-Life'ed and security patches may not be backported to OpenJDK 7 (or if they are, they will be severly delayed). If Fedora 21 ships with OpenJDK 7, this will leave users vulnerable to exploits.  
+
If what happended with OpenJDK 6 is going to repeat, then development of OpenJDK 7 will stop before Fedora 21 is End-of-Life'ed and security patches may not be backported to OpenJDK 7 (or if they are, they will be severly delayed). If Fedora 21 ships with OpenJDK 7, this will leave users vulnerable to exploits.
  
 
== Scope ==
 
== Scope ==
Line 52: Line 56:
 
* Proposal owners:
 
* Proposal owners:
 
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
 
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
 +
** Deprecate/Obsolete <code>java-1.7.0-openjdk</code>
 +
** Promote <code>java-1.8.0-openjdk</code> to a full java runtime status
 +
** In case of a mass rebuild, supply/apply patches to fix build against OpenJDK 8
  
* Other developers: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
+
* Other developers:
 
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
 
<!-- What work do other developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
 +
** <code>icedtea-web</code> maintainers will need to update <code>icedtea-web</code> to run against OpenJDK 8
 +
** Other java packagers will need to apply patches to their java package to ensure they build against OpenJDK 8
 +
** Everyone will need to test packages to verify that they work against OpenJDK 8
  
 
* Release engineering: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
* Release engineering: N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuid required?  If a rel-eng ticket exists, add a link here.  -->
 
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuid required?  If a rel-eng ticket exists, add a link here.  -->
 +
** Remove <code>java-1.7.0-openjdk</code>
 +
** Mass-rebuild (?) all package related to java
  
 
* Policies and guidelines: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
* Policies and guidelines: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. -->
 
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. -->
 +
** Most <code>-javadoc</code> packages fail to build. The OpenJDK 8 maintainers and the Java SIG is working on identifying a solution. The solution may require guideline changes making <code>-javadoc</code> subpackges optiona.
  
 
== Upgrade/compatibility impact ==
 
== Upgrade/compatibility impact ==
 
<!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? -->
 
<!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? -->
  
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
+
Upgrades from previous Fedora versions should be seamless. java-1.8.0-openjdk will replace java-1.7.0-openjdk.
N/A (not a System Wide Change)
+
 
 +
OpenJDK 8 is a backwards compatible update. Code that worked against OpenJDK 7 should continue to run against OpenJDK 8.
 +
 
 +
TODO: Add more impact concerns.
  
 
== How To Test ==
 
== How To Test ==
Line 84: Line 100:
  
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)
+
'''TODO'''
  
 
== User Experience ==
 
== User Experience ==
 
<!-- If this change proposal is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
 
<!-- If this change proposal is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)
+
 
 +
This change to the Java runtime should be mostly invisible to a user.
 +
 
 +
Java developers will notice that a newer version of Java is packaged.
  
 
== Dependencies ==
 
== Dependencies ==
Line 95: Line 114:
  
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)  
+
None (not a System Wide Change)  
  
 
== Contingency Plan ==
 
== Contingency Plan ==
 
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
 
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
 +
 +
'''TODO'''
 +
 
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
 
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
Line 109: Line 131:
 
<!-- Is there upstream documentation on this change, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
 
<!-- Is there upstream documentation on this change, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
  
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
+
* [http://openjdk.java.net/projects/jdk8/features OpenJDK 8 Features]
N/A (not a System Wide Change)
+
* [http://openjdk.java.net/projects/jdk8/ Deveopment timeline]
  
 
== Release Notes ==
 
== Release Notes ==

Revision as of 18:57, 13 March 2014


Contents

Java 8

Summary

Make Java 8 (OpenJDK 8, java-1.8.0-openjdk) the default Java runtime. The current default java runtime (java-1.7.0-openjdk) will be removed.

Owner

  • Name: Omair Majid
  • Email: omajid@redhat.com
  • Release notes owner:

Current status

  • Targeted release: Fedora 21
  • Last updated: 2014-03-13
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

The current default Java 7 runtime in Fedora is OpenJDK 7. The latest version of OpenJDK, 8, is to be released by the end of March 2014. Given that Fedora 21 will not be released before August, it makes sense to include the latest version of OpenJDK in Fedora 21.

OpenJDK 8 is a significant update to Java. It brings in significant new features to the Java language, including lambdas, a new javascript engine and lots of new library features. A complete list of features is available.

OpenJDK 8 is a backwards compatible update. Theoreticallyn everything that worked against OpenJDK 7 should continue working against OpenJDK 8. There are a few exceptions:

  • OpenJDK8 is much more strict when it comes to building javadocs. Many -javadoc package in Fedora fail to build. Those that are built should continue working just fine.
  • Packages that rely on non-public OpenJDK API may fail to build/run.


Benefit to Fedora

Shipping the latest version of OpenJDK works towards the Fedora goal of "First". OpenJDK 8 brings significant new features to the Java language and libraries and platform.

If what happended with OpenJDK 6 is going to repeat, then development of OpenJDK 7 will stop before Fedora 21 is End-of-Life'ed and security patches may not be backported to OpenJDK 7 (or if they are, they will be severly delayed). If Fedora 21 ships with OpenJDK 7, this will leave users vulnerable to exploits.

Scope

  • Proposal owners:
    • Deprecate/Obsolete java-1.7.0-openjdk
    • Promote java-1.8.0-openjdk to a full java runtime status
    • In case of a mass rebuild, supply/apply patches to fix build against OpenJDK 8
  • Other developers:
    • icedtea-web maintainers will need to update icedtea-web to run against OpenJDK 8
    • Other java packagers will need to apply patches to their java package to ensure they build against OpenJDK 8
    • Everyone will need to test packages to verify that they work against OpenJDK 8
  • Release engineering: N/A (not a System Wide Change)
    • Remove java-1.7.0-openjdk
    • Mass-rebuild (?) all package related to java
  • Policies and guidelines: N/A (not a System Wide Change)
    • Most -javadoc packages fail to build. The OpenJDK 8 maintainers and the Java SIG is working on identifying a solution. The solution may require guideline changes making -javadoc subpackges optiona.

Upgrade/compatibility impact

Upgrades from previous Fedora versions should be seamless. java-1.8.0-openjdk will replace java-1.7.0-openjdk.

OpenJDK 8 is a backwards compatible update. Code that worked against OpenJDK 7 should continue to run against OpenJDK 8.

TODO: Add more impact concerns.

How To Test

TODO

User Experience

This change to the Java runtime should be mostly invisible to a user.

Java developers will notice that a newer version of Java is packaged.

Dependencies

None (not a System Wide Change)

Contingency Plan

TODO

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No
  • Blocks product? product <-- Applicable for Changes that blocks specific product release/Fedora.next -->

Documentation

Release Notes