Summary
Highlights
Simon Ritter, who started at Sun Microsystems in 1996, quickly recognized Java's potential and delivered his first presentation on the language in 1997. He highlights that Java was not revolutionary but rather a holistic approach, combining the best features from various programming languages and platforms to create a practical tool for developers.
Java's design was influenced by several earlier programming languages. Lisp (1962) introduced garbage collection and early just-in-time compilation concepts. Simula 67 was the first object-oriented language, influencing Java's core object-oriented principles. C (1973) provided Java's familiar syntax, intended to ease the transition for C programmers. Pascal (1978) introduced the concept of p-code executed by a virtual machine, a precursor to Java's JVM. The emergence of the World Wide Web in 1991, with browsers like Mosaic and Netscape Navigator, created the perfect environment for Java's widespread adoption.
In 1991, a group of engineers at Sun Microsystems, seeking the "next big thing," formed the Green Project away from the main campus. James Gosling developed a new programming language called Oak (named after an oak tree outside his window), which was designed to be simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, high-performance, multi-threaded, and dynamic. The initial target for Oak was a sophisticated remote control device called the Star 7 (similar to an iPad), and it featured an intelligent assistant that evolved into Java's mascot, Duke.
In 1994, John Gage demonstrated WebRunner, a web browser created in Java by the Green Team, at a TED Talk. The ability to manipulate a molecule on a webpage demonstrated dynamic functionality previously unseen in static web browsers, capturing significant attention. This led to the official release of Java in 1995, along with the HotJava browser, under the slogan 'Write Once, Run Anywhere.' A crucial agreement with Netscape Navigator, the most popular browser at the time, to integrate Java further propelled its initial success. The name 'Java' was chosen from a list of alternatives after 'Oak' was found to be trademarked.
Sun Microsystems created Javasoft to license Java and launched JavaOS, a Java-based operating system, and the JavaStation, a thin-client intended to replace dumb terminals. However, due to technological limitations, particularly insufficient memory, the JavaStation failed to gain traction. Microsoft's decision to integrate Java into Internet Explorer 3 in 1996 marked a significant step, but a subsequent lawsuit by Sun against Microsoft due to incompatible Java implementations highlighted the importance of standardization. Ritter also humorously details the inconsistent and often confusing evolution of Java's version numbering schemes over the years.
Growing demand for openness led Sun to establish the Java Community Process (JCP) in 1999, creating Java Specification Requests (JSRs) that defined specifications, reference implementations, and Technology Compatibility Kits (TCKs). This ensured compatibility across different Java implementations. The Apache Harmony project (2005) attempted an open-source Java implementation but faced challenges with obtaining the TCK from Sun. This ultimately pushed Sun to open-source Java in 2006, leading to the creation of OpenJDK. By 2011, almost all of Java's source code was open, and major contributors like IBM joined the OpenJDK project.
Java found applications in numerous unexpected places: Java Card, a highly constrained version for smart cards (e.g., Oyster cards, SIM cards), Java chips that moved the JVM into hardware for performance, the Java ring for identification, the KVM (Kilobyte Virtual Machine) for Palm Pilots, the Amazon Kindle's UI, and the Java Pen. Java also played a significant role in mobile phones (Java ME), interactive TV (Java TV), Blu-ray players, and even pseudo-JVMs for devices like Lego Mindstorms, showcasing its adaptability and 'write once, run anywhere' philosophy.
Ritter provides a rapid overview of key features introduced in various Java Development Kit (JDK) versions, including inner classes, JDBC, RMI, JIT compilation (JDK 1.1), collections framework (JDK 1.2), assert keyword, regular expressions (JDK 1.4), generics, annotations, autoboxing, enums, and concurrency utilities (JDK 5/Tiger). Later versions brought 'project coin' (small language changes) in JDK 7, lambdas and streams in JDK 8, and modularity in JDK 9. The presentation concludes by emphasizing Java's strong community, represented by JavaOne conferences, Java User Groups, and Java Champions, highlighting that Java is a thriving ecosystem, not just a platform.