A Week with Java 11

I uninstalled Java 8 last weekend from my computer and tried to live without it. I made couple of observations since then and needed to reinstall Java 8.

Gradle Project 

I use Jetty as web server in Gradle. This is provided by Gretty plug-in. I found out Jetty 9.4 uses older version of ASM, so it does not start my web application. So, I switched to Tomcat that works fine.

Example code:

buildscript {
  repositories {
    mavenCentral()
  }
}

plugins {
  id 'java'
  id 'war'
  id 'eclipse'
  id "org.gretty" version "2.2.0"
}

gretty {
  servletContainer = 'tomcat7'
   httpPort = 8080
}

Java Native Interface

I tried to use a library that uses Java Native Interface (JNI) to bind Java application to C++ libraries. I was receiving errors that a bound method cannot be found by JNI. This was caused by Java 8 and 11 differences as the library was compiled with Java 8.

After switching back to JDK 8 everything started to work as described in a tutorial. The main problem is the error is not clear, so be aware JNI will be a problem when you upgrade your application to Java 11.

Internet Banking Website

My bank has uses asymmetric cryptography to sign and approve submitted transactions. I have my private key on my computer protected by password. When I need to approve a transaction, Java Web Start is required and it launches local Java application.

Java Web Start was removed in Java 11, so there is no replacement. Then it is mandatory to install Java 8 in order to run it.

Conclusion

I should point out I really like new Java, so my observations should be taken as an advice to plan your application upgrade.

So far, OpenJDK 11 works really well and when we get over these issues, all application will really benefit from it.