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 Resources