Java is related to C++, which is a direct decendent of C. Much of the character of Java is inherited from these two languages. From C, java derives its syntax. Many of java’s object-oriented features were influenced by C++. In fact, several of Java’s defining characteristics come from of are responses to its predecessors. Moreover, the creation of java was deeply rooted in the process of refinement and adaptation that has been occurring in computer programming languages for the past three decades. For these reasons, this section reviews the sequence of events and forces that led up to java. As you will see, each innovation in languages design was driven by the need to solve a fundamental problem that the preceding languages could not solve. Java is no exception.
James Gosling, Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan conceived Java at Sun Microsystems, Inc. in 1991. It took 18 months to develop the first working version. This language was initially called “Oak” but was renamed “Java” in 1995. Between the initial implementation of Oak in the fall of 1992 and the public announcement of Java in the spring of 1995, many more people contributed to the design and evolution of the language. Bill Joy, Arthur van Hoff, Jonathan Payane, Frank Yellin, and Tim Lindholm were Key contributors to the maturing of the original prototype.
Somewhat surprisingly, the original impetus for java was not the Internet! Instead, the primary motivation was the need for a platform-independent (that is, architecture-neutral) language that could be used to create software to be embedded in various consumer electronic devices, such as microwave ovens and remote controls. As you can probably guess, many different types of CPUs are used as controllers.
The trouble with C and C++(and most other languages) is that they are designed to be compiled for a specific target. Although it is possible to compile a C++ program for just about any type of CPU, to do so requires a full C++ compiler targeted for that CPU. The problem is that compilers are expensive and time- consuming to create. An easier - and more cost – efficient – solution was needed. In an attempt of find such a solution, Gosling and others began work on a portable, platform-independent language that could be used to produce code that would run on a variety of CPUs under differing environments. This effort ultimately led to the creation of Java.
Most programmers learn early in their careers that portable programs are as elusive as they are desirable. While the quest for a way to create efficient, portable (plat form - independent) programs is nearly as old as the discipline of programming itself, it had taken a back seat to other, more pressing problems. Further, because much of the computer world had divided itself into the three competing camps of Intel, Macintosh, and Unix, most programmers stayed within their fortified boundaries, and the urgent need for portable code was reduced. However, with the advent of the Internet and the Web, the old problem of portability returned with a vengeance. After all, the Internet consists of a diverse, distributed universe populated with many types of computers, operating systems, and CPUs. Even though many types of platforms are attached to the Internet, users would like them all to be able to run the same program. What was once an irritation but low-priority had become a high-profile necessity.
As mentioned earlier, Java derives much of its character from C and C++. This is by intent. The java designer knew that using the familiar syntax of C and echoing the object-oriented features of C++ would make their language appealing to the legions of experienced C/C++ programmers. In addition to the surface similarities, Java shares some of the other attributes that helped make C and C++ Successful. First, Java was designed, tested, and refined by real, working programmers. It is a language grounded in the needs and experiences of the people who devised it. Thus, Java is also a programmer’s language. Second. Java is cohesive and logically consistent. Third, except for those constraints imposed by the Internet environment, java gives you, the programmer, full control. If you program well, your programs reflect it. If you program poorly, your programs reflect that, too. Put differently, java is not a language with training wheels. It is a language for professional programmers.
As mentioned at the start of this article, computer languages evolve for two reasons: to adapt to changes in environment and to implement advances in the art of programming. The environmental change that prompted java was the need for platform-independent programs destined for distribution on the Internet. However, java also embodies changes in the way that people approach the writing of programs. Thus, java is not a language that exists in isolation. Rather, it is the current instance of an ongoing process begun many years ago. This fact alone is enough to ensure java a place in computer language history. Java is to Internet programming what C was to systems programming: a revolutionary force that will change the world.