Author: Bob Jacobsen
Keywords: JMRI technical code road map

# JMRI: Technology Road Map

This page is the road map for JMRI's future development, including changes to our use of Java technologies. It is maintained and updated through continuing discussion on the jmri-developers mailing list.

There's also a page containing the history, particularly the saga of how we moved forward to Java 1.6 and Java 8 across a series of platform-related changes.

## JMRI Releases

This section describes the history and (notional) plans for JMRI releases in the future.

Release | Description | Date | JRE | JDK
3.11.* | Development series |  | 1.6 | 8
4.0 | Production version, culmination of 3.11.* series | July 2015 | 8 | 8
4.2 | Production version, culmination of 4.1.* series | December 2015 | 8 | 8
... | ... | ... | 8 | 8
4.22 | Production version, culmination of Fall 2020 series | February 2021 | 8 | 8
4.24 | Production version, culmination of Spring 2021 series | July 2021 | 8 | 8
4.26 | Production version, culmination of Fall 2021 series | January 2022 | 8 | 8
(Intended) 5.0 | Production version, culmination of Spring 2022 series | June 2022 | 11 | 11
(Intended) 5.2 | Production version, culmination of Fall 2022 series | Jan 2023 | 11 | 11

### Java and JMRI in the Near Future

The 4.1.* series of test releases in Fall 2015 started the requirement for Java 8. This has continued through the following release series. Java 8 will continue to be the requirement through the Fall of 2021. This involves doing development, test and production release builds using Java 1.8.0_181. (We also test on Jenkins with Java 1.8_0_151 to ensure Windows XP compatibility)

The next long-term-support (LTS) Java release is Java 11 from Fall of 2018. Oracle has aligned their Java and the OpenJDK from that point. Because some people will need to have that on their computers for other purposes, we have been building and running JMRI for testing purposes on Oracle Java 8 through 11 and OpenJDK version 11 by using Jenkins. You can follow the current status of these on the CI Status page.

Java 17 is the current LTS release. JMRI is built and tests are run on it too, but we don't recommend using it due to some remaining compatibility issues.

In the near future, the Java version required by JMRI will move forward. We expect that it will be during the Spring 2022 development releases, leading to the June 2022 production releases requiring Java 11 and therefore being called JMRI 5.0. There might be one or two JMRI updates and minor releases early in Spring that would still work with Java 8.

#### Java Release and Operating System Support

More information on Java releases and the operating systems that support them is on a separate page.

## Migration Notes

This is a section of notes for various code migrations that are in progress or contemplated. These don't directly affect JMRI users in the way that Java version changes do, but they may effect external users of the JMRI libraries.

- USB access technology has advanced a lot since support for some basic libraries was added to JMRI. At some point, we should replace those early library versions, but it will break some user scripts.
- Our logging methodology is now a hybrid of native logging (in some included libraries), Log4J 1.2.17 (our logger) and SLF4J (a logging abstraction layer). We may choose to simplify that, but at least we have to move to another logger at some point.