Java Overview and History


What is Java?

Java is an object-oriented programming language developed by Sun Microsystems that has been designed to run on any platform with a Java virtual machine. The promise of Java is "Write Once, Run Anywhere," meaning a program can be written in Java, and used on any computer running any operating system. The Java language promotes small file sizes, which makes it practical to distribute Java applications over the Internet.


Where Did It Start?

In 1991 a small team of engineers, code named "Green," at Sun Microsystems were given the simple mandate of "make something cool." After dissecting remote controls and Nintendo Game Boys, they set about developing a portable computing language that could work as an operating system for consumer electronics. Team member James Gosling dubbed the language "Oak," after the tree outside his office window. But as the Web matured, the team saw that the core values of Oak dovetailed nicely with the need for a distributed programming language for the Internet. After a little repositioning for marketing, the language was renamed Java, and offered to developers the world over for free. 

What is it For?

The idea is simple: Java technology-based software works just about everywhere -- from the smallest devices to supercomputers. Java technology components don't care what kind of computer, phone, TV, or operating system they run on. They just work, on any kind of compatible device that supports the Java platform.


Java technology is widely regarded as revolutionary, because it was designed to let computers and devices communicate with one another much more easily than ever before.


What is the Key?

Java is in reality a platform.  It is not just a programming language.  The Java Virtual Machine is a piece of software that runs or interprets the Byte Code generated by Java programs.  Once this JVM is installed on a computer (of any type or size), your Java programs can run on it.  Sun and other groups have created JVMs for a number of operating systems and devices such as hand-held computers and cell phones.

Key Points of Java



Java has been designed to be a simple language.  Though fashioned after C++, many of the aspects of C++ that often caused problems or confusion were removed.  For example, Java does not include or permit: Pointers, a goto statement, a preprocessor, multiple-ineheritance, struct and union types, and operator overloading.



Unlike C++, Java was designed to be Object-oriented from the ground up.  It provides a consistent and well document library of classes.  Though there are still fundamental data types, such as character numeric, and Boolean, most items in a Java program are objects.



Java is designed as a distributed language.  What this means is that it provides standard support for network connectivity.  While in C and C++ it is possible to write distributed programs, you need to use the API provided by the operating system to do it.  With Java, a standard set of classes is provided for this.



Java programs are compiled into a format called Byte Code, rather than native machine code (as C and C++ are).  This Byte Code is interpreted and executed by the Java Virtual Machine installed on the target computer.  This means that Java is an interpreted language.  The compilation of a Java source file creates Byte Code, which can then be executed on any machine with a JVM installed.



Having been originally designed for consumer electronics, Java started with a goal of being a robust language.  While it is impossible to stop bugs from being implemented, Java does implement features that make it hard to ignore or introduce bugs, such as: it is strongly typed, Pointers are eliminated, and exception handling.



Java implements a number security features, such as the lack of pointers, strongly type access, and proper loading of Java classes (to avoid replacements).  Java also has a configurable ‘sandbox’ to permit you to alter security settings as needed.



Java was designed as a multi-threaded language.  This means that it is capable of executing several threads of execution at the same time.  Built into the language is the ability to start and synchronize multiple threads.