What Java engineers need to prepare for the Java 11 release

~~ For engineers who have not been able to get over the crazy development style ~~

Prepare for JDK version upgrade

The JDK feature release cycle is now a 6-month cycle. Unless you have an LTS version or paid support, a new version will end support for the previous version. It's easy to imagine a new version of the JDK being released in the middle of a long development span and should be considered in advance. It is possible to proceed with the development with a fixed version during the development period, but it is required to be the latest JDK version at the time of release of the developed software and C / O of the system. Therefore, it is essential to develop a development infrastructure that allows regression testing to be performed cyclically.

When it comes to Java 11, APIs that were previously marked as Deprecated but were still available may be removed. There is also a need to be able to quickly catch up on the impact of these changes.

Build with Java 9 and predict the impact when migrating to Java 11 (Added on May 21, 2018)

As of Java 9, there are changes such as Project Jigsaw, and APIs that have already been deleted and internal implementation classes that could be referenced so far There are changes such as being unable to refer to it. Let's prepare for the migration to Java 11 by building and checking the operation with Java 9 at the time when Java 9 is available. It has less impact when migrating to Java 11.

Needs alternative API to be removed in Java 11

Java 11 changes include JEP 320, which removes Java EE, CORBA, etc. that have been deprecated in Java 9. When considering migrating from Java 8, you will need to rewrite to these alternative external libraries. In Java EE, it will be transferred to Jakarta EE, so it will be necessary to rewrite the package name and so on.

Packages to be removed

--java.xml.ws (JAX-WS, related technology SAAJ and Web service metadata)

Prepare for version upgrade of dependent libraries

At the same time, it is necessary to prepare for the version upgrade of the dependent external library. It is natural to prepare for the security patch release, but it is easy to imagine that these external libraries will be upgraded as the JDK is upgraded. Again, there is a need for regression testing to be easy to perform.

For version control of dependent libraries, use a package manager or a build tool such as Maven or Gradle with such features.

No cost for regression testing

Digesting test cases one by one with the human hand is no longer obsolete. The only way to perform regression testing cyclically and easily is to automate it. It is not realistic to build all the source code and execute all the test code on the development work PC, so prepare a dedicated server.

However, it costs more to measure coverage and write reusable test code to ensure quality. (Never have to be TDD or Test-First.) Needless to say, when testing code that affects DB etc., use a mock or write test code that can be cleaned up properly at the end of the test.

There are some parts that are difficult to automate in system development with screens. Here, for the purpose of "quickly catching up the influence of the version upgrade of JDK and dependent libraries", it would be good if "it works as usual" can be tested.

Utilization of CI (Continuous Integration) Tools

Introduce CI tools such as Jenkins and Travis CI to automate source code builds, test code execution, and more. Set to build as soon as the source code changes are reflected. It will be executed behind the scenes of development work such as performing static inspection, executing test code, and measuring coverage.

In addition, by making good use of virtualization technologies such as cloud (IaaS, PaaS, SaaS, etc.), SDI (Software Defined Infrastructure), and Docker, it is possible to quickly build a verification environment that reflects changes in development resources. is.

If you're still using SVN, switch to Git

I don't think it's possible that you don't version control your development resources these days. What you couldn't do with SVN can be done with Git. What you can do with SVN is more convenient with Git. It's easy to imagine that version control and revision control will be complicated. Get started with Git servers with Pull-Request capabilities, such as GitHub and GitBucket, right away. Especially if configuration management cannot be rigorous.

January 2019 Towards the end of the official Oracle JDK 8 update

Consider choosing one of the following:

--Extended with paid support for Oracle JDK 8 --Migrate to Oracle JDK 11 with paid support from Oracle --Migrate to free OpenJDK 11 (However, if it does not become LTS, you need to make a renewal plan in a 6-month cycle)

Let's wait for the release of Java11 with excitement! (Added on 2018/09/08)

According to the schedule in here, general use will be available on 9/25. It's about to come ... Let's prepare a perfect system and wait with excitement.

It seems that the Release Candidate version is available in the Fedora 27 Updates repository.

Recommended Posts

What Java engineers need to prepare for the Java 11 release
Introduction to java for the first time # 2
About the procedure for java to work
What is the volatile modifier for Java variables?
An introduction to Groovy for tedious Java engineers
Prepare the environment for java11 and javaFx with Ubuntu 18.4
What is the constructor for?
Input to the Java console
Tips around the sample to release Java Lambda on CodePipeline
A memorandum to reach the itchy place for Java Gold
Reintroduction to Java for Humanities 0: Understanding the Act of Programming
C # cheat sheet for Java engineers
[java8] To understand the Stream API
Welcome to the Java Library Swamp! !!
What do you need after all to create a web application using java? Explain the mechanism and what is necessary for learning
What Java Engineers Choose for Browser "Automatic Testing"? Selenium? Selenide? Geb?
kotlin & Java: How to hide the toolbar only for specific fragments
How to check for the contents of a java fixed-length string
Think about what to do for SIer education for young development engineers (Part 3)
It feels good to prepare different classes for the same table values
What is CHECKSTYLE: OFF found in the Java source? Checkstyle to know from
[Java] How to use the File class
Getting Started with Ruby for Java Engineers
Java reference to understand in the figure
[Java] How to use the hasNext function
Java SE8 Silver ~ The Road to Pass ~
[Java] How to use the HashMap class
Learn Java with "So What" [For beginners]
About the new Java release model @ Seki Java (2018/07/20)
[Java] How to use the toString () method
Studying how to use the constructor (java)
Java Programming Style Guide for the Java 11 Era
What is the best file reading (Java)
Prepare the security check environment for Rails 6
[Java] How to set the Date time to 00:00:00
[Java] How to get the current directory
What is the main method in Java?
What are the updated features of java 13
How to install the legacy version [Java]
How to get the date in java
Output of the book "Introduction to Java"
Learning for the first time java [Introduction]
[Processing × Java] How to use the function
I went to the Java Women's Club # 1
[Java] Color the standard output to the terminal
[Java] How to use the Calendar class
Memo for migration from java to kotlin
Java vs. JavaScript: What ’s the Difference?
What did I prepare for when I entered an Android application development project while developing the Web in Java?
Java engineers now compare to learn the basic grammar of Ruby Part 1 (Basic, Variables)
What to do if you have installed Java for OS X on macOS
A way for Java / Scala developers to advance their careers as data engineers.
I want you to use Scala as Better Java for the time being
What is ... (3 dots) found in the Java source? Variadic arguments to know from
[Java] How to test for null with JUnit
Check the options set for the running Java process
[Java] How to use Thread.sleep to pause the program
What surprised the Java shop when writing PHP
[Java] What should I use for writing files?
ChatWork4j for using the ChatWork API in Java
What is the Java Servlet / JSP MVC model?