jtreg: versions, dependencies, and build issues.

Jonathan Gibbons jonathan.gibbons at oracle.com
Thu Apr 28 22:03:36 UTC 2016


This message is about  jtreg, running it, and building it.

First, running jtreg.

It is time to raise the baseline JDK used to run jtreg. SInce forever, 
JDK 5 has been sufficient, but that is blocking the adoption of new 
libraries and new features. And so, coming soon, JDK 7 or 8 will be 
required to run jtreg.    This is just about the version of JDK used to 
run jtreg; for those that need to do so, jtreg will continue to support 
being able to run tests on older versions of JDK, including all releases 
on OpenJDK.


The rest of this message is about building jtreg.  I am aware that 
building jtreg can initially be daunting, because of the trouble finding 
some of the dependencies that are required.  My "head in the sand" 
answer has generally been to say that once you have found copies of the 
dependencies you can use, the actual build step is relatively easy, but 
yes, finding easily available copies of some of the dependencies is 
hard, and getting harder.   This needs to be addressed.


-----------------


Currently, jtreg requires the following:

JDK:
     If you want to run tests on very old releases (back to 1.2), you 
need a JDK that can compile code for the that release.
     If you want to run tests on medium old releases (back to 1.5), you 
need a JDK that can compile code for the that release.
     Otherwise, you need a recent release of JDK.


JavaHelp:
     I am looking into removing this dependency from jtreg. JavaHelp is 
currently on java.net and its future is uncertain. It is not core 
functionality for jtreg and I doubt anyone would miss it. There are 
better ways to provide documentation these days.


JavaTest/jtharness:
     Available on OpenJDK CodeTools.
     This component has its own long list of dependencies, and I am 
engaging with that team to see how many of those dependencies could be 
made optional.  Most are not of interest to jtreg.


JCov:
     Available on OpenJDK CodeTools.
     This is not strictly required for jtreg. (Need to verify it is 
truly optional)


AsmTools:
     Available on OpenJDK CodeTools.  (Not to be confused with ObjectWeb 
ASM)
     This is not strictly required for jtreg itself, but is required to 
run some of the JDK tests.


JUnit:
     We are looking to move forward to JUnit 4.10


TestNG:
     We are looking to move forward to TestNG 4.9.5.


Ant:
     Currently, this is required to build jtreg. (jtreg provides an Ant 
task)
     Although it would be a breaking change, I think we should change 
the Java part of the Ant task to be a top level class instead of a 
nested class, such that the dependence on Ant can be made optional.


HTMLCheck:
     Optional tool for use when building jtreg


LinkLint:
     Optional tool for use when building jtreg


Xalan:
     Currently required, to help build JavaHelp data files.  If we drop 
support for JavaHelp, this dependence will go away.


-------------


Looking at the list, I think we should be able to make it much 
easier/simpler to build jtreg.    We should be able to reduce the 
dependencies to recent versions of JDK, JT Harness and other code from 
OpenJDK Code Tools,  JUnit and TestNG.


-- Jon


More information about the jtreg-dev mailing list