Rock 2.0 and the transition to Java 21

Hi, I have a question about Rock and some current developments in the DataSHIELD ecosystem.

In late March, Rock 2.0 was released. Notably, Rock 2.0 updates the Java version from 8(?)to Java 21. Many of the other DataSHIELD components such as Opal, Armadillo, Mica continue to use Java 8. For non-Docker deployments this change can lead to conflicts between some tools expecting Java 8 and others expecting Java 21 from the /usr/bin/java path.

With some configurations, it’s possible to have two versions of Java on the same system and to reference the appropriate one.

Upgrade actions - If the default Java installed in your system is not Java 21, you must install Java 21 (any vendor), update the path to the java executable in the file /etc/default/rock , and restart the rock service.

For myself, I recently updated the R version on a Rock server we had, through /var/lib/rock/conf/application.yml, under the r.exec entry. And I know that the Java executable that Rock should be using is set in the same way. So hopefully, this will save your projects on non-Docker set-ups.

What I would like to ask is if we can expect the rest of the DataSHIELD suite to also bump their Java up to Java 21? Some time ago I and @yannick were discussing that Java 8 was now quite outdated*. Is there alredy any ongoing effort to upgrade the Java version accross DataSHIELD projects?

*See Opal Crashes after Restart (Error creating bean with name 'jotm')

Hi, The main use of Java in the DataSHIELD ecosystem is in Opal, Armadillo and Rock. Both Opal and Armadillo are engaged in the progress of updating the version of Java used. I will leave it to them to indicate current state of the process. The Rock 2.0 now uses(/requires) Java 21, so I have started the process of rebuilding and testing DataSHIELD Profiles based on Rock 2.0. I am currently concentrating “xenon”

Stuart

1 Like

Hi,

Yes, the whole OBiBa suite is in the process of being migrated to Java 21. So far, Rock and Agate have been migrated. Mica migration is in progress (task handled by Maelstrom Research), currently in the testing phase. Opal backend has been migrated as well, but frontend (graphical user interface) requires rewritting (GWT framework is obsolete), good progress but there is still a lot to do, there are so many functionalities :slight_smile:

Regards
Yannick

1 Like

@yannick I decided to go for multiple Java versions with SDKMAN!

Is it possible to give a Java path for Opal? I could not find the variable in /usr/share/opal/conf/opal-config.properties ?

Hi,

Java path is to be defined in the /etc/default file corresponding to your app: /etc/default/rock or /etc/default/opal there is a JAVA env for specifying the java exec location.

Regards
Yannick

1 Like

Can confirm as of October 4 2024, that a system-wide Java 21 works provided that Opal (4.7.4.) runs on a custom path.

Java8 path = /opt/sdkman/candidates/java/8.0.422-amzn/bin/java (sdkman installed under /opt instead of /$HOME/.sdkman default)