Difference between revisions of "GCube Java 8 migration guide"
(→PREREQUISITES) |
|||
Line 8: | Line 8: | ||
http://www.oracle.com/technetwork/java/javase/8-compatibility-guide-2156366.html | http://www.oracle.com/technetwork/java/javase/8-compatibility-guide-2156366.html | ||
− | = Source Code | + | = Source Code = |
== Source Incompatibilities - TO COMPLETE== | == Source Incompatibilities - TO COMPLETE== | ||
Line 49: | Line 49: | ||
<div style="color:blue"> | <div style="color:blue"> | ||
Set Java 8 as the default JVM for all the development servers managed by Ansible. A new provisioning run is needed to install the new packages and reconfigure the services. On the smartgears-based nodes this can be done running the playbook(s) with the tags: jdk,tomcat | Set Java 8 as the default JVM for all the development servers managed by Ansible. A new provisioning run is needed to install the new packages and reconfigure the services. On the smartgears-based nodes this can be done running the playbook(s) with the tags: jdk,tomcat | ||
− | |||
− | |||
List of the nodes migrated: | List of the nodes migrated: | ||
Line 60: | Line 58: | ||
* dev.d4science.org migrated (no java app running on this host, only postgresql) | * dev.d4science.org migrated (no java app running on this host, only postgresql) | ||
− | To migrate old ghn dev (ubuntu 8.04) as node1.d.d4science , node4.d.d4science , node5.d.d4science, new nodes are created : | + | |
+ | To migrate old ghn dev (ubuntu 8.04) as node1.d.d4science , node4.d.d4science , node5.d.d4science, new nodes (ubuntu 9) are created : | ||
* node9-d-d4s.d4science.org | * node9-d-d4s.d4science.org | ||
* node4.d.d4science | * node4.d.d4science | ||
* node5.d.d4science | * node5.d.d4science | ||
+ | |||
+ | The new nodes with Java8 are: | ||
+ | * node11-d-d4s.d4science.org (old node: node11.d.d4science) | ||
+ | |||
+ | |||
</div> | </div> | ||
Revision as of 10:10, 17 February 2017
This page collects the guidelines for the migration of D4Science infrastructure and the gCUbe software from Java 7 to Java 8. It also collects common issues (and their solution) experienced during the migration as reference for all gCube developers.
There are (few) documented incompatibilities between Java 7 and Java 8.
Running into one of them will require to re-factor the component and release a new version of it.
Java 8 compatibility guide: http://www.oracle.com/technetwork/java/javase/8-compatibility-guide-2156366.html
Contents
Source Code
Source Incompatibilities - TO COMPLETE
- Detected at integration time (the component does not build)
- animal-sniffer-maven-plugin can be used by developers to detect them at development time
Dependencies
Some third-party libraries are not compiled in Java 8 and their code is not Java 8 compatible. This is usually the case of very old versions.
- lombok
- not compatible: 0.11.6
- suggested: 1.14.8
Behaviour Incompatibilities - TO COMPLETE
- Cannot be detected at development and integration time
- We will need to carefully test our artifacts
Other Incompatibilities - TO COMPLETE
- Java8 required as pre-requisited the latest TOMCAT version as reported in the https://support.d4science.org/issues/6306:
" Moving to the latest tomcat version is not so easy. We want to stuck with the distribution provided tomcat for a lot of reasons:
backport of bug and security fixes compatibility with the apr libraries In addition to that, the javassist exceptions were a cosmetic only problem in the past, and an upgrade to a newer version of javassist was planned. " The solution proposed was
- for gCore : updating the xerces and xml-api libraries to make the gCore services working;
- for Smartgears: upgrade on ubuntu 14.04 all the development and production infrastructure. This should be resolved the problems manifested for the javassist and xml parsing.
JVM - TO COMPLETE
JVM memory management changed in Java 8: concept of PermGen space has been replaced by Metaspace. As consequence, startup options used in Java 7 (e.g. "-XX:MaxPermSize") rae not valid anymore in JVM 8.
Set Java 8 as the default JVM for all the development servers managed by Ansible. A new provisioning run is needed to install the new packages and reconfigure the services. On the smartgears-based nodes this can be done running the playbook(s) with the tags: jdk,tomcat
List of the nodes migrated:
- node26.d.d4science.research-infrastructures.eu migrated (no java app running on this host)
- node24.d.d4science.research-infrastructures.eu migrated (smartgears or ghn was not running on this host, only postgresql)
- node27.d.d4science.research-infrastructures.eu migrated (old smartgears tomcat restarted with java8)
- obis2.i-marine.research-infrastructures.eu alias geoserver-dev2.d4science-ii.research-infrastructures.eu migrated (no java app running on this host, only postgresql)
- dev.d4science.org migrated (no java app running on this host, only postgresql)
To migrate old ghn dev (ubuntu 8.04) as node1.d.d4science , node4.d.d4science , node5.d.d4science, new nodes (ubuntu 9) are created :
- node9-d-d4s.d4science.org
- node4.d.d4science
- node5.d.d4science
The new nodes with Java8 are:
- node11-d-d4s.d4science.org (old node: node11.d.d4science)
References
- Oracle releases plan
http://www.oracle.com/technetwork/java/eol-135779.html
- New features in Java 8
- Compatibility guide
http://www.oracle.com/technetwork/java/javase/8-compatibility-guide-2156366.html
- Animal Sniffer Plugin Guide
https://blog.gvsig.org/2011/07/25/hunting-api-incompatibilities-with-the-animal-sniffer-project/