Software documentation

Development tools


Techniques and Standards

How To

Functional Info

Background Info

JMRI: Technology Road Map

This page is the road map for JMRI's future develpoment, 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 1.8 across a series of platform-related changes.

JMRI Releases

This section describes the (notional) plans for JMRI releases in the future.
Release Description Date JRE JDK
3.11.* Development series 1.8 1.8
4.0 Production version, culmination of 3.11.* series July 2015 (done) 1.8 1.8
4.1.* Development series 1.8 1.8
4.2 Production version, culmination of 4.1.* series December 2015 (done) 1.8 1.8
4.3.* Development series 1.8 1.8
4.4 Production version, culmination of 4.3.* series Early Summer 2016 1.8 1.8
4.5.* Development series 1.8 1.8
4.6 Production version, culmination of 4.5.* series Late Fall 2016 1.8 1.8
4.7.* Development series 1.8 1.8
4.8 Production version, culmination of 4.7.* series Early Summer 2017 1.8 1.8
4.9.* Development series 1.8 1.8
4.10 Production version, culmination of 4.9.* series December 2017 1.8 1.8

JMRI during and after 2016

The 4.1.* series of test releases in Fall 2015 started the requirement for Java 8, also known as Java 1.8. This has continued through the following release series. The December 2017 release, notionally JMRI 4.10 will remain with Java 8, but may involve other updates.

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. See also the related section on the migration to Java 1.8.

From JUnit 3 to JUnit 4

JMRI's continuous integration test suites and infrastructure are migrating from JUnit 3 to JUnit 4. For more information, see the section on our JUnit page.

From JDOM 1 to JDOM 2

JMRI 3.11 moved from JDOM version 1 to JDOM version 2. This involved a new jdom-2.0.5.jar file (in place of the earlier jdom.jar), changes to startup and build control files, and some required code changes: In addition, JDOM 2 uses generics in it's input parameters and return values. This means you can remove (now redundant) casts in many places. Jenkins will warn about those.