But figuring out exactly what qualities have made Java so successful isn't easy. On the face of it, Java's claims of portability and device independence would seem to be key to its success, but on closer inspection, those claims don't hold much water. Rather, we believe Java's solid Internet foundation, modern design and broad adoption are what have made it the only game in town for new development.
At SunWorld '95, Sun Microsystems introduced the Java platform. Java development tools created P-code--an interim language that's converted at run-time to the local host's real executable code via a program called the JVM (Java Virtual Machine). The JVM is essentially a virtual computer that's independent of the local operating system and underlying hardware. With a few notable exceptions, Java code has fulfilled the promise of portability. Yet because of those exceptions, Java applets are usually viewed as version- and JVM-specific. Nevertheless, the overall portability and functionality of Java is unprecedented.
Simple HTML lacks the robust GUI elements that most users have come to expect, and the flexibility and extensibility that programmers require. Java addresses this by enabling a rich programming and GUI environment to be contained within the browser. Equipped with a JVM, both the browser and the Web server are enriched, while at the same time the computing environment is made more manageable; this eases application distribution and removes client configuration issues. The JVM also protects a system from malicious Java programs by restricting such a program's access to files and other local resources. Microsoft, Netscape Communications and others implement JVMs in their browsers and Web servers, greatly extending the functionality of both.
Java has become firmly entrenched in the enterprise and has evolved to meet its needs. JSP (JavaServer Pages) and EJB (Enterprise JavaBeans) technologies enhance server-side development. An application making use of EJB runs on application servers and standardizes transaction-processing development. In fostering Java, Sun has required that all Java implementations remain pure to reference implementations; Java's consistency across platforms is one of its primary values. However, Java has been plagued with interoperability issues among minor versions of the JVM, and the lack of reference implementations results in inconsistency from one vendor to another.
Sun's competitors want Java turned over to a standards body, but Sun continues to retain ownership, leading some to question Java's openness. Recently, Sun dropped out of negotiations with ECMA, a computing-standards body, to turn Java into a standard; Sun claims this move was aimed at ensuring that the language will continue to evolve. As an alternative, Sun introduced the Java Community Process (JCP) program. In June, Sun implemented the second version of JCP, which moves control of the language specification to two executive committees--but Sun still calls the shots.
While the evolution of Java is clearly tricky business, the effect Java has had is clear: It has threatened to replace entrenched languages such as C++, COBOL and Visual Basic for enterprise and commercial business-application development, and has often succeeded in doing so. Java provides true portability for Internetcentric development. It continues to evolve to provide a rich environment for developing new, highly complex applications, relegating other environments to legacy status.
-- Lori MacVittie