Author: Bob Jacobsen
Keywords: JMRI technical code road map

# JMRI: Technology Road Map History

This page is the historical version of the road map for JMRI's future development. It contains notes on older releases.
For more recent work, see the main Technology Road Map page.

### Java Release and Operating System Support

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

## JMRI Release and Development Plan History

This section describes the (notional) plans for JMRI releases.

Release | Description | Date | JRE | JDK
1.8 | Production version, culmination of 1.7.* series | July 2007 (done) |  |
1.9.* | Development series |  | 1.3 | 1.4
2.0 | Production version, culmination of 1.9.* series | December 2007 (done) | 1.3 | 1.4
2.1.* | Development series |  | 1.4 | 1.5
2.2 | Production version, culmination of 2.1.* series | June 2008 (done) | 1.4 | 1.5
2.3.* | Development series |  | 1.5 | 1.5
2.4 | Production version, culmination of 2.3.* series | December 2008 (done) | 1.5 | 1.5
2.5.* | Development series |  | 1.5 | 1.5
2.6 | Production version, culmination of 2.5.* series | June 2009 (done) | 1.5 | 1.5
2.7.* | Development series |  | 1.5 | 1.5
2.8 | Production version, culmination of 2.7.* series | December 2009 (done) | 1.5 | 1.5
2.9.* | Development series |  | 1.5 | 1.5
2.10/3.0 | Production version, culmination of 2.9.* series | June 2010 (done) | 1.5 | 1.5
3.8 | Production version, culmination of 3.7.* series | July 2014 (done) | 1.6 | 1.6
3.9.* | Development series |  | 1.6 | 1.6
3.10 | Production version, culmination of 3.9.* series | December 2014 (done) | 1.6 | 1.6
3.11.* | Development series |  | 1.6 | 8
4.0 | Production version, culmination of 3.11.* series | July 2015 (done) | 8 | 8
4.1.* | Development series |  | 8 | 8
4.2 | Production version, culmination of 4.1.* series | December 2015 (done) | 8 | 8
4.3.* | Development series |  | 8 | 8
4.4 | Production version, culmination of 4.3.* series | Early Summer 2016 | 8 | 8
4.5.* | Development series |  | 8 | 8
4.6 | Production version, culmination of 4.5.* series | Late Fall 2016 | 8 | 8
4.7.* | Development series |  | 8 | 8
4.8 | Production version, culmination of 4.7.* series | Early Summer 2017 | 8 | 8
4.9.* | Development series |  | 8 | 8
4.10 | Production version, culmination of 4.9.* series | December 2017 | 8 | 8
4.12 | Production version, culmination of 4.11.* series | July 2018 | 8 | 8
4.14 | Production version, culmination of 4.13.* series | December 2018 | 8 | 8
4.16 | Production version, culmination of 4.15.* series | July 2019 | 8 | 8
4.18 | Production version, culmination of Fall 2019 series | December 2019 | 8 | 8
4.20 | Production version, culmination of Spring 2020 series | July 2020 | 8 | 8

#### JMRI 1.9, 2.0

The JMRI 1.9 development series moved forward to JRE 1.3, JDK 1.4. This permitted use of:

- Collections in java.util instead of com.sun
- Java2D, along with the associated printing support
- Annotations (we need to develop conventions for their use)
- JDOM 1.0 - Simplifies XML code, allows use of XSLT for dynamic combination
- JUnit 3.8 - Minor improvements to test writing ease
- Fewer jar files included in distribution
- The Jakarta regexp regular expression library. (At some later point, we'll have to move that forward to java.util.regexp, but that won't be available until Java 1.4 in a later JMRI release)

JMRI 1.9 and 2.0 will run on Windows 95 and later, all versions of Mac OS X, and all versions of Linux.

To build JMRI 1.9 and 2.0, you will need Windows 98 1st Ed or later, any version of Mac OS X, or (almost any?) version of Linux.

#### JMRI 2.1, 2.2

The JMRI 2.1 development series moves forward to JRE 1.4, JDK 1.5. This permits use of (subject to verification):

- SwingWorker (and associated updates of threading)
- JUnit 4.0
- Java3D
- JavaHelp update
- Drag and Drop
- Annotations (we'll have to develop conventions for these)
- JavaMail
- Java regular expressions (java.util.regexp)

JMRI 2.1 and 2.2 will run on Windows 98 1st Ed or later, any version of Mac OS X, or version of Linux.

To build JMRI 2.1 and 2.2, you will need Windows 98 2nd Ed or later, Mac OS X 10.4 or later, or (almost any?) version of Linux.

#### JMRI 2.3, 2.4

The JMRI 2.3 development series moves forward to JRE 1.5, JDK 1.5. This permits use of (subject to verification):

- JSpinner (and removal of our replacement in jmri.util)
- Enums (we'll need to make decisions about interface updates, e.g. Turnout.CLOSED)
- printf, Formatter
- generics (subject to decisions about conventions and interface updates)

JMRI 2.3 and 2.4 will run on Windows 98 2nd Ed or later, Mac OS X 10.4 or later, or (almost any?) version of Linux.

To build JMRI 2.1 and 2.2, you will need Windows 98 2nd Ed or later, Mac OS X 10.3 or later, or (almost any?) version of Linux.

#### JMRI 2.5, 2.6, 2.7, 2.8

These versions will continue to use Java 1.5 for both building and running.

During the 2.7 build series, we moved from the Crimson XML parser to Xerces.

#### JMRI 2.9, 2.10/3.0

Plans for the JMRI 2.9 development series are not final.

The JRE and JDK choice for JMRI 2.9 development will depend on desired runtime features, and availability on our popular user and development platforms. It is tentatively Java 1.5 for both building and running, which is the same as JMRI 2.3.* and following ones.

During the 2.9.* series, we intend to move from the javax.comm serial classes to the RXTX gnu.io classes, either via RXTX 2.2-pre2 or some later version. This will remove support for the MS100 from JMRI applications.

#### JMRI after Summer 2010

After JMRI 2.10/3.0 in early summer 2010, development will continue. It's likely that soon after that, if not before, we'll have to move to using Java 1.6.

#### JMRI 3.9, 3.10 (End of 2014)

The JMRI 3.9 development series will stay with Java 1.6 for JRE and SDK.

#### JMRI 3.11, 4.0 (Summer 2015)

For multiple reasons including

- Improved performance, particularly of web I/O and XML file loading, and
- Language and library improvements that made the developer's work easier,

the Spring 2015 series of test releases (JMRI 3.11.*) required Java 1.8 for both building and running. Java 1.8 is also required for the Summer 2015 production release and those that follow.

Planned JMRI changes that affect backwards-compatibility:

- Planned removal of XmlIO web service.
- Removal of deprecated InstanceManager methods
- Removal of some deprecated pass-through classes

New library features (subject to verification):

- Update to JDOM 2 for efficiency and coding convenience
- Update Jython to at least 2.5.4 (bug fixes), and depending on compatibility testing, perhaps 2.7.* (for modern Python)
- Start using JSR 305 annotations via SpotBugs to strengthen the code checking (see this and this).