As Claude Rains said in the movie Lawrence of Arabia , "Big things have small beginnings." This was certainly true about Java. The history of Java is a story of how a brilliant and forward-seeing group of developers saw an opportunity to turn a small-scale development project into a language that would change the face of computer programming. This section will give a brief history of Java from its humble beginnings to the current state of the language.
In 1991, developers at Sun Microsystems, Inc., started work on Oak, intended to be a platform-independent programming language for use in consumer electronic devices. The idea was to have one language that could run on a variety of CPUs under different operating systems. Thirteen people were involved in what was dubbed the "Green Project."
While this was going on, a revolutionary development called the Internet was emerging and gaining popularity. The Internet, as we all know, is an environment where media content (text, images, sound, and video) moves from one machine to another. People working on different machines under potentially different operating systems needed the ability to download content, perhaps even full-scale applications from the Internet, and run them on their local machines. The Sun developers realized that Oak had the potential to meet this need, and their focus switched from consumer electronics to Internet programming. In 1995, Sun developers changed the name of the language from Oak to Java.
Initially released in 1995, Java built upon the capabilities and syntax of C and C++, removing some of the less worthwhile elements of those languages and adding important functionality that they lacked. Java was designed to be simple, familiar, versatile, secure, expandable, robust, and easy to learn.
The Java source code was initially released (appropriately enough) over the Internet. The Java developers were, in essence, sending their young child out into the world to see what people thought of her. Word spread within the developer community, and within a few months over 10,000 downloads of Java had occurred. The people who downloaded the code provided feedback to the Java developers about what they liked about the language, what they didn't like, and what they wanted added. Java was on its way.
Java version 1.0 was a revolution in programming, but some deficiencies and idiosyncrasies soon became apparent. Some of the functionality didn't work in an optimum fashion and the language wasn't as standardized or expandable as it could be. Java 1.1, released in 1997, addressed the shortcomings of Java 1.0 and added a lot of functionality. Java 1.1 represented a second revolution in Java programming.
In Java 1.1, basic elements of the language ”the method naming convention, for example ”became standardized. Some parts of the language, such as the Graphical User Interface (GUI) classes and the Java event model, were reworked. Important new features, such as Remote Method Invocation (RMI), the Java Native Interface (JNI), and Java Database Connectivity (JDBC), were added. The concept of a JavaBean was introduced as a structured way to write software components . Reflection and serialization were added to the language, as were hundreds of new classes and interfaces.
Version 1.2 ”more specifically Java 2 Platform version 1.2 ”was released in 1999. All subsequent Java releases also use the prefix Java 2 Platform. Java was now split into different branches ”
One of the major additions to the Java language under version 1.2 was the Swing packages which contain GUI components, containers, component models, and event handlers that are far more powerful, versatile, and customizable than their Java 1.1 GUI counterparts. The Swing components have access to a drag-and-drop capability added in Java 1.2. Security features were added to the language including support for X.509 certificates. The Accessibility API was added to the platform. Enhancements and additions were made to the collections, extensions, JavaBean, and input method frameworks. A number of performance enhancements to make Java programs run faster were also incorporated into the 1.2 release.
Java 1.3 and Java 1.4
The evolution of Java continued with the release of versions 1.3 and 1.4 with the development focusing on improving the performance and security of the language. Java 1.3 made enhancements to the security, networking, reflection, drag-and-drop, sound, and applet deployment capabilities. Additions were made to both the Abstract Window Toolkit (AWT) and Swing GUI libraries. The Java Naming and Directory Interface (JNDI) was added to the Java 2 platform, as was the CORBA Object Request Broker (ORB). Improvements were made to the javac , jar , rmic , jarsigner , and javaw compiler and utility tools.
Java 1.4 made additions and enhancements to the regular expressions, math, reflection, accessibility, I/O, logging, assertions, chained exceptions, preferences, and collections classes. The Java API for Extensible Markup Language (XML) processing was added to the Java 2 platform. Additional security capability was added to the Java 2 Software Development Kit (SDK) including the Java Cryptography Extension (JCE), Java Secure Socket Extension (JSSE), and Java Authentication and Authorization Service (JAAS). The Java Print Service API was introduced to the platform in version 1.4. More refinements and additions were made to the AWT and Swing GUI components including changes made to the drag-and-drop capability of Swing components. A new application-deployment technology named Java Web Start is bundled with the J2SE 1.4.0 release.
The future of Java is bright. Java is already the standard for developing Web-based, enterprise applications. It has replaced C++ as the language of choice for developing business and e-commerce programs. Java is expanding into other programming disciplines including a significant move into the scientific and engineering programming fields. It is a telling point that many high school computer classes in the U.S. are now taught in Java.