Using Java 7 to target much older JVMs
Join the DZone community and get the full member experience.
Join For FreeJava 5.0 and 6 used to have poor support for compiling classes to target older versions of Java. It always supported the previous version, but often no more.
Even if you could compile for previous version, you had to be careful not to use functionality which did exist in the previous versions.Java 7
Java 7 addresses both these issues. Firstly, it supports sources back to 1.2 and targets back to Java 1.1. Secondly. it insists you set the bootclasspath so you can include the version of the libraries you will be using for that version.public class Main { public static void main(String[] args) { System.out.println("Hello World!"); } } $ javac -target 1.7 -source 1.7 Main.java $ javac -target 1.6 -source 1.6 Main.java warning: [options] bootstrap class path not set in conjunction with -source 1.6 1 warning $ javac -Xbootclasspath:/usr/java/jdk1.6.0_29/jre/lib/rt.jar -target 1.6 -source 1.6 Main.java $ javac -Xbootclasspath:/usr/java/jdk1.5.0_22/jre/lib/rt.jar -target 1.5 -source 1.5 Main.java $ javac -Xbootclasspath:/usr/java/jdk1.4.0_30/jre/lib/rt.jar -target 1.4 -source 1.4 Main.java $ javac -Xbootclasspath:/usr/java/jdk1.3.1_29/jre/lib/rt.jar -target 1.3 -source 1.3 Main.java $ javac -Xbootclasspath:/usr/java/jdk1.2.2_017/jre/lib/rt.jar -target 1.2 -source 1.2 Main.java $ javac -Xbootclasspath:/usr/java/jdk1.1.8_16/jre/lib/rt.jar -target 1.1 -source 1.2 Main.java $ javac -Xbootclasspath:/usr/java/jdk1.1.8_16/jre/lib/rt.jar -target 1.1 -source 1.1 Main.java javac: invalid source release: 1.1 Usage: javac <source> use -help for a list of possible options $ javac -Xbootclasspath:/usr/java/jdk1.1.8_16/jre/lib/rt.jar -target 1.0 -source 1.0 Main.java javac: invalid target release: 1.0 Usage: javac <source> use -help for a list of possible options
BTW: All the previous versions back to 1.1 are available from the Oracle web site Oracle Java Archive
From http://vanillajava.blogspot.com/2012/02/using-java-7-to-target-much-older-jvms.html
Java (programming language)
Opinions expressed by DZone contributors are their own.
Comments