If you develop Java code internally, choosing which versions of Java to support is easy – you look at what each release offers in terms of performance, bugs and features and choose according to your optimum needs (be it the latest Java 7 or ancient Java 1.3).
When you write a Java PDF library for general usage it is more complicated. Some people will always want the latest release while other want to use it in a 1.3 legacy system so you cannot please everyone.
Java has excellent backwards support but you cannot use the new features and some versions have bugs which are fixed in later releases (for example Java6 has much better ICC colorspace support for profiles compared with Java5). Newer releases of Java can use code written for old versions but we cannot take advantage of new language features.
The picture is more complicated by the fact that Oracle is now actively developing new features which require a certain version of Java. So do we replace our current usage of Java3D (which is effectively dead) with JavaFX (which is very much alive and offers better functionality). The only issue is that JavaFX needs Java6.
We have generally stayed a couple of versions behind so Java5 (released 2004) is our current, pragmatic minimum. With Java 7 released in 2011, Java8 due at the end of this year and plans for Java9, should we make Java6 (released over 5 years ago) the minimum requirement in 2012? What do you think?
IDRsolutions develop a Java PDF library, a PDF forms to HTML5 converter, a PDF to HTML5 or SVG converter and a Java Image Library that doubles as an ImageIO replacement. On the blog our team post about anything interesting they learn about.