2

I'm currently working on a big system, which consists of about 5 independent projects. All these projects are java 7 and run in JBoss EAP 6.1, some are web projects with JSF and others only libs that are used as dependency or projects that provide services via webservices... there's also a system in groovy 1.9, all of them have about 10 years old already.

Due to the end of support, we need to update JBoss and JDK. I thought about doing the update to JDK 8 and Wildfly 8, but although Java 8 is the market standard today, it is already a very old version with almost 5 years old, except that Java 11 is already there and 12 is in the oven already.

Question: I know that any upgrade will be traumatic, mainly because of the JSF libs like Richfaces we use. Do you think I should focus on upgrading to JDK 8 or going straight to JDK 10/11?

I'm inclined to go straight to JDK 11, Wildfly 14 and the latest version of Eclipse (we still use Kepler). The code itself will not have major changes, my biggest concern is all the old libs we use: Richfaces, Joda, Tika, CXF, Guava, Groovy, HTTPClients, etc ...

Has anyone else been through anything like this recently? What do you recommend?

André Silva
  • 103
  • 8
  • You should be going straight to Java 11 because Java 10 isn't really available anymore –  Oct 22 '18 at 09:59
  • I'd too suggest extending and testing your projects for Java 11 compatibility first, as it is the next LTS version. https://www.oracle.com/technetwork/java/eol-135779.html – Selaron Oct 22 '18 at 10:05
  • 2
    @Selaron: it's not the "next" LST version - it's the **current** LTS version –  Oct 22 '18 at 10:07
  • I had found good hints on replacements of java modules removed from Java 11 here: https://stackoverflow.com/questions/48204141/replacements-for-deprecated-jpms-modules-with-java-ee-apis/48204154#48204154 – Selaron Oct 22 '18 at 10:07
  • I'm exactly in the same position right now. Trying to figure out an upgrade path for a project that has multiple jars, wars and ears built with java 7 and switchyard 1 and running on JBoss EAP 6.1. The project also uses JSF, Groovy and GWT. Curious to know what path did you take to upgrade. – USQ91 Dec 16 '19 at 01:01

1 Answers1

0

Definitely start in java 7, for a separate refactored version, if you are targeting java 11.

You are saying the code is big. The cyclomatic structure might be huge. So somehow you want to split the application in isolated libraries first, in order to prepare for modules. Maybe a "module" for every tiered layer, and for common code: 4-5 jars.

For just java 8 you could start right away.

And then start refactoring for new style language features to some degree: shortening code (as streams are more expressive), maybe using the new time classes instead of joda, Path/Files instead of File.

In eclipse use SonarLint to avoid a drop of code quality and unnecessary new errors.

Important: make an Excel inventory of all sources, so you may register % done at date X, make a progress diagram in Excel. Otherwise you will not be able to communicate your progress objectively, and especially not be able to predict an end date.

Joop Eggen
  • 107,315
  • 7
  • 83
  • 138