Java 1.1, 1.2 and 1.3—what's the difference?

by Simon Grönlund

OS/2 now supports Java 1.1.8, but other platforms have taken the advantage of Java 2 for quite a while. But IBM will take the leap to Java 2 version 1.3 in one step. What's the difference? And is the upgrade worth it?

Any time new versions arrive some will eagerly jump the boat, some patiently wait a few months and some say, "Never will I upgrade! Any new version will only get more bloated and sluggish, I am content with the version I am used to." Personally I am one of the well balanced and wise wait-until-the-children's-diseases-are-gone group of computer users. Hence I still do not use Windows since I think it still has some teething problems. But I now am happy using the Java 2 version1.3 Preview that IBM has provided to OS/2.

The Java 1.3 Preview Java Virtual Machine (JVM) still seems to suffer from some problems, but so far I am pleased to see that the compiler (in the JDK) does a good work, and I enjoy the advantages and features added to this version that Java 1.1.8 do not has. What are these differences in short?

Java 1.1
Java 1.1 was a step in the right direction over Java 1.02, but that was all it was. Most convenience classes were missing, the AWT had more kind of toys than the GUI users of today are spoiled with. And any application or applet took its time to launch. No, Java 1.1 was almost outdated upon arrival, sorry to say that. Still I loved it since it was rather easy to learn and it promised system independence, and as an alternative solution it really worked.

Admittedly Java 1.1 was able to most of the stuff developers of those days were asking for and both SUN and third party players added dozens of packages to it. On the backside was that you really had to implement a lot of things on your own or buy those add-ons. But a lot of IBM tools from the past years are written in Java 1.1 and some of them are most powerful, with yet not so well polished GUIs.

Java 1.2
When Java 1.2 arrived SUN only gave it a point upgrade, from 1.1 to 1.2. But almost in unison Java developers all over the world named it Java 2 because of its giant step forward, so it got two names, both Java 2 and Java 1.2. The bureaucratic name still is Java 1.2, that soon became Java 1.2.2.

There are some more notable features added to the JDK of Java 1.2 and I will point your eye to a few of my personal favourites. First of all, Swing got built in. Swing was an add-on prior to Java 1.2. It did not depend on the new technology of Java 1.2 and hence it was a peace of cake to add it to a Java 1.1 installation as many OS/2 users realized. Normally only an extra path was added to the system CLASSPATH variable and Swing was at your service. To get Netscape/2 to work, a little fiddling with the "Preferences" was necessary.

Swing added to the original Java AWT much of the missed polished items and the forgotten double buffering. Swing further made it possible to develop more intuitively with high level components as any modern GUI application use, along with a good event handling support.

Drag and drop was added to Java 1.2 and was thought to work with non-Java application as well as with any Java application. Ahem!, mostly it worked just fine but of course, this feature cannot think for you and hence some operations do not work that nice. Keyboard navigation and an improved repaint mechanism added value to Java 2. Especially the latter was not fun to play within Java 1.1, causing many headaches I think.

Tools for security was added (and OS/2 developers must have longed for them, myself secretly rebooting to Windows 95—sorry folks—to use them when needed). Tools like keytool, an improved jar, jarsigner, and policytool really became a touchstone or a watershed between OS/2 and a "neutral platform" that IBM nowadays call it.

Security certificate handling was added and security controls were rebuilt and added. All at once Java climbed towards the more secure platforms and did it well. There are few systems around that with such easy to learn twists can give you that much security, but be aware, only a handful of systems are very close to perfection, and none is perfect.

Another big leap was the much improved Collections Framework that now gave you a lot of top notch data structures built in. Yes, Collections is a framework but quite a few data structures was added, such as LinkedList, TreeSet or HashMap, that took Java a giant jump from the humble Vector and HashTable to new levels. Not that these were bad, but now you can pick your choice more sensible and they all work together under a few interfaces. Developers enjoy such stuff.

The class Collections is worth a paragraph for itself, since it came full of tools like binarySearch, max/min, reverse, shuffle or sort, only to mention a few.

Some multi media features were improved, replaced or added. Most notably is the Java Sound Engine that was replaced with a much better one. Further there were many improvements on performance and other invisible changes. Or visible ones, such as a much better Javadoc tool that was one of the most visible, and well done, upgrades over the old one.

Java 2 version 1.3
If the former fuss with version numbering annoyed you, be seated before you continue. This spring SUN launched a new version number over Java 2. But how to name it, Java 3 or simply Java 1.3? It was not such a big improvement over Java 2 that Java 3 was justified, thus it seems like Java 1.3 should do. But no! The full name became "Java 2 SDK, Standard Edition, version 1.3". I will name it Java 1.3.

Performance
One of the more talked about improvements is the performance boost. To deliver that acceleration SUN has included the Java HotSpot Client Virtual Machine, a virtual machine (VM) that is tuned to shorten startup time and minimize memory footprint. But running performance shall be optimized as well. SUN delivers Java 1.3 to Solaris, Linux and Win32, but IBM will see to OS/2. How they will solve this improvement remains to be seen, though the IBM Java VMs have always left quite a few competitors behind.

New features
To Java 2 a lot of extra features has been added, many of them have been available for a while as extra packages but also new features are added. Noted are the Remote Method Invocation (RMI) that is much improved, together with the CORBA support. Security got many smaller enhancements. Even networking is taken a few inches upwards, both on performance and security.

Many smaller features and enhancements are included in this upgrade, some you can live without, but maybe your fellow really loves them. So, the result is that all of them are needed.

Conclusion
This short review of the new Java features included in Java 2 and Java 1.3 gives that the upgrades are really worth the time and effort. Developers will benefit from the many built in classes that makes the now home built monstrosities obsolete. Users will notice performance and many GUI items, if they have not added Swing already, then they will notice a more smoothly running application. Anyone will enjoy the improved security necessary within a connected community.

Since Swing is available today, go for it. If you like to, get the king-sized Java 1.3 Preview file from IBM and install it. The installation works perfect if there is no muddle with your system prerequisites, and remember to avoid installing it as your primary Java VM. It was delivered at the promised day and if that will hold the finished product will hit the web at September 30th. In a future review I will look into this OS/2 version of Java 1.3.

If you are running any of the operating systems mentioned above, namely Linux, Solaris or Win32, get the executable today and install it, it really is worth the download cost. Since I do not use any of these two former systems at home yet, I cannot tell how the installation works, but on Windows 95 you have to manually see to it the PATH variable in the AUTOEXEC.BAT is set correctly, shame on the installation program.