Java8


Wolfgang Fahl

Why Java 8 is not dead

  • Because Java 9 breaks things
  • Because Java 10 breaks more things
  • Because Java 11 breaks even more things
  • Because Java >=12 broke more of the stuff that has been working perfectly for years

And the cost/benefit relation of moving along Oracle's ideas seems not worthwile.

Why Java 8 is not dead[edit]

  • Because Java 9 breaks things
  • Because Java 10 breaks more things
  • Because Java 11 breaks even more things
  • Because Java >=12 broke more of the stuff that has been working perfectly for years

And the cost/benefit relation of moving along Oracle's ideas seems not worthwile.

What can you do ??[edit]

  1. Stick to Java 8
  2. Move to another programming language like Python, Javascript or any other competitor of Java

What can you do ??[edit]

  1. Stick to Java 8
  2. Move to another programming language like Python, Javascript or any other competitor of Java

Stick to Java 8[edit]

sudo apt install openjdk-8-jdk
sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-armhf/bin/java      1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-armhf/bin/java      1111      manual mode
  2            /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java   1081      manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java to provide /usr/bin/java (java) in manual mode
wf@raspberrypi:~/source/java/com.bitplan.dac $ java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-1+rpi1-b07)
OpenJDK Client VM (build 25.312-b07, mixed mode)

Mediawiki-Japi[edit]

Problem[edit]

Mediawiki-Japi/src/main/java/com/bitplan/mediawiki/japi/api/Page.java:[34,33] package javax.xml.bind.annotation does not exist

Diagnosis[edit]

Oracle decided to remove APIs

Solution[edit]

Do not use Oracle's incompatible Java versions - stay with Version 8

diff --git a/.travis.yml b/.travis.yml
 # this is a java project using maven
 language: java
+# make sure things keep working see http://wiki.bitplan.com/index.php/Java8
+jdk: openjdk8

Crashing Eclipse[edit]

Problem[edit]

Trying to start Eclipse oxygen leads to multiple ClassNotFoundExceptions

Diagnosis[edit]

Therapy[edit]

Surprise - stay with Java 8 ... Search it:

/usr/libexec/java_home -v 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home

and add it to your eclipse.ini (make sure using two lines as below ...

-vm
/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/bin/java

Hazelcast not starting properly[edit]

Problem[edit]

java: WARNING: Hazelcast is starting in a Java modular environment (Java 9 and newer) but without proper access to required Java packages. Use additional Java arguments to provide Hazelcast access to Java internal API. The internal API access is used to get the best performance results. Arguments to be used:

java:  --add-modules java.se --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED

and then it doesn't work / the tcp connections fail

Diagnosis[edit]

Code not working without changes

Therapy[edit]

Surprise - stay with Java 8 ...

Incompatible Javadoc[edit]

Problem[edit]

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.0.1:jar (attach-javadocs) on project com.bitplan.rest.freemarker: MavenReportException: Error while generating Javadoc: 

[ERROR] Exit code: 1 - javadoc: error - The code being documented uses modules but the packages defined in https://docs.oracle.com/javase/8/docs/api/ are in the unnamed module.

[ERROR] 

[ERROR] Command line was: /usr/local/lib/jvm/openjdk11/bin/javadoc -Xdoclint:none @options @packages

Diagnosis[edit]

java -Xmx32m -version

openjdk version "11.0.2" 2019-01-15

Java 11 javadoc is incompatible to prior versions

Therapy[edit]

Surprise - stay with Java 8 ...

mvn site fails[edit]

Problem[edit]

org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
    at org.apache.bcel.classfile.Constant.readConstant (Constant.java:161)

Diagnosis[edit]

Therapy[edit]

🖨 🚪