JMRI: Technology Road MapThis 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 ReleasesThis section describes the (notional) plans for JMRI releases in the future.
|4.0||Production version, culmination of 3.11.* series||July 2015 (done)||1.8||1.8|
|4.2||Production version, culmination of 4.1.* series||December 2015 (done)||1.8||1.8|
|4.4||Production version, culmination of 4.3.* series||Early Summer 2016||1.8||1.8|
|4.6||Production version, culmination of 4.5.* series||Late Fall 2016||1.8||1.8|
|4.8||Production version, culmination of 4.7.* series||Early Summer 2017||1.8||1.8|
|4.10||Production version, culmination of 4.9.* series||December 2017||1.8||1.8|
JMRI during and after 2016The 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.
- At some point, we have to migrate away from JavaHelp and JHelpDev. At a minimum, we'll need to replace the renderer. There are several alternative help systems available. Oracle Help might be a good choice. DocBook as a tool for generating multiple documentation forms is also being considered.
- Our use of JUnit has been migrated to the current JUnit 4 release, currently 4.12. Among other improvements, this can allow use of the Java assert keyword. We're working on how best to use the new capabilities, see the JMRI JUnit page.
- 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 (our original solution) and SLF4J (the most recent addition). It's likely that we'll eventually simplify that.
- JMRI 4.7.5 migrated from RXTX to PureJavaComm (PJC); there may be follow-on work from that.
Java Release and Operating System SupportMore information on Java releases and the operating systems that support them is on a separate page.
Migration NotesThis 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 4JMRI'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 2JMRI 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:
- JDOM 2 classes are in the org.jdom2 package instead of org.jdom. This required some changes to import statements and class-references in the source code.
- The default output formatting is different, requiring minor changes in e.g. the XmlFile class output routines.
In addition, JDOM 2 uses generics in its input parameters and return values. This means you can remove (now redundant) casts in many places. Jenkins will warn about those.