Java (software platform)

The Java technology (English Java Technology ) is an originally created by Sun (now Oracle group) developed collection of specifications that define firstly the Java programming language and on the other, different runtime environments for computer programs. These computer programs are usually written in Java.

For Java technology include the following components:

  • To formulate the Java programming language programs
  • Includes a development tool, the basic parts as a translator and libraries - the " Java Development Kit"
  • The Java Runtime Environment - a standardized software platform to run the developed programs.
  • 3.1 The name of the Java
  • 3.2 versions 3.2.1 Version 1
  • 3.2.2 Version 1.1
  • 3.2.3 Version 1.2
  • 3.2.4 Version 1.3
  • 3.2.5 Version 1.4
  • 3.2.6 Version 5.0
  • 3.2.7 Release 6
  • 3.2.8 Version 7
  • 3.2.9 Version 8

Target

With Java technology, one and the same program should be able to run on different computer systems. This platform independence is achieved in that the source code is first compiled into bytecode (short JRE Java Runtime Environment ) is translated at the start of the program in the respective machine language only on the target system by the Java runtime environment. So the bytecode works as an intermediate code between programming language and machine language.

The Java Runtime Environment must be installed on the target system. It exists for popular operating systems such as Microsoft Windows, Linux, Solaris, Mac OS X, AIX, and many others. There are also JREs not only for server and desktop operating systems, but also for many embedded systems such as mobile phones, PDAs and smart cards, as well as for other technical platforms, such as car and TV. The platform independence ends in systems for which no Java Virtual Machine exists, ie mostly older or very exotic systems.

Components

The Java technology consists of the following parts:

Java programming language

Java is an object oriented programming language and a registered trademark of Oracle. The design of the Java programming language aimed primarily at five objectives:

  • It should be a simple object-oriented, distributed and familiar programming language.
  • You should be robust and secure.
  • It should be architecture neutral and portable.
  • You should be very powerful.
  • You should be able to interpret, parallelized and dynamically bound.

Development tools for Java programs

They contain compiler to translate the source code into Java bytecode to test documentation tools, and tools to programs. Programs for the Java platform are usually created using the Java programming language. The use of other programming languages ​​is possible, such as Nice or Groovy.

Java runtime environment (platform)

The Java Runtime Environment ( JRE) is a software platform that can be performed with the programs largely independent of the underlying operating system. It defines the application programming interfaces (APIs) clearly and machine-independent and contains the Java Virtual Machine ( JVM), which is responsible for the execution of Java bytecode. For most operating systems, it is available free of charge.

Between following Java platforms are identified:

History

The original version of Java - including Oak (Object Application Kernel) called - was in a period of 18 months from spring 1991 to the summer of 1992 under the name The Green Project by Patrick Naughton, Mike Sheridan, and James Gosling, Bill Joy and nine other developers developed on behalf of the U.S. computer manufacturer Sun Microsystems. James Gosling was the main developer. A remnant from the Green Project is the Duke of Joe Palrang, which has become a well-known symbol or mascot.

The name Oak had, according to rumors, has its origin in an oak (English oak ), which stood before the window of James Gosling. Due to legal issues, the name had ( there was already a software that name ) are discarded. They decided on the name Java after a strong coffee variety that is specifically for espresso use (Java Bean ) and was drunk by the developers preferred.

The aim was not only the development of another programming language, but a complete operating system environment, including virtual CPU, for different purposes. The system should - according to legend - for example, controlling a coffee machine.

The development took place in a nondescript office building in Sand Hill Road in Menlo Park instead. During the development phase deposited there was no exchange with Sun Microsystems. In the summer of 1992, finally, the first Oak -based application was completed - " to interactive, handheld home -entertainment device controller with at animated touchscreen user interface". This technology demonstration of a touchscreen -based device control with animated graphical user interface was called * 7 ( Seven Star ).

After the screening of Star Seven, could be controlled interactively with the numerous devices, companies were from the cable television industry and attention from the The Green Project backroom project the company has first person was born. Was an office building in the 100 Hamilton Avenue in Palo Alto from the office.

As the workforce since grown from 13 to 70 employees and the time for interactive digital value-added services in the field of cable television was not yet ready, the young company was looking for new fields of activity. After a three -day meeting of John Gage, James Gosling, Bill Joy, Patrick Naughton, Wayne Rosing, and Eric Schmidt in "The Inn at Squaw Creek " at Lake Tahoe was soon clear: the Internet should be.

On the basis of the primal father of all graphical web browser, Mosaic, an extended to Java web browser was created - the WebRunner ( after the movie Blade Runner ). Later WebRunner was renamed HotJava.

In March 1995, the first alpha version ( 1.0a2 ) the Java source code was released to the public. A little later, on 23 May 1995, Java was officially unveiled to the public in the " San Jose Mercury News".

The breakthrough came with the integration of Java in the browser Netscape Navigator - sealed by a handshake between Eric Schmidt and George Paolini of Sun Microsystems, and Marc Andreessen of Netscape - by 4 clock in the morning in a room at the Sheraton -Palace Hotels near the convention center.

The company Oracle - Sun Microsystems bought in January 2010 - wants to develop Java technology, together with the Java Community Process towards free and open source software ( OpenJDK ) on.

The name Java

The name for the new technology was quickly found: most programmers preferred the street café "Java City - roasters of fine coffee" in Menlo Park, not far from their office building, where they are from time to time during the lunch break went to after dinner coffee to drink. The most popular type of coffee of programming called " Java". This name was therefore used for the new technology. Even the name "Java Beans" is derived from this event.

Sun Microsystems used in marketing and in -house development sometimes different version numbers. So the Java version 1.2 was not marketed as a 1.2, but as " Java 2 Platform ". Internal remained the version numbers in the 1.x schema, so that product names such as "Java 2 Standard Edition 1.4.2 " revealed. With Java 6, this discrepancy has been abandoned, at least in the product name. The product is now called " Java Standard Edition 7"; However, the internal version number is still 1.7.

Versions

Version 1

The 1996 published version of Java 1.0 could a manageable set of standard packages, which quickly grew in later versions:

  • Java.lang: elementary classes, such as Object and system
  • Java.io: Input and Output
  • Java.util such as data structures and a Date class
  • Java.net: simple Internet protocol classes
  • Java.awt: basic classes for graphical user interfaces
  • Java.applet: a class for the known applets

Although this new language was intended primarily for developing applets, they already offered in the initial release options, which moreover reached far.

Version 1.1

A language extension was made in 1997 with Java 1.1, the syntax has been extended to the concept of inner classes. This was accompanied by a reconstruction of the event handling towards a callback system with so-called listeners.

In addition, the standard library has been extended:

  • Classes for internationalization ( so-called " resource bundle " )
  • Java components, the Java Beans
  • The JAR file format for packaging of whole libraries or applications as a Java Archive
  • Classes for numerical computation (BigInteger and BigDecimal )
  • A protocol for distributed programs, the Remote Method Invocation ( RMI)
  • Object serialization for persistent storage of objects, such as files
  • JDBC for accessing relational databases
  • Security functions, such as for signing JAR files and applets

In the versions from 1.1.5 Swing was already available - but counted this framework is not yet the official Java. Was particularly problematic that swing with the release of 1.2 had a different package structure and a port made ​​it necessary.

Version 1.2

Java 2 (JDK 1.2) appeared in 1998. Upon publication of this version of Sun spoke of Java 2, accordingly called the packets Java 2 Platform, Standard Edition ( J2SE) and instead of Java Development Kit (JDK ) states that the Java 2 Software Development Kit ( J2SDK ).

In this version, Just- In-Time compilers were introduced; this accelerated the execution of Java programs significantly. ( For each operating system will have its own runtime library required.) The programs but are still only " pre-compiled ". The speed of compiled programs is not fully achieved.

Again, the standard library has been extended:

  • New interfaces and implementations for collections, ie data structures such as lists, sets and maps ( associative lists)
  • The wrapper library Swing
  • New graphics capabilities (Java 2D)
  • Drag and drop functionality
  • Enhanced audio functions
  • A CORBA interface
  • Weak references - these are references that do not prevent the garbage collector from removing the referenced object

In 1998 also the Java Community Process (JCP ) has been introduced. This organization controls since changes to the Specification of Java. For proposed changes to a Java Specification Request (JSR ) is created that iterates through various phases, before the changes in Java finding their way.

Version 1.3

Appeared in 2000 J2SE 1.3 as the next evolutionary step, the API has been extended again. It was also introduced an engine with hotspot optimization. This means that frequently used code fragments ( hotspots) from the bytecode at runtime into native machine code to be translated. Result was a significant increase in performance.

API extensions:

  • Java Naming and Directory Interface ( JNDI )
  • Java Sound API

Version 1.4

It was not until 2002 with the release of J2SE 1.4 language itself again expanded, which was last done in version 1.1. A support for assertion has been added. The API has been expanded, which should in particular facilitate server programming.

The latest version of Java 1.4 Java SE 1.4.2_42 was. End of Life - the end of public update - J2SE 1.4 reached in October 2008.

See also: servlet, Java Web Start, JSP, J2EE, J2ME, Javadoc, Blackdown

Version 5.0

Java 5.0 was released on September 30, 2004 as the successor to version 1.4. The apparent jump from version 1.x to 5 is the introduction of a so-called product number. This product numbers are supposed to represent in the future versions of Java on the outside. Internally the same product version should be named after the well-known, traditional version number. Java 5.0 therefore corresponds to the internal version number 1.5, Java 6.0, corresponding to 1.6, etc. The "2" for example, J2EE thus also disappeared from version 5.0 of the Java Enterprise Edition and is referred to as JEE 5.

In Version 5, there were significant changes to the language as well as further API extensions:

  • Generic Types ( Generics )
  • Simplified syntax for iterating over collections, maps and arrays
  • Autoboxing / unboxing - (ie implicit conversion of primitive data types, into objects and back )
  • Metadata with annotations
  • Syntactic support for enumerated values ​​( " enumeration " )
  • Support for variable argument lists of methods
  • Static import of classes
  • Advanced Look and Feel
  • Utility classes for concurrent programming in the new package java.util.concurrent
  • Covariant result types in methods

The first for Java 5 ( "Tiger " release ) planned expansions of Ein-/Ausgabefunktionen (JSR 203) were only to Java 6 ( "Mustang " release ) and early 2006, then to Java 7 ( "Dolphin" Release ) shifted.

The latest version of Java SE 5 was JavaSE 5.0u45. End of Life - the end of public updates - reached JavaSE 5 in October 2009.

Version 6

The Java version 6 was released on December 11, 2006. Particular attention was paid to the diagnosis, monitoring and management. Thus, a framework for collaboration with various scripting languages ​​as introduced such as PHP, Python, Ruby and JavaScript.

Other new features were improved representation of desktop applications and the integration of Java DB, a relational database implemented in Java, which is based on Apache Derby.

The published in October 2008 Update to version 6u10 did not, as usual, only bug fixes, but several changes to the JVM, did not wait for those until the release of Java 7. The key new features that have been requested in advance, included, among others:

  • A "Next Generation Java Plug-in", which offers the website owners more options for embedded applets
  • The imagined for web applications Java kernel installed when required, a minimum JVM and downloads only the required packages and local stores
  • Java quick starters, with the aid of the start time of Java applications is significantly reduced.

For a complete list and detailed descriptions of the announcement to update 10 refer to. Further improvements to the virtual machine, which were originally planned for Java 7 has been integrated into Java 6 Update 14 and 6 delivered in several updates from Java.

The last planned release of Java SE 6 was Java SE 6 Update 45, it was submitted 6 despite the announced End of Life for Java SE for February 2013, April 2013. The current version of Java EE 6 Java EE 6 Update 4 In December 2012, Oracle automatically some users began tentatively of JavaSE 6 JavaSE 7 update. For February 2013 was planned, all users of the 32 -bit version update via the auto-update mechanism on Java 7.

End of Life - the end of public updates - JavaSE 6 reached in February 2013.

Version 7

The Java version 7 was completed on 28 July 2011.

Above all existing features have been improved and expanded. These are, among others:

  • A new file system API ( NIO.2 ), which improves the speed of file system operations, better options for copying and moving files provides, contains methods for traversing directory structures and the reliable detection and treatment of symbolic links allowed.
  • Libraries for network protocols Stream Control Transmission Protocol ( SCTP ​​), Sockets Direct Protocol ( SDP) and TLS 1.2. Furthermore, on Windows, if possible now uses a more current IPv6 network stack.
  • Update of Unicode support Unicode 6.0 ( Unicode 4.0 in Java 6), the database interface JDBC and the locale parameter ( locale ), which is now the standard IETF BCP 47 and UTR 35 implemented.
  • The Java 6 Update 10 introduced look-and -feel nimbus is an integral part of the specification.
  • A XRender pipeline for Java 2D, which speeds up the display of graphical elements on Linux.
  • Improved support for Java bytecode for dynamic languages.
  • Small language enhancements as part of Project Coin, as the usability of strings in switch statements.

For a list and detailed descriptions of the implemented with Java 7 features are taken from the documentation of the OpenJDK project Java 7.

The current version of Java 7 update 51

End of Life - the end of public update - is planned for Java 7 March 2015.

Version 8

With Java 8 were originally submitted 7 new features planned for Java and incorporated synergies arising from the purchase of Java by Oracle. Among other things, the following changes were implemented:

  • Integration of Oracle JRockit functionality such as improved contended locking into OpenJDK
  • Virtual extension methods and Closures (Project Lambda )
  • Enabled by Project Lambda extensions of the Collections API
  • New Date and Time API similar Joda Time
  • Improvements in garbage collection, reflection, Collections, Generics and Annotations
  • Other smaller language enhancements such as annotations for Java types
  • Various improvements in Security
  • Various performance improvements, especially with regard to parallelization
  • Method implementation in interfaces " Default Interface "

Java 8 has been released on 18 March 2014.

License

On 13 November 2006 Sun announced that by the end of the second quarter of 2007, the complete Java technology is to be published under the terms of the GPL version 2. On 8 May 2007 informed you that this was done for the majority of the art.

A problem for developers of free software existed until then that Java was free, but did not meet the guidelines for free software. Problems arose in this context especially when building programs " non-free " classes from Sun were used can not use the free Java compiler or Java runtime environments. Users of the free JVMs were forced in these cases, to resort to the JVM from Sun. In this context (Java Trap ) was also spoken by the " Java Trap ".

Dedicated developers have responded and developed a considerable amount of free software available for interpretation, compilation and execution of Java programs, such as GNU Classpath, GNU Compiler for Java, coffee, Apache Harmony or IcedTea.

However, the licensing terms for Oracle's Java Compatibility Kit ( JCK ) by the Apache Software Foundation and the Linux Standard Base workgroup were perceived as a deliberate prevention of alternative implementations, which led, inter alia, to the exclusion of Java from the current standard LSB 4.1.

Applications

Java finds its use, for example, in the following areas:

  • In Inter-/Intranet as a server-side service in the form of an application server ( such as Apache Tomcat, JBoss, Glassfish,, and more. )
  • In Inter-/Intranet as client-side application as a Java applet or Rich Internet Application, for example by JavaFX.
  • For the creation of platform-independent desktop applications ( known examples of such B are the development platforms Netbeans and Eclipse).
  • Applications on smart cards (so-called Java Cards ).
  • For applications on mobile phones based on custom Java versions such as JavaME or Dalvik.
  • As an embedded Java in so-called embedded systems, that is, to computers that are integrated into devices and control them. These include control mechanisms for machines, lifts, domestic appliances, and consumer electronics.
  • As a real-time system ( using Java Real Time), for example, traffic control systems.

Criticism

Java has fallen several times since 2012 due to vulnerabilities in the headlines. Although Java provides mainly due to its design in a virtual machine some safety advantages over directly exported programming languages ​​, but these security technologies may be able to be bypassed in case of errors in the virtual machine or in the class library. Again, for clarity: Direct executed programming languages ​​( without virtual machine) does not provide this safety precautions and are thus maximum uncertain. A downloaded from the Internet Java program is subject to security restrictions by the virtual machine; other programming languages ​​usually are no restrictions - striking: "A wall that is not there, has no security vulnerabilities. "

In August 2012, for example, appeared on a publicly available exploit the Internet, bypassing all the sandboxing and other security technologies from Java, calling them simply shuts down. A few days later this exploit ( CVE: 2012-4681 ) was integrated into numerous exploit framework, including in Metasploit and Blackhole. Oracle then issued an emergency update, experts found but also in the patched versions of Java vulnerabilities.

On 10 January 2013, the renowned computer magazine c't was for safety reasons a recommendation to uninstall the Java plug-ins out, when using Internet Explorer even to completely uninstall Java. On January 11, 2013, the BSI joined this recommendation.

With the unscheduled or early Java updates 11 to 13 safety problems were solved according to Oracle. The BSI was then clear for the use of Java.

432519
de