* 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.

* 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 occurs for two fundamental reasons:
              • To adapt to changing environments and uses
              • To implement refinements and improvements in the art of programming

* The development of Java was driven by both elements in nearly equal measure.

Java’s Lineage

# 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++.

The Birth of Modern Programming : C

* The C language shook the computer world. Its impact should not be underestimated, because it fundamentally changed the way programming was approached and thought about.
* The creation of C was a direct result of the need for a structured, efficient, high-level language that could replace assembly code when creating systems programs.
* When a computer language is designed, trade-offs are often made, such as the following:
                            - Ease-of-use versus power
                            - Safety versus efficiency
                            - Rigidity versus extensibility

* Prior to C, programmers usually had to choose between languages that optimized one set of traits or the other.

*  For example, although FORTRAN could be used to write fairly efficient programs for scientific applications, it was not very good for system code.

* And while BASIC was easy to learn, it wasn’t very powerful, and its lack of structure made its usefulness questionable for large programs.

* Assembly language can be used to produce highly efficient programs, but it is not easy to learn or use effectively. Further, debugging assembly code can be quite difficult.

* Another compounding problem was that early computer languages such as BASIC, COBOL, and FORTRAN were not designed around structured principles.

* Instead, they relied upon the GOTO as a primary means of program control.

* As a result, programs written using these languages tended to produce “spaghetti code”—a mass of tangled jumps and conditional branches that make a program virtually impossible to understand.

* While languages like Pascal are structured, they were not designed for efficiency, and failed to include certain features necessary to make them applicable to a wide range of programs.

* Just prior to the invention of C, no one language had reconciled the conflicting attributes that had dogged earlier efforts.

* Yet the need for such a language was pressing.

* By the early 1970s, the computer revolution was beginning to take hold, and the demand for software was rapidly outpacing programmers’ ability to produce it.

Invented and first implemented by Dennis Ritchie on a DEC
PDP-11 running the UNIX operating system, C was the result
of a development process that started with an older language
called BCPL, developed by Martin Richards.

C is different. It was designed, implemented, and developed by real, working programmers, reflecting the way that they approached the job of programming. Its features were honed, tested, thought about, and rethought by the people who actually used the language.

* The result was a language that programmers liked to use.
* Indeed, C quickly attracted many followers who had a nearreligious zeal for it.
* As such, it found wide and rapid acceptance in the programmer community.
* In short, C is a language designed by and for programmers.
* Java inherited this legacy.

C++ : The Next Step

* During the late 1970s and early 1980s, C became the dominant computer programming language, and it is still widely used today.
* Since C is a successful and useful language, one might ask why a need for something else existed. The answer is complexity.
* Throughout the history of programming, the increasing complexity of programs has driven the need for better ways to manage that complexity.
* C++ is a response to that need.
* To better understand why managing program complexity is fundamental to the creation of C++, consider the following.



* Approaches to programming have changed dramatically since the invention of the computer.
* For example, when computers were first invented, programming was done by manually toggling in the binary machine instructions by use of the front panel.
* As long as programs were just a few hundred instructions long, this approach worked.
* As programs grew, assembly language was invented so that a programmer could deal with larger, increasingly complex programs by using symbolic representations of the machine instructions.

* C++ was invented by Bjarne Stroustrup in 1979, while he was working at Bell Laboratories in Murray Hill, New Jersey.
* Stroustrup initially called the new language “C with Classes.”
* However, in 1983, the name was changed to C++.
* C++ extends C by adding object-oriented features.
* Because C++ is built on the foundation of C, it includes all of C’s features, attributes, and benefits.

The Stage Is Set for Java

* By the end of the 1980s and the early 1990s, object-oriented programming using C++ took hold.
* Indeed, for a brief moment it seemed as if programmers had finally found the perfect language.
* Because C++ blended the high efficiency and stylistic elements of C with the object-oriented paradigm, it was a language that could be used to create a wide range of programs.


The Creation of Java

Java was conceived by James Gosling, Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan 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 Payne, Frank Yellin, and Tim Lindholm were key contributors to the maturing of the original prototype.

By 1993, it became obvious to members of the Java design team that the problems of portability frequently encountered when creating code for embedded controllers are also found when attempting to create code for the Internet. In fact, the same problem that Java was initially designed to solve on a This realization caused the focus of Java to switch from consumer electronics to Internet programming. So, while the desire for an architecture-neutral programming language provided the initial spark, the Internet ultimately led to Java’s large-scale success.

The Java designers 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 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.

While it is true that Java was influenced by C++, it is not an enhanced version of C++. For example, Java is neither upwardly nor downwardly compatible with C++. Of course, the similarities with C++ One other point: Java was not designed to replace C++. Java was designed to solve a certain set of problems. C++ was designed to solve a different set of problems. Both will coexist for many years to come.

Related Articles