Java’s first decade has proven it to be remarkably adaptable. Originally conceived as an embedded language for consumer devices, Java emerged from Sun Microsystems in 1995 as the programming language for Web browsers. It then morphed into the leading tool for business computing and serious application development -- in many ways the successor to both Cobol and C++.
Today, Java is the de facto platform for enterprise-scale applications, owing to its proven scalability and the extraordinary range of services it provides. In addition, the Java language has numerous properties that appeal to developers, such as object orientation, an expressive syntax similar to C and C++, few unsafe constructs, and built-in garbage collection. As a result, Java -- as both a language and an execution environment -- is likely to remain the platform of choice for enterprise business applications for many years.
To attain this central position in the enterprise, Java underwent extensive transformation. To remain at the center, it will need to continue adapting to new technologies and responding to serious challenges, both from within and without the Java community.
One key advantage Java offers developers is that it eliminates many practices common to C and C++ that can lead to inadvertent errors. The Java run time takes care of memory management and reduces the need to manipulate data items at low levels, but it does so at the cost of some performance.
Programs written with early releases of Java were significantly slower than their C and C++ counterparts. Because many Java programs of that period were applets designed to run in browsers, however, this limitation was more annoying than critical. Still, as Java moved into enterprise environments, the performance question became more serious.
This issue has been addressed in two ways. Moore’s Law is one; with processor performance doubling roughly every 18 to 24 months, the delay caused by Java’s semi-interpreted code has quickly become much less visible. The other speed boost came from improvements in just-in-time compiler technology. Early JITs generated code of middling performance quality, but JIT enhancements driven by academic research, investments from IBM and Sun, and the work of Swedish wunderkinder at Appeal Virtual Machines (acquired by BEA in 2002) resulted in better optimization and zippy execution environments.
Today, benchmarks show that Java has closed most of the gap between itself and its C and C++ forebears. Garbage collection -- the process of reclaiming unused memory -- remains one of the key factors working against parity in performance. The benefits of this feature, however -- notably, more reliable code -- are great enough that most shops are willing to accept this small penalty.
Click for larger view.
When it was first released, Java’s mantra of portability was, “Write once, run everywhere.” The more common experience that developers encountered, though, led to an alternative version: “Write once, debug everywhere.”