History of creation of Java Language
The birth of the Java language was preceded by a rather interesting story. In 1990, the Sun Microsystems' software developer named Patrick Naughton realized that he was tired of supporting hundreds of different software interfaces used by the company, and informed Sun Microsystems' CEO and friend Scott McNealy of his intention to move to NeXT company. McNeely, in turn, asked Naughton to make a list of the reasons for his discontent and put forward such a solution to the problems as if he was God and could fulfill anything.
Naughton, although he did not expect anyone to pay attention to his letter, nevertheless set forth his claims, mercilessly criticizing the shortcomings of Sun Microsystems, in particular, the NeWS software architecture being developed at that time. To Naughton's surprise, his letter was a success: it was sent to all the leading engineers at Sun Microsystems, who were quick to respond and express warm support to their colleague and approval of his views on the situation at Sun Microsystems. The appeal was also approved by the top management of the company, namely, Bill Joy, founder of Sun Microsystems, and James Gosling, chief of Naughton.
On the day that Naughton was supposed to leave the company, it was decided to create a team of leading developers so that they would do anything, but create something unusual.
A team of six, codenamed Green, went into unauthorized exile, plunging into the study of home appliances such as Nintendo Game Boys, remote control devices. The Green team was trying to find a means by which to establish the interaction between these devices. It soon became clear that electrical appliances such as VCRs, laser disc players, and stereo systems were all implemented on different processors. This meant that if the manufacturer wants to add additional functions or characteristics to the TV or VCR, he will be clamped within the framework of the hardware wired. This problem, combined with the limited memory of the microchips of these devices, has put forward a new approach to software programming, which was supposed to become the leading one in the consumer electronics market.
The team began to develop a new object-oriented programming language, which was named Oak, in honor of the tree growing under the Gosling window.
Soon, Sun Microsystems transformed the Green team into First Person. The new company had an interesting concept, but could not find a suitable application for it. After a series of setbacks, the situation unexpectedly changed for the company: Mosaic was announced - that was how the World Wide Web was born, from which the rapid development of the Internet began.
Naughton suggested using Oak in building Internet applications. Since Oak became a standalone product, the Oak compiler and Oak browser "WebRunner" were soon written. In 1995, Sun Microsystems decided to announce a new product, renaming it Java (the only reasonable explanation for the name is the love of programmers for coffee). When Java fell into the hands of the Internet, it became necessary to run Java applets - small programs downloaded via the Internet. WebRunner has been renamed HotJava and Netscape has come to support Java products.
A bit about Java
Software development is an extremely difficult task today. Difficulties are associated with a variety of machine architectures, operating systems, graphical shells, etc. In addition, your applications must work in distributed systems. The rapid growth of technologies related to the Internet, WWW and "e-commerce" further complicate this task. The now fashionable object-oriented approach alone does not solve these problems, moreover, it often brings new ones.
The approach proposed by Sun Microsystems, namely a Java(TM)-based programming system, has the following characteristics:
- the programming language is object-oriented, while at the same time is quite simple to learn
- application development cycle is reduced due to the fact that the system is built on the basis of the interpreter
- the application is automatically ported between multiple platforms and operating systems
- due to the built-in garbage collection system, the programmer is freed from the need for explicit memory management
- in an interactive graphic application it is possible to achieve high performance (quick response to user input) due to the multi-threading integrated into the system
- the application is easy to maintain and modify, as modules can be downloaded from the network
- applications have a built-in security system that prevents illegal access and virus penetration
Key Java properties:
Java is simple, object oriented, and familiar.
The Java system is based on a *simple* programming language, the technique of using which is close to the generally accepted one and learning which does not require significant effort.
Java as a programming language has been object oriented since its inception. In addition, the programmer from the very beginning is provided with a set of *standard* libraries that provide functionality from standard I/O and network protocols to graphical user interfaces. These libraries can easily be expanded.
Although C ++ was rejected, the syntax of the Java language is as close as possible to the syntax of C++. This makes the language familiar to a wide range of programmers. At the same time, many properties were removed from the language that make C++ unnecessarily difficult to use, not being absolutely necessary. As a result, the Java language turned out to be simpler and more organic than C++.
Reliability and safety:
Java greatly facilitates the creation of reliable software.
In addition to exhaustive verification at the compilation stage, the system provides for analysis at the execution stage.
The language itself is designed to develop the programmer’s habit of writing "correctly." The model of working with memory, which excludes the use of pointers, makes impossible a whole class of errors specific to C and C ++.
Because Java is designed to work in a distributed environment, security is becoming an extremely important issue. Security requirements define many features of both the language and the implementation of the entire system.
Architecture-Independence and Portability:
The Java compiler produces bytecodes, i.e. application modules have an architecture-independent format that can be interpreted on a wide variety of platforms. These are no longer source codes, but not yet platform-specific machine codes.
The next step is to "freeze" the standard for the format of the basic built-in data types. A program created on one platform works on all the others.
This standard is documented in the Java Virtual Machine. The standard can be implemented on any hardware and software platform that supports multi-threading.
Java Performance Advantages:
- The design of the system and the set of bytecodes of the Java virtual machine are such that they achieve high performance at the program execution stage
- for compliance with safety rules, the codes are analyzed once before the execution codes are run, at the time of such checks are no longer needed, and the codes are executed as efficiently as possible
- Working with basic types is most effective; special byte codes are reserved for operations with them
- Methods in classes do not necessarily bind dynamically
- Automatic garbage collector works as a separate background thread, without slowing down the main program operation, but at the same time ensuring timely return of free memory to the system
- The standard provides the ability to write performance-critical sections of the program in machine codes