Java is an object-oriented and platform-independent programming language whose foundations were developed by Sun Microsystems in the first half of the 1990s. The syntax of Java borrows heavily from C++, although the language itself differs in many respects.
Until the introduction of Java in 1995, languages such as Eiffel and Smalltalk were mainly used in academia to teach object-oriented programming. Both of these have been heavily relegated by Java. In the commercial sector, C++ dominated object-oriented development, but this has also been replaced to a large extent by Java
Java takes a special position in the classical distinction between interpreted and compiled programming languages. The source code is compiled, but not for a specific target system. Instead, an intermediate code( bytecode) is created, which is executed by a Java virtual Machine( JVM). Therefore, in addition to the actual Java program, the Java Runtime Environment( JRE) must also be installed on each target system.
Java for object orientation
Apart from the language elements usual for programming languages (reserved words, variables, elementary data types and control structures) Java supports nearly all techniques of the object orientation: Secret principle, messages, inheritance, Polymorphie, and overloading. Explicitly not supported is multiple inheritance, which is considered overly complex and insignificant in practice. Instead, reference is made to the design pattern of interfaces.
Java covers many topics and is supplemented by a multiplicity of libraries (APIs). Therefore "Java" today often does not only designate the language itself, but serves as a generic term for all underlying technologies. These are characterized by the platform independence and the broad application spectrum of the language. Sun distinguishes thereby essentially the following ranges of topics:
- Core/Desktop includes the language core and the most important technologies around application programs for PC. The name for this area is Java 2 Platform, Standard Edition( J2SE).
- Enterprise/Server includes technologies for the development of multi-tier software systems and web services. The name for this area is Java 2 Enterprise Edition( J2EE).
- Mobile/Wireless covers technologies around small and micro devices such as cell phones and handheld computers. The name for this area is Java 2 Platform, Micro Edition( J2ME).
- Java Card targets smart cards that can run Java programs.
Contrary to the common opinion that Java is a special language for Internet applications, this technology can be used in almost all software areas. A special suitability for distributed software systems is however actually present.
The further development of Java is controlled by the standardization committee Java Community Process( JCP).