- Java was originally developed at SunMicrosystems in 1991 to provide a platform-independent programming language and operating system for consumer electronics (TV sets, toasters and VCRs).
- In syntax and execution, Java is a lot like a simplified version of C++. ("simplified" should be read in the previous sentence as "an improved"). It is a highly robust, distributed, high performance, object-oriented, multi-threaded language with all of the usual features. As such, it builds upon years of C++ development, taking the good and dispensing with the bad.
- As it so happened however, Java did not make it into the consumer electronics market. Instead it wound up in our web browsers.
- Java seemed to be a perfect fit for the web. The language itself was extremely small (as it was built to go inside toasters and alarm clocks with tiny amounts of memory). Thus it could quickly be transferred over the web.
- Further, Java was platform independent. That is, any computer with a Java virtualmachine can run a Java program. Programs can be written anywhere and be run anywhere. This is crucial because if a language can not run on any machine, it cannot be used on the web that must service every machine, language, and environmentimaginable.
- Platform independence works because Java is an interpreted rather than a compiled language. Unlike C or C++ code, when Java is compiled, it is not compiledinto platform specific machine code, but into platform independent byte code. This byte code is distributed over the web and interpreted by a virtual machine (typically built right into a web browser these days) on whichever platform it is being run. Perhaps a picture would be useful...
- Thus, as a programmer, you need only concern yourself with the generic Java programming language and compile your applications into bytecode on whatever system you are using. You can then be assured that your bytecode willbe executed correctly whether your clients are using Macs, Pcs, Unix boxes or anything else.
- Perhaps the best summary of the design goals and accomplishments of Java comes from Gary Cornell in the introduction to Core Java. In this introduction, Cornell outlines 12 design principles used in the development of the Java language. To do so, he quotes from the Java White Paper from sunsoft. I will duplicate the quotes here, but you should not consider your Java Library complete without a copy of Core Java.
Java is Simple
"We wanted to build a system that could be programmed easily without a lot of esoteric training and which leveraged today's standard practices...So even though we found that C++ was unsuitable, we designed Java as closely to C++ as possible in order to make the system more comprehensible. Java omits many rarely used, poorly understood, confusing features of C++ that, in our experience, bring more grief than benefit."
Java is Small
"Another aspect of being simple is being small. One of the goals of Java is to enable the construction of software that can run stand-alone in small machines."
Java is Object Oriented
"Simply stated, object-oriented design is a technique that focuses design on the data (= objects) and on the interfaces to it...The object-orientedfacilities of Java are essentially those of C++."
Java is Distributed
"Java has an extensive library of routines for coping with TCP/IP protocols like HTTP and FTP. Java applications can open and access objects across the net via URLs with the same ease as when accessing a local file system."
Java is Robust
"Java is intended for writing programs that must be reliable in a variety of ways. Java puts a lot of emphasis on early checking for possible problems, later dynamic (run time) checking, and eliminating situations that are error prone."
Java is Secure
"Java is intended to be used in networked/distributed environments. Towards that end, a lot of emphasis has been placed on security. Java enables the construction of virus-free, tamper-free systems."
Java is Architecture Neutral
"The Java compiler [generates] bytecode instructions which have nothing to do with a particular computer architecture. Rather, they are designed to be both easy to interpret on any machine and easily translated into native machine code on the fly."
Java is Portable
"Unlike C and C++, there are no 'implementation-dependent' aspects of the specification. [For example,] the sizes of primitive data types are specified, as is the behavior of arithmetic on them"
Java is Interpreted
"The Java interpreter can execute Java bytecode directly on any machine to which the interpreter has been ported. [Thus] the development process can be much more rapid and exploratory."
Java is High Performance
"While the performance of interpreted bytecode is usually more than adequate, there are situations where higher performance is required. The bytecode can be translated on the fly into machine code for the particular CPU the application is running on."
Java is Multithreaded
"The benefits of multithreading are better interactive responsiveness and real-time behavior. [This is because a program can do more than one thing at a time]"
Java is Dynamic
"In a number of ways, Java is a more dynamic language than C or C++. It was designed to adapt to an evolving environment...Libraries can freely add new methods and instance variables without any effect on their clients."
Introduction to Java ResourcesPrevious Page |Next Page