Transition the archive to Java 7

Registered by James Page on 2012-04-23

Java 7 was released last year and is now the primary development/support focus for both OpenJDK and Oracle.

Java 6 has limited support lifetime left.

We should transition all Java packages in the archive to OpenJDK 7 and endeavour to drop OpenJDK 6 from the archive.

Blueprint information

Status:
Complete
Approver:
Steve Langasek
Priority:
Medium
Drafter:
James Page
Direction:
Approved
Assignee:
James Page
Definition:
Approved
Series goal:
Accepted for quantal
Implementation:
Implemented
Milestone target:
milestone icon ubuntu-12.10-beta-2
Started by
James Page on 2012-06-01
Completed by
James Page on 2012-10-17

Related branches

Sprints

Whiteboard

Updates:

http://lists.debian.org/debian-java/2012/06/msg00000.html - serious bug raise in Debian against openjdk-6 re supportability EOL.

Packages which won't be transitioned for quantal:

shogun: WON'T FIX - incompatible bytecode and very long build.
rjava: WON'T FIX - involved as needs a build system change as well in rcran
scala: WON'T FIX - lots of code failures - may need to stick with 6
uwsgi: Specifically targets and provides java 6 packages - needs a full transition
visualvm: WON'T FIX - specifically targets openjdk-6 and won't build with openjdk-7
wims: BUG RAISED - compiler flags all over the place not compatible with openjdk-7

UDS Discussion:

OpenJDK7 on non x86 architectures
- ARM ASM-interpreter and Thumb2 JIT ported to #OpenJDK 7u3 Hotspot 22, IcedTea 7 2.1.1 branch, by chrisphi, aph & adinn at Red Hat.
- The only problem is that there is no IcedTea 7 2.1.1 release planned by the icedtea team. Ubuntu are currently providing a pre-release build for arm using this 2.1.1 branch.
- The good news: the assembler port and thumb2 jit work https://docs.google.com/a/gudinna.com/spreadsheet/oimg?key=0ArR4FJuzvXEsdDZkek5QcXd3c2ROMm1IajE1WmFwYkE&oid=4&zx=edub54x8oark
- all in all my, xranby, experience is that the openjdk 7 using the arm port hits no regression in usage compared to the openjdk 6 port.. so its sane to let distributions default to it and keep working on TCK convergence

Testing
- Focus on Java applications - in archive
    - tomcat7
    - groovy
    - scala
    - clojure
    - activemq
    - jetty
    - solr
    - jenkins
- Other interesting testing:
    - eucalyptus
    - hadoop

Coordination with Debian
 - if there are any arm experts who like to work on raspberry pi, it would be good to get the JIT translated from thumb2 to arm to get a JIT running on ARMv4+ to speedup the jvm on Raspberry PI like hardware.
- Usertags will be used when submitting bugs back to Debian to identify transition bugs.
- Raise awareness of OpenJDK6 support issues with Debian Security Team.

Support for compiling Java 6 source code using OpenJDK7
- This can be done using -source/-target AND the rt.jar from OpenJDK6 - this could be an option during transition for hard packages.
- OpenJDK 6 will be retained in universe for 12.10.

Useful links:
https://wiki.ubuntu.com/JavaTeam/Java7Default
https://fedoraproject.org/wiki/Java7_Package_Rebuild_Status
http://pad.ubuntu.com/uds-q-foundations-q-java7

User Stories:

Frank is developing an application using Java 7; he is able to both build his application on Ubuntu 12.10 and recommend that his clients use Ubuntu 12.10 to host as this provides a fully supported solution.

Joanna is implementing a application which requires Java 6; she is able to make use of the Java libraries provided in Ubuntu as they provide backwards compatibility with Java 6 despite the fact that OpenJDK7 is the default java implementation.

Curtis is developing a new applications which use the new Java 7 invoke_dynamic features - he also wants to run this on ARM based architectures. Using Ubuntu 12.10 he is able to fullfil both of his requirements.

Brian is the maintainer of a Java based application in Ubuntu. His upstream can't migrate to Java 7 in the 12.10 release cycle but he's able to maintain his package using the deprecated OpenJDK6 packages from Ubuntu universe.

Assumptions:

- All Java packages in main can be migrated to Java7 during the 12.10 development cycle.
- Java classes should be complied to be backwards compatible with previous Java versions
- OpenJDK7 on ARM will support invoke_dynamic pre-release of 12.10.
- OpenJDK6 will remain in Universe for 12.10 and won't get much in the way of updates.

Test Plan:

- Rebuild of all B-D default-jdk packages to pickup any source incompatibilities with OpenJDK7
- Updates to all B-D openjdk-6 package in main to pickup any source incompatibilities
- Call for testing of Java applications mid-cycle.
- Targetted testing of Java applications in main:
  - Libreoffice
  - Tomcat7

Release Notes:

Ubuntu 12.10 ships OpenJDK7 as the default Java implementation. This brings improved performance, new features and better compatibility with other Java 7 implementations.

Use of the OpenJDK6 is now deprecated and the openjdk-6-* packages in universe will not be provided in future releases of Ubuntu.

(?)

Work Items

Work items for quantal-alpha-1:
[james-page] file a bug against lintian to validate backwards compatibility of jar/classes and niels-thykier will handle it: DONE
[james-page] Communication and documentation of patch submission process for fixes back to Debian: DONE
[niels-thykier] Check awareness of OpenJDK6 support lifetime with Debian Security Team: DONE

Work items for quantal-alpha-2:
[james-page] Rebuild every java package in main with the OpenJDK7 default (end of May) using no-change uploads: DONE
[james-page] Test tomcat7 with OpenJDK7: DONE

Work items for quantal-alpha-3:
[james-page] Update icedtea-web to use openjdk-7 as default/preferred: DONE
[doko] Update openjdk-7 to install at higher priority than openjdk-6: DONE

Work items for ubuntu-12.10-beta-1:
[james-page] Call for testing of java applications mid cycle: DONE
[bjoern-michaelsen] Test libreoffice with OpenJDK7 (3.6.0~rc4-0ubuntu3 build with openjdk7 and successfully completes subsequenttests: DONE

Work items for ubuntu-12.10-beta-2:
[james-page] Run bytecode lintian check on all java packages in archive: DONE
[james-page] Transition packages from openjdk-6 to openjdk-7: DONE

Work items:
[james-page] Improve comms between distro and OpenJDK/IcedTea upstream about Ubuntu requirements: POSTPONED
Fix FTBFS and bugs: DONE