Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 
Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Objektorientierte Beziehungsfragen
7 Ausnahmen müssen sein
8 Äußere.innere Klassen
9 Besondere Typen der Java SE
10 Generics<T>
11 Lambda-Ausdrücke und funktionale Programmierung
12 Architektur, Design und angewandte Objektorientierung
13 Komponenten, JavaBeans und Module
14 Die Klassenbibliothek
15 Einführung in die nebenläufige Programmierung
16 Einführung in Datenstrukturen und Algorithmen
17 Einführung in grafische Oberflächen
18 Einführung in Dateien und Datenströme
19 Einführung ins Datenbankmanagement mit JDBC
20 Einführung in <XML>
21 Testen mit JUnit
22 Bits und Bytes und Mathematisches
23 Die Werkzeuge des JDK
A Java SE-Paketübersicht
Stichwortverzeichnis


Download:

- Beispielprogramme, ca. 35,4 MB


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 1 Java ist auch eine Sprache
Pfeil 1.1 Historischer Hintergrund
Pfeil 1.2 Warum Java gut ist – die zentralen Eigenschaften
Pfeil 1.2.1 Bytecode
Pfeil 1.2.2 Ausführung des Bytecodes durch eine virtuelle Maschine
Pfeil 1.2.3 Plattformunabhängigkeit
Pfeil 1.2.4 Java als Sprache, Laufzeitumgebung und Standardbibliothek
Pfeil 1.2.5 Objektorientierung in Java
Pfeil 1.2.6 Java ist verbreitet und bekannt
Pfeil 1.2.7 Java ist schnell – Optimierung und Just-in-time-Compilation
Pfeil 1.2.8 Das Java-Security-Modell
Pfeil 1.2.9 Zeiger und Referenzen
Pfeil 1.2.10 Bring den Müll raus, Garbage-Collector!
Pfeil 1.2.11 Ausnahmebehandlung
Pfeil 1.2.12 Angebot an Bibliotheken und Werkzeugen
Pfeil 1.2.13 Einfache Syntax der Programmiersprache Java
Pfeil 1.2.14 Java ist Open Source
Pfeil 1.2.15 Wofür sich Java weniger eignet
Pfeil 1.2.16 Java im Vergleich zu anderen Sprachen *
Pfeil 1.2.17 Java und das Web, Applets und JavaFX
Pfeil 1.2.18 Features, Enhancements (Erweiterungen) und ein JSR
Pfeil 1.2.19 Die Entwicklung von Java und seine Zukunftsaussichten
Pfeil 1.3 Java-Plattformen: Java SE, Java EE, Java ME und Java Card
Pfeil 1.3.1 Die Java SE-Plattform
Pfeil 1.3.2 Java für die Kleinen
Pfeil 1.3.3 Java für die ganz, ganz Kleinen
Pfeil 1.3.4 Java für die Großen
Pfeil 1.3.5 Echtzeit-Java (Real-time Java)
Pfeil 1.4 Die Installation der Java Platform, Standard Edition (Java SE)
Pfeil 1.4.1 Die Java SE von Oracle
Pfeil 1.4.2 Download des JDK
Pfeil 1.4.3 Java SE unter Windows installieren
Pfeil 1.4.4 JDK/JRE deinstallieren
Pfeil 1.4.5 JDK unter Linux installieren
Pfeil 1.4.6 JDK unter Max OS X installieren
Pfeil 1.5 Das erste Programm compilieren und testen
Pfeil 1.5.1 Compilertest
Pfeil 1.5.2 Ein Quadratzahlen-Programm
Pfeil 1.5.3 Der Compilerlauf
Pfeil 1.5.4 Die Laufzeitumgebung
Pfeil 1.5.5 Häufige Compiler- und Interpreter-Probleme
Pfeil 1.6 Entwicklungsumgebungen im Allgemeinen
Pfeil 1.6.1 Die Entwicklungsumgebung Eclipse
Pfeil 1.6.2 NetBeans von Oracle
Pfeil 1.6.3 IntelliJ IDEA
Pfeil 1.6.4 Ein Wort zu Microsoft, Java und zu J++, J#
Pfeil 1.7 Eclipse im Speziellen
Pfeil 1.7.1 Eclipse entpacken und starten
Pfeil 1.7.2 Das erste Projekt anlegen
Pfeil 1.7.3 Verzeichnisstruktur für Java-Projekte *
Pfeil 1.7.4 Eine Klasse hinzufügen
Pfeil 1.7.5 Übersetzen und ausführen
Pfeil 1.7.6 Projekt einfügen, Workspace für die Programme wechseln
Pfeil 1.7.7 Plugins für Eclipse
Pfeil 1.8 NetBeans im Speziellen
Pfeil 1.8.1 NetBeans-Bundles
Pfeil 1.8.2 NetBeans installieren
Pfeil 1.8.3 NetBeans starten
Pfeil 1.8.4 Ein neues NetBeans-Projekt anlegen
Pfeil 1.8.5 Ein Java-Programm starten
Pfeil 1.9 Zum Weiterlesen
 

Zum Seitenanfang

1.3Java-Plattformen: Java SE, Java EE, Java ME und Java Card Zur vorigen ÜberschriftZur nächsten Überschrift

Die Java-Plattform besteht aus Projekten, die es erlauben, Java-Programme auszuführen. Im Moment werden vier Plattformen unterschieden: Java SE, Java ME, Java Card und Java EE.

 

Zum Seitenanfang

1.3.1Die Java SE-Plattform Zur vorigen ÜberschriftZur nächsten Überschrift

Die Java Platform, Standard Edition (Java SE) – früher J2SE genannt – ist eine Systemumgebung zur Entwicklung und Ausführung von Java-Programmen. Java SE enthält alles, was zur Entwicklung von Java-Programmen nötig ist. Obwohl die Begrifflichkeit etwas unscharf ist, lässt sich die Java SE als Spezifikation verstehen und nicht als Implementierung. Damit Java-Programme übersetzt und ausgeführt werden können, müssen aber ein konkreter Compiler, Interpreter und die Java-Bibliotheken auf unserem Rechner installiert sein. Oracle bietet auf der Webseite http://www.oracle.com/technetwork/java/javase/downloads/index.html ein JDK an, das die Standardimplementierung der Java SE für Windows, Solaris OS und Linux ist. Das freie und mittlerweile unter der GPL stehende OpenJDK ist die Referenzimplementierung, aber nicht die Version, die der Benutzer direkt von der Oracle-Website bekommt. Es spielt in diesem Buch nur eine untergeordnete Rolle, genauso wie die alternativen Implementierungen Apache Harmony und GNU Classpath. Auch gibt es verschiedene Laufzeitumgebungen, doch uns interessiert im Folgenden nur die JVM von Oracle.

Versionen der Java SE

Am 23. Mai 1995 stellte damals noch Sun Java erstmals der breiten Öffentlichkeit vor. Seitdem ist viel passiert, und in jeder Version erweiterte sich die Java-Bibliothek. Dennoch gibt es von einer Version zur nächsten kaum Inkompatibilitäten, und fast zu 100 % kann das, was unter Java n übersetzt wurde, auch unter Java n+1 übersetzt werden – nur selten gibt es Abstriche in der Bytecode-Kompatibilität.[ 37 ](Die Seite http://tutego.de/go/migratingtojava5 zeigt auf, wie Walmart der Umstieg auf Java 5 gelang – relativ problemlos: »[…] the overall feeling is that a migration to Java 1.5 in a production environment can be a mostly painless exercise.« )

Version

Datum

Einige Neuerungen oder Besonderheiten

1.0

Januar 1995

Erste Version. Folgende 1.0.x-Versionen lösen diverse Sicherheitsprobleme.

1.1

Februar 1997

Neuerungen bei der Ereignisbehandlung, beim Umgang mit Unicode-Dateien (Reader/Writer statt nur Streams), außerdem Datenbankunterstützung via JDBC sowie innere Klassen und eine standardisierte Unterstützung für Nicht-Java-Code (nativen Code)

1.2

November 1998

Es heißt nun nicht mehr JDK, sondern Java 2 Software Development Kit (SDK). Swing ist die neue Bibliothek für grafische Oberflächen, und es gibt eine Collection-API für Datenstrukturen und Algorithmen.

1.3

Mai 2000

Namensdienste mit JNDI, verteilte Programmierung mit RMI/IIOP, Sound-Unterstützung

1.4

Februar 2002

Schnittstelle für XML-Parser, Logging, neues IO-System (NIO), reguläre Ausdrücke, Assertions

5

September 2004

Das Java-SDK heißt wieder JDK. Neu sind generische Typen, typsichere Aufzählungen, erweitertes for, Autoboxing, Annotationen.

6

Ende 2006

Web-Services, Skript-Unterstützung, Compiler-API, Java-Objekte an XML-Dokumente binden, System Tray

7

Juli 2011

kleine Sprachänderungen, NIO2, erste freie Version unter der GNU General Public License (GPL)

8

März 2014

Sprachänderungen Lambda-Ausdrücke, Stream-API

9

März 2017*

Modularisierung von Anwendungen

10

2019?

Value-Types und 64-Bit-Arrays sind angedacht.

* http://openjdk.java.net/projects/jdk9

Tabelle 1.1Neuerungen und Besonderheiten der verschiedenen Java-Versionen

Die Produktzyklen waren in der Vergangenheit relativ konstant, auch wenn sie sich von Java 6 auf Java 7 und von Java 7 auf die Version 8 auf zwei Jahre erhöhten. Gründe für die Verzögerung von Java 7 waren a) der Aufkauf von Sun durch Oracle, b) die Umstellung auf die Open-Source-Lizenz GPL und c) die Entwicklung von JavaFX, in die viel Energie investiert wurde und wegen der Java 8 verschoben wurde, da sich das Java-Team mehr Zeit im Bereich Sicherheit nehmen wollte.

Oracle und Sun waren sehr lange konservativ darin, das Bytecodeformat zu ändern, sodass eine ältere JVM im Prinzip Programme einer neuen Java-Version ausführen konnte. Aber gerade in den letzten Versionen Java 7 und Java 8 gab es doch einige Neuerungen, die die Aufwärtskompatibilität brechen; eine JVM der Version 7 kann also keine Programme mehr ausführen, die ein Java 8-Compiler übersetzt hat.

Codenamen und Namensänderungen

Mit Java 5 entfiel das Präfix »1.« in der Versionskennung des Produkts. Es heißt also Java 5 statt Java 1.5 und Java 8 statt Java 1.8; in den Entwickler-Versionen bleibt die Schreibweise mit der »1.« aber weiterhin gültig.[ 38 ](Siehe dazu http://docs.oracle.com/javase/1.5.0/docs/relnotes/version-5.0.html. ) Auch das Anhängsel ».0« für die Hauptversionen und die Unterversionen ist verschwunden – es bleiben ganze Zahlen mit Updates. Schlussendlich fiel auch die »2« aus den in Java 1.2 eingeführten Begriffen J2SE, J2ME und J2EE heraus; es heißt aktuell Java SE, Java ME und Java EE. Früher vergab Sun auch Codenamen, wie Tiger für Java 5, doch das ist Vergangenheit.

 

Zum Seitenanfang

1.3.2Java für die Kleinen Zur vorigen ÜberschriftZur nächsten Überschrift

Die Java Platform, Micro Edition (Java ME) ist eine Umgebung für kompakte tragbare Computer, also PDAs, Organizer und Telefone. Java ist heutzutage auf fast jedem Handy zu finden, und Oracle spricht von 3 Milliarden Java-fähigen Telefonen.[ 39 ](Quelle: https://www.java.com/en/about) Die Bedeutung der Java ME schwindet jedoch, da moderne Geräte mittlerweile so viel Power haben, dass sie eine normale JVM laufen lassen können.

Kräftigen Seitenwind bekommt Java ME von Android, einem Projekt, das von Google initiiert wurde und nun in den Händen der Open Handset Alliance liegt. Android ist nicht nur eine Softwareplattform, sondern auch ein Betriebssystem. Statt einer JVM mit standardisiertem Java-Bytecode nutzt Android einen völlig anderen Bytecode und führt ihn auf der Dalvik Virtual Machine aus. Die immer noch laufende Klage von Oracle gegen Google gibt einen Eindruck von der Wichtigkeit des mobilen Markts. Die Java ME hat gegen Android in dem Bereich der Smartphones aber verloren, und die Bedeutung wird weiter abnehmen.

 

Zum Seitenanfang

1.3.3Java für die ganz, ganz Kleinen Zur vorigen ÜberschriftZur nächsten Überschrift

Mit Java Card definiert Oracle einen Standard für Java-ähnliche Programme auf Chipkarten (Smartcards). Der Sprachstandard von Java ist allerdings etwas eingeschränkt. Die Ausgabe des Java-Compilers ist ein Bytecode, der dem Standard-Bytecode ähnlich ist. Dieser Bytecode wird dann auf der Java Card Virtual Machine ausgeführt, die auf der Smartcard (etwa einer SIM-Karte) Platz findet. Da es jedoch ganz andere Speicheranforderungen an so ein winziges System gibt, ist die Laufzeitumgebung nicht mit der Standard-JVM vergleichbar. Es gibt keine Threads und keine automatische Speicherbereinigung. Auch bei den Bibliotheken gibt es Unterschiede. Nicht nur, dass viele bekannte Klassen fehlen, umgekehrt gehören starke kryptografische Algorithmen mit zum Paket, und natürlich gehört auch ein Paket dazu, mit dem die Kartenanwendung mit der Außenwelt kommunizieren kann. Seit dem Standard Java Card 3.0 gibt es eine Classic Edition und eine Connected Edition, wobei die Connected Edition viele Einschränkungen nicht mehr hat; so gibt es nun auch bei ihr Threads und automatische Speicherbereinigung.

Mit dem Standard Java Card können viel einfacher Programme auf Karten unterschiedlicher Hersteller gebracht werden – sofern die Karte dem Standard entspricht. Vorher war das immer etwas schwierig, da jeder Kartenhersteller unterschiedliche APIs und Tools verwendete und die Karte in der Regel in einem C-Dialekt programmiert wurde. Java Card wird bei Oracle unter Java ME geführt, wo auch Java TV gelistet ist.

 

Zum Seitenanfang

1.3.4Java für die Großen Zur vorigen ÜberschriftZur nächsten Überschrift

Die Java Platform, Enterprise Edition (Java EE) ist ein Aufsatz für die Java SE und integriert Pakete, die zur Entwicklung von Geschäftsanwendungen (Enterprise-Applikationen genannt) nötig sind. Dazu zählen etwa die Komponententechnologie der Enterprise JavaBeans (EJBs), JSP/JSF/Servlets für dynamische Webseiten, die JavaMail-API und weitere. Die Referenz-Implementierung für Java EE ist GlassFish.

Interessant ist zu beobachten, dass im Laufe der letzten Jahre Teile aus der Java EE in die Java SE gewandert sind, etwa JAX-WS (Web-Services), JNDI (Verzeichnisservice), JAXB (Objekt-XML-Mapping). Das zeigt, dass die APIs heute zum Standard gehören und nicht mehr nur zwingend zu großen Geschäftsanwendungen.

 

Zum Seitenanfang

1.3.5Echtzeit-Java (Real-time JavaZur vorigen ÜberschriftZur nächsten Überschrift

Zwar laufen bei der Java ME Programme auf Geräten mit reduziertem Speicher und eingeschränkter Prozessor-Leistungsfähigkeit, das sagt aber nichts über die Reaktionsfähigkeit der Laufzeitumgebung auf externe Ereignisse aus. Wenn ein Sensor in der Stoßstange einen Aufprall meldet, darf die Laufzeitumgebung keine 20 ms in einer Speicheraufräumaktion festhängen, bevor das Ereignis verarbeitet wird und der Airbag aufgeht. Um diese Lücke zu schließen, wurde schon früh – im Jahr 2001 – von der Java-Community die JSR 1, »Real-time Specification for Java« (kurz RTSJ), definiert. (Mittlerweile JSR 282 für den Nachfolger RTSJ 1.1.)

Echtzeit-Anwendungen zeichnen sich dadurch aus, dass es eine maximale deterministische Wartezeit gibt, die das System zum Beispiel bei der automatischen Speicherbereinigung blockiert, um etwa auf Änderungen von Sensoren zu reagieren – ein Echtzeitsystem kann eine Antwortzeit garantieren, etwas, was eine normale virtuelle Maschine nicht kann. Denn nicht nur die Zeit für die automatische Speicherbereinigung ist bei normalen Laufzeitumgebungen eher unbestimmt, auch andere Aktionen unbestimmter Dauer kommen dazu: Lädt Java eine Klasse, dann zur Laufzeit. Das kann zu beliebig vielen weiteren Abhängigkeiten und Ladezyklen führen. Bis also eine Methode ausgeführt werden kann, können Hunderte von Klassendateien nötig sein, und das Laden kann unbestimmt lange dauern.

Mit Echtzeitfähigkeiten lassen sich auch Industrieanlagen mit Java steuern und lässt sich Software aus dem Bereich Luft- und Raumfahrt, Medizin, Telekommunikation und Unterhaltungselektronik mit Java realisieren. Dieser Bereich blieb Java lange Zeit verschlossen und bildete eine Domäne von C(++). Damit dies in Java möglich ist, müssen JVM und Betriebssystem zusammenpassen. Während eine herkömmliche JVM auf mehr oder weniger jedem beliebigen Betriebssystem läuft, sind die Anforderungen für Echtzeit-Java strenger. Das Fundament bildet immer ein Betriebssystem mit Echtzeitfähigkeiten (Real-Time Operating System (RTOS)), etwa Solaris 10, Realtime Linux, QNX, OS-9 oder VxWorks. Darauf setzt eine Echtzeit-JVM auf, eine Implementierung der Real-Time-Spezifikation. Real-time Java (RT-Java) unterscheidet sich so auch in Details, etwa dass Speicherbereiche direkt belegt und freigegeben werden können (Scoped Memory), dass mehr Thread-Prioritäten zur Verfügung stehen oder dass das Scheduling deutlich mehr in der Hand der Entwickler liegt. Die Entwicklung ist anders, findet aber unter den bekannten Werkzeugen wie IDEs, Testtools und Bibliotheken statt. In den letzten Jahren ist es ruhig um Real-time-Java geworden.

 


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
 Zum Katalog
Zum Katalog: Java ist auch eine Insel Java ist auch eine Insel

Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?

Ihre Meinung



 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel

Java ist auch eine Insel




Zum Katalog: Java SE 9-Standard-Bibliothek

Java SE 9-Standard-Bibliothek




Zum Katalog: Professionell entwickeln mit Java EE 8

Professionell entwickeln mit Java EE 8




Zum Katalog: Entwurfsmuster

Entwurfsmuster




Zum Katalog: IT-Projektmanagement

IT-Projektmanagement




 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2017

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de