Richard is an empirical technologist and solver of deep-dive technical problems. Recently he has been working on data analytics for high performance computing at jClarity and is writing a book on Java 8 Lambdas for O’Reilly. He is a leader in the London Java Community, sits on their JCP Committee and organises the Adopt-a-JSR programs for Lambdas and Date and Time in Java 8. Richard is also a known conference speaker, having talked at JavaOne, DevoxxUK, Geecon and JAX London. Previously he worked on static analysis problems, verifying part of a compiler and developing automated bug detection technology. He obtained a PhD in Computer Science from The University of Warwick where his research focussed on compiler theory. Richard is a DZone MVB and is not an employee of DZone and has posted 15 posts at DZone. You can read more from them at their website. View Full User Profile

Testing Java 8 in 3 Easy Steps

07.09.2013
| 3477 views |
  • submit to reddit


tl;dr
 Use your CI Setup to test Java 8.

The upcoming Java 8 release promises a bunch of new feature for Java developers, but there's always a risk when upgrading that your code will break. We all remember that when Java 7 shipped it had a series of quite severe bugs.

Of course we can all help with avoiding the same issue cropping up in Java 8. The approach I'm going to cover today is using your existing Continuous Integration to run your tests on Java 8. If you don't have a continuous integration server or tests go to jail, don't pass go and don't collect £200. I'm going to be using the open source hawkshaw memory shaper as an example of how to do this with a maven project.

1. Install JDK 8 on your CI Server

You can download an early access release of Java 8 from https://jdk8.java.net/download.html. You then have to install this as you would any Java release on your Continuous Integration Server itself.

You also need to add your new JDK 8 install to jenkins so its knows to look for the JDK. From the main screen go to Manage Jenkins andConfigure System. You now need to look for the JDK Install section, untick install automatically and add the name and path.

2. Setup a Jenkins Multi-Build

You can setup another Jenkins Job for your existing project, but this has the downside that if you want to test on several JDKs and have several Projects you end with a lot of Jenkins Jobs to manage. If you've only got one job its a good solution though.

What I prefer to do is have a multi-build configuration so that the whole build can be failed by any JDK version. The first step is to create a new multi-build Jenkins Job.

As well as the normal setup of your Jenkins Job, you need to go to the Configuration Matrix section of the Job's configuration and clickadd axis then select JDK. You can now tick the boxes that apply to the JDKs you want to use. Here I've selected a JDK 7 build a JDK 8 build.

You might also need to disable plugins which don't work under Java 8, such as Jacoco.

3. Report Bugs

You can now run your builds and see whether they pass or fail under different Java versions, in my example build it passes under Java 7, but fails under Java 8:

At this point you need to figure out why your tests failed. Perhaps it was a bug in your code, in which case you can fix it now and have confidence that your application will work when Java 8 is released. Perhaps it was a Java 8 bug: in which case report it on the issue tracker or email the appropriate openjdk mailing list. You can also email adopt-openjdk@googlegroups.com if you want help with this. Please also email us if you're successful - its great to hear feedback.

Published at DZone with permission of Richard Warburton, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)