Java BuzzWords

No discussion of the genesis of java is complete without a look at the java buzzwords. Although the fundamental forces that necessitated the invention of java are portability and security, other factors also played an important role in molding the final form of the language, the key considerations were summed up by the java team in the following list of buzzwords:

Simple:
We wanted to build a system that could be programmed easily without a lot of esoteric training and which leveraged today's standard practice. Most programmers working these days use C, and most programmers doing object-oriented programming use C++. 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.

Object Oriented:
This is, unfortunately, one of the most overused buzzwords in the industry. But object-oriented design is very powerful because it facilitates the clean definition of interfaces and makes it possible to provide reusable "software ICs."
Further Details on Object Oriented 

Network:
Java has an extensive library of routines for coping easily with TCP/IP protocols like HTTP and FTP. This makes creating network connections much easier than in C or C++.

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 (runtime) checking, and eliminating situations that are error prone.
Further Details on Robust

Secure:
Java is intended for use in networked/distributed environments. Toward that end, a lot of emphasis has been placed on security. Java enables the construction of virus-free, tamper-free systems.
Further Details on Secure

Architectural Neutral:
Java was designed to support applications on networks. In general, networks are composed of a variety of systems with a variety of CPU and operating system architectures.
Further Details on Architectural Neutral

Portable:
Being architecture neutral is a big chunk of being portable, but there's more to it than that. Unlike C and C++, there are no "implementation dependent" aspects of the specification. 
Further Details on Portability

Interpreted:
Java bytecodes are translated on the fly to native machine instructions (interpreted) and not stored anywhere. And since linking is a more incremental and lightweight process, the development process can be much more rapid
Further Details on Intrepreted

High Performance:
While the performance of interpreted bytecodes is usually more than adequate, there are situations where higher performance is required. The bytecodes can be translated on the fly (at runtime) into machine code for the particular CPU the application is running on. 
Further Details on High Performance 

Multi Threaded:
There are many things going on at the same time in the world around us. Multithreading is a way of building applications with multiple threads  
Further Details on Multi Threaded 

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. For example, one major problem with C++ in a production environment is a side-effect of the way that code is implemented.
Further Details on Dynamic

Distributed:
Java is designed for the distributed environment of the Internet, because it handles TCP/IP protocols. In fact, accessing a resource using a URL is not much different from accessing a file. The original version of Java (Oak) included features for intraaddress- space messaging.
Further Details on Distributed