What does Java Technology have to offer | Past, Present and Future
Although the Java technology is large in some respects, the Java programming language is at the heart of it all. Java is an object-oriented programming language that includes significant improvements over other popular programming languages such as C, C++, BASIC, Pascal, and SmallTalk. Java is both powerful and simple, which are two words you rarely hear in the same sentence when talking about programming. Perhaps the most significant feature of Java is that it is cross-platform, which means that programmers do not have to worry about targeting their development efforts to specific types of computers and operating systems. This feature is extremely significant. No prior programming language has even come close to making cross-platform computing a reality.
Not too long after the introduction of Java in late 1995, Sun Microsystems cofounder Bill Joy described Java as follows:
Java is just a small, simple, safe, object-oriented, interpreted or dynamically optimized, byte-coded, architecture-neutral, garbage-collected,
multithreaded programming language with a strongly typed exception-handling mechanism for writing distributed, dynamically extensible programs.
Keep in mind that this summary mentions practically every major benefit of Java.
Java History: Java was developed independently of the web and went through several stages of metamorphosis before reaching its current status of a programming language. Bill Joy is believed to have been the person to conceive of the idea of a programming language that later became Java. In the late 1970's, Joy wanted to design a language that combined the best features of MESA and C. In an attempt to rewrite the UNIX operating system in the 1980's, Joy decided that C++ was inadequate for the job. It was this desire to invent a better programming tool that motivated Bill Joy in 1991 to create an object oriented language[1] that would run on a virtual machine.
Stealth Project: In January of 1991, Bill Joy, James Gosling, Mike Sheradin, Patrick Naughton met in Aspen, Colorado for the first time to discuss the ideas for the stealth project which was to become Java. The goal of the Stealth Project was to do research in the area of application of computers in the consumer electronics market. The vision of the project was to develop "smart" consumer electronic devices that could all be centrally controlled and programmed from a handheld-remote-control-like device. According to Gosling, the goal was to build a system that would let us do a large, distributed, heterogeneous network of consumer electronic devices all talking to each other. With this goal in mind they began working on the Java Virtual Machine. Members of the project divided the tasks amongst themselves. Mike Sheradin was to focus on business development, Patrick Naughton was to begin work on the graphics system, and James Gosling was to identify the proper programming language for the project.
From C++, Oak to Java
He began with C++, but soon after was convinced that C++ was inadequate for this particular project. His extensions and modifications to C++, were the first steps towards the development of an independent language that would fit the project objectives. He named the language "Oak" while staring at an oak tree outside his office window. The name "Oak" was later dismissed due to a patent search which determined that the name was copyrighted and used for another programming language. According to Gosling, "the Java development team discovered that Oak was the name of a programming language that predated Sun's language, so another name had to be chosen." It is surprisingly difficult to find a good name for a programming language, as the team discovered after many hours of brainstorming. Finally, inspiration struck one day during a trip to the local coffee shop Gosling recalls. Others have speculated that the name Java came from several individuals involved in the project: James gosling, Arthur Van hoff, Andreas Bechtolsheim. There were several criteria that Oak had to meet in order to satisfy the project objective given the consumer electronics target market. Given the wide array of manufacturers in the market, Oak would have to be
completely platform independent, and
function seamlessly regardless of the type of CPU in the device.
For this reason, Oak was designed to be an interpreted language, since it would be practically impossible for a complied version to run on all available platforms.
To facilitate the job of the interpreter, Oak was to be converted to an intermediate "byte-code" format which is then passed around across the network,
and interpreted dynamically. In addition, reliability was of great concern. A consumer electronics device that would have to be "rebooted" periodically was not acceptable. Another important design objective for Oak would then have to be high reliability by allowing the least amount of programmer-introduced errors.
This was the motivation for several important modification to C++.
OOP Concepts built into Java
The concepts of
multiple-inheritance and
operator overloading
were identified as sources of potential errors, and eliminated in Oak.
Furthermore, in contrast to C++, Oak included implicit garbage collection, thereby providing efficient memory utilization and higher reliability.
Finally, Oak attempted to eliminate all unsafe constructs used in C and C++ by only providing data structures within objects without the use of pointers.
Another essential design criterion was security because Oak-based devices were to function in a network and often exchange code and information.
Inherently, security is of great concern in a networked environment, especially in an environment as network dependent as the conceived Oak-based systems.
For this reason, pointers were excluded in the design of Oak and this would theoretically eliminate the possibility of malicious programs accessing arbitrary addresses in memory.
If Oak were to be widely accepted and used within the consumer electronics industry, it would have to be simple and compact, so that the language could be mastered relatively easily, and development would not be excessively complex. In April of 1991, Ed Frank, a SPARCstation 10 architect, joined the green project. He led the project's hardware development effort. In two months, they developed the first hardware prototype known as star-seven (*7). The name *7 was somewhat demonstrative of the project's objective. In the meantime, Gosling was beginning work on the Oak interpreter. By August of 1991, the team had a working prototype of the user interface and graphical system which was demonstrated to Sun's co-founders Scott McNealy and Bill Joy. Development of Oak, the green OS, the user interface, and the hardware continued through the summer of 1992.
In September of that year, the prototype was complete and demonstrated to McNealy and Joy.
The prototype was a PDA-like (personal digital assistant) device that Gosling described as a "handheld remote control." Patrick Naughton proclaimed that "in 18 months, we did the equivalent of what 75-people organizations at Sun took three years to do:
an operating system,
a language,
a toolkit,
an interface,
a new hardware platform."
While impressive, the market was not conducive to this type of technology, as later demonstrated by Apple's Newton PDA. The Green project's business planner,
Mike Sheradin, and hardware designer, Ed Frank had envisioned a technology similar to that of Dolby Labs which would become the standard for the consumer electronics products.
As you progress through the course, the benefits that Java brings to application development will be discussed.
History and Evolution of Java
To fully understand Java, one must understand the reasons behind its creation, the forces that shaped it, and the legacy that it inherits. Like the successful computer languages that came before, Java is a blend of the best elements of its rich heritage combined with the innovative concepts required by its unique mission. While the remaining modules of this course describe the practical aspects of Java including its syntax, key libraries, and applications, this module explains how and why Java came about, what makes it so important, and how it has evolved over the years. Although Java has become inseparably linked with the online environment of the Internet, it is important to remember that Java is first and foremost a programming language. Computer language innovation and development occur for two fundamental reasons:
To adapt to changing environments and uses
To implement refinements and improvements in the art of programming
As you will see, the development of Java was driven by both elements in nearly equal measure.
[1]Object-oriented: Object-oriented programming (OOP) treats software as a collection of self-contained "objects" that bundle data (properties) and actions (methods). Imagine each object as a mini-appliance with buttons and dials (methods) to control its internal state (properties). Objects interact with each other to achieve program goals, mimicking how real-world things work, which can make code more organized, reusable, and easier to understand.