Skip to content
This repository

JDOM 2.0 

ryanslf edited this page · 28 revisions

This page describes the effort toward a JDOM 2.0 and provides an entry point for all the information you need on JDOM2. Skip to the end of this page to get the status of JDOM 2.0 and a list of JDOM 2.0 related pages.

JDOM 2.0 Motivation

The purpose of JDOM 2.0 is to make use of features introduced in Java 5, such as generics (note JDOM officially supports Java6 and up though - see the Java Dependencies/Versions page). Unfortunately the generics changes will break binary backward compatibility so we're moving to a new version as well as a new package name: org.jdom2. People who want to use the JDOM 1.1.x branch can continue to do so, but people who want the modern features can use JDOM 2.0. The same program can even mix and match. Yes there's downsides (http://markmail.org/message/avsyrgfii7z3u6m5) but it's probably worth it.

How much backward compatibility will we break? Only what's necessary. We may maintain source code compatibility so all a programmer will need to do is update their package imports and recompile their project. But if we decide as a group that some changes are so advantageous they're worth requiring code edits, we'll do it.

We'll do the work on GitHub because it simplifies the task of doing experimental branches. I expect a lot of discussion about whether a certain change is worthwhile or not, and GitHub makes it easy to discuss code not just ideas. The JDOM mailing lists will host the discussion. You can also watch for updates on Twitter from @jdomproject and @jdomcommits.

Possible JDOM 2.0 improvements (see JDOM2 Features for more details):

Volunters

People who have volunteered to be heavily involved in the project:

Initial steps

  1. Migrate the code from CVS to GitHub (keeping all the history).
    DONE - see SOURCE and for the procedure see CVS to Git
  2. Create a branch for 2.0
    DONE - see Source Branches and JDOM2
  3. Do the basic package renames.
    DONE - code is 'rebased' to org.jdom2 and the AllTests junit suite runs. See Commit 2ce8a11a...
  4. Fix the test case that's currently failing (test_TCM__void_setExpandEntities_boolean)
    DONE - this was pobably not broken. Probably because I used JUnit 4 when I reported the failure.
  5. Upgrade the JUnit libraries and tests
    DONE - All tests using JUnit4 structures now.
  6. Use Emma to build up the JUnit test cases to get much better coverage of the junit tests on JDOM (currently have only got 40% coverage of the org.junit code from the JUnit test cases....). Fix any issues that arise in untested code.
    DONE - Using Cobertura instead of Emma
  7. Modify the core code and the test harness together to implement the changes - document what changes are made.
    DONE - so that we can get a list of rules for migration from JDOM 1 to JDOM 2.
  8. Confirm any deviations from 'compatibility' with the jdom-interest list to ensure that all changes are reasonable.
    DONE
  9. Complete the migration, ensure all JavaDoc is complete. All Tests are run, and code test coverage is 'complete'.
    DONE - but constantly being updated for each snapshot see the JDOM 2.0 links

JDOM 2.0 Status

JDOM2.0 is close to a 'beta' release. Probably a 'Christmas' release, prior to 2012. As 'beta' code goes, the JDOM2 code is very stable. A comprehensive JUnit test suite was built on JDOM 1.x, and this harness was then used to ensure stability in the JDOM2.0 development process. We can say, with a high level of confidence, that JDOM 2.0 (even the beta version) will be as stable, perhaps even more stable than JDOM 1.0 since it has a number of bug fixes not available in JDOM 1.x

JDOM 2.0 has got to the point where regular snapshots are being released. All JDOM 2.0 snapshots are availablke on the github Downloads page. See the JDOM 2.0 Snapshots wiki page for the details on the snapshots.

There are currently only smallish features that are outstanding on JDOM 2.0. The big features have been completed. See the issue tracker for what's outstanding.

JDOM 2.0 links

JDOM 2.0 information is a little scattered in the github site. These wiki pages are used for tracking some of the major features and non-javadoc documentation. The GitHub Downloads page is used to provide development snapshot downloads. The Github web-pages are used to supply HTML-based content, including the JavaDoc, Performance, JUnit, and Coverage reports.

Here are the references to the major JDOM 2.0 web-based resources.

Something went wrong with that request. Please try again.