Rheinwerk Computing < openbook >


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


Download:

- Listings, ca. 2,7 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

Pfeil1 Java ist auch eine Sprache
Pfeil1.1 Historischer Hintergrund
Pfeil1.2 Warum Java populär ist – die zentralen Eigenschaften
Pfeil1.2.1 Bytecode
Pfeil1.2.2 Ausführung des Bytecodes durch eine virtuelle Maschine
Pfeil1.2.3 Plattformunabhängigkeit
Pfeil1.2.4 Java als Sprache, Laufzeitumgebung und Standardbibliothek
Pfeil1.2.5 Objektorientierung in Java
Pfeil1.2.6 Java ist verbreitet und bekannt
Pfeil1.2.7 Java ist schnell – Optimierung und Just-in-time-Compilation
Pfeil1.2.8 Das Java-Security-Modell
Pfeil1.2.9 Zeiger und Referenzen
Pfeil1.2.10 Bring den Müll raus, Garbage-Collector!
Pfeil1.2.11 Ausnahmebehandlung
Pfeil1.2.12 Das Angebot an Bibliotheken und Werkzeugen
Pfeil1.2.13 Vergleichbar einfache Syntax
Pfeil1.2.14 Java ist Open Source
Pfeil1.2.15 Wofür sich Java weniger eignet
Pfeil1.3 Java im Vergleich zu anderen Sprachen *
Pfeil1.3.1 Java und C(++)
Pfeil1.3.2 Java und JavaScript
Pfeil1.3.3 Ein Wort zu Microsoft, Java und zu J++
Pfeil1.3.4 Java und C#/.NET
Pfeil1.4 Weiterentwicklung und Verluste
Pfeil1.4.1 Die Entwicklung von Java und seine Zukunftsaussichten
Pfeil1.4.2 Features, Enhancements (Erweiterungen) und ein JSR
Pfeil1.4.3 Applets
Pfeil1.4.4 JavaFX
Pfeil1.5 Java-Plattformen: Java SE, Jakarta EE, Java ME, Java Card
Pfeil1.5.1 Die Java SE-Plattform
Pfeil1.5.2 Java ME: Java für die Kleinen
Pfeil1.5.3 Java für die ganz, ganz Kleinen
Pfeil1.5.4 Java für die Großen: Jakarta EE (ehemals Java EE)
Pfeil1.5.5 Echtzeit-Java (Real-time Java)
Pfeil1.6 Java SE-Implementierungen
Pfeil1.6.1 OpenJDK
Pfeil1.6.2 Oracle JDK
Pfeil1.7 AdoptOpenJDK installieren
Pfeil1.7.1 AdoptOpenJDK unter Windows installieren
Pfeil1.8 Das erste Programm compilieren und testen
Pfeil1.8.1 Ein Quadratzahlen-Programm
Pfeil1.8.2 Der Compilerlauf
Pfeil1.8.3 Die Laufzeitumgebung
Pfeil1.8.4 Häufige Compiler- und Interpreter-Probleme
Pfeil1.9 Entwicklungsumgebungen
Pfeil1.9.1 Eclipse IDE
Pfeil1.9.2 IntelliJ IDEA
Pfeil1.9.3 NetBeans
Pfeil1.10 Zum Weiterlesen
 

Zum Seitenanfang

1.3    Java im Vergleich zu anderen Sprachen * Zur vorigen ÜberschriftZur nächsten Überschrift

Beschäftigen sich Entwickler mit dem Design neuer Programmiersprachen – oder Spracherweiterungen –, werden häufig andere Programmiersprachenkonstrukte auf ihre Tauglichkeit hin überprüft und dann bei Erfolg in das Konzept aufgenommen. Auch Java ist eine sich entwickelnde Sprache, die Merkmale anderer Sprachen aufweist.

 

Zum Seitenanfang

1.3.1    Java und C(++) Zur vorigen ÜberschriftZur nächsten Überschrift

Java basiert syntaktisch stark auf C(++), etwa bei den Datentypen, Operatoren oder Klammern, hat aber nicht alle Eigenschaften übernommen. In der geschichtlichen Kette wird Java gern als Nachfolger von C++ (und als Vorgänger von C#) angesehen, doch die Programmiersprache Java verzichtet bewusst auf problematische Konstrukte wie Zeiger.

Das Klassenkonzept – und damit der objektorientierte Ansatz – wurde nicht unwesentlich durch SIMULA und Smalltalk inspiriert. Die Schnittstellen (engl. interfaces), die eine elegante Möglichkeit der Klassenorganisation bieten, sind an Objective-C angelehnt – dort heißen sie Protocols. Während Smalltalk alle Objekte dynamisch verwaltet und in C++ der Compiler alles zu einem großen Binärklumpen verbindet, ist in Java jeder Typ eine eigene Klassendatei. Alle Klassen – optional auch von einem anderen Rechner über das Netzwerk – lädt die JVM zur Laufzeit. Selbst Methodenaufrufe sind über das Netz möglich.[ 25 ](Diese Möglichkeit ist unter dem Namen RMI (Remote Method Invocation) bekannt. Bestimmte Objekte können über das Netz miteinander kommunizieren. ) In der Summe lässt sich sagen, dass Java bekannte und bewährte Konzepte übernimmt und die Sprache sicherlich keine Revolution darstellt; moderne Skriptsprachen sind da weiter und übernehmen auch Konzepte aus funktionalen Programmiersprachen.

 

Zum Seitenanfang

1.3.2    Java und JavaScript Zur vorigen ÜberschriftZur nächsten Überschrift

Obacht ist beim Gebrauch des Namens »Java« geboten. Nicht alles, was Java im Wortstamm hat, hat tatsächlich mit Java zu tun: JavaScript hat keinen großen Bezug zu Java – bis auf Ähnlichkeiten bei den imperativen Konzepten. Die Programmiersprache JavaScript wurde 1995 vom Netscape-Entwickler Brendan Eich entwickelt. 1997 hat die European Computer Manufacturers Association Teile von JavaScript im Standard ECMA-262 festgeschrieben und die Programmiersprache ECMAScript genannt. Die aktuelle Version ist ECMAScript 2019. Die bekannten Browserhersteller Google (Chrome), Microsoft (Edge) und Mozilla Foundation (Firefox) implementieren ECMAScript, fügen aber in der Regel Erweiterungen hinzu.[ 26 ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_Next_support_in_Mozilla)

Java und ECMAScript/JavaScript unterscheiden sich in vielen Punkten, genauso wie Schlüssel und Schüsselbein wenig miteinander zu tun haben. Die Klassennutzung ist mit einem Prototyp-Ansatz in JavaScript völlig anders als in Java, und JavaScript lässt sich ebenso zu den funktionalen Programmiersprachen zählen, was Java nun wahrlich nicht ist.

 

Zum Seitenanfang

1.3.3    Ein Wort zu Microsoft, Java und zu J++ Zur vorigen ÜberschriftZur nächsten Überschrift

In der Anfangszeit verursachte Microsoft einigen Wirbel um Java. Mit Visual J++ (gesprochen »Jay Plus Plus«) bot Microsoft schon früh einen eigenen Java-Compiler an (als Teil des Microsoft Development Kits) und mit der Microsoft Java Virtual Machine (MSJVM) eine eigene schnelle Laufzeitumgebung. Das Problem war nur, dass Dinge wie RMI und JNI absichtlich fehlten – JNI wurde 1998 nachgereicht. Entgegen allen Standards führte der J++-Compiler neue Schlüsselwörter wie multicast und delegate ein. Außerdem fügte Microsoft einige neue Methoden und Eigenschaften hinzu, zum Beispiel J/Direct, um der plattformunabhängigen Programmiersprache den Windows-Stempel zu verpassen. Mit J/Direct konnten Programmierer aus Java heraus direkt auf Funktionen der Win32-API zugreifen und damit reine Windows-Programme in Java programmieren. Durch Integration von DirectX sollte die Internet-Programmiersprache Java multimediafähig gemacht werden. Das führte natürlich zu dem Problem, dass Applikationen, die mit J++ erstellt wurden, nicht zwangsläufig auf anderen Plattformen liefen. Sun klagte gegen Microsoft.

Da es Sun in der Vergangenheit finanziell nicht besonders gut ging, pumpte Microsoft im April 2004 satte 1,6 Milliarden US-Dollar in die Firma. Microsoft erkaufte sich damit das Ende der Kartellprobleme und Patentstreitigkeiten. Dass es bis zu dieser Einigung nicht einfach gewesen war, zeigen Aussagen von Microsoft-Projektleiter Ben Slivka über das JDK bzw. die Java Foundation Classes, man müsse sie »bei jeder sich bietenden Gelegenheit anpissen« (»pissing on at every opportunity«).[ 27 ](Würden wir nicht gerade im westlichen Kulturkreis leben, wäre diese Geste auch nicht zwangsläufig unappetitlich. Im alten Mesopotamien steht »pissing on« für »anbeten«. Da jedoch die E-Mail nicht aus dem Zweistromland kam, bleibt die wahre Bedeutung wohl unserer Fantasie überlassen. )

Im Januar 2004 beendete Microsoft die Arbeit an J++, denn die Energie floss in das .NET-Framework und die .NET-Sprachen. Am Anfang gab es mit J# eine Java-Version, die Java-Programme auf der Microsoft .NET-Laufzeitumgebung CLR ausführte, doch Anfang 2007 wurde auch J# eingestellt. Das freie IKVM.NET (http://www.ikvm.net) ist eine JVM für .NET und verfügt über einen Übersetzer von Java-Bytecode nach .NET-Bytecode, was es möglich macht, Java-Programme unter .NET zu nutzen. Das ist praktisch, denn für Java gibt es eine riesige Anzahl von Programmen, die somit auch für .NET-Entwickler zugänglich sind. Bedauerlicherweise wird das Projekt nicht weiterentwickelt.

Microsoft hat sich lange Zeit aus der Java-Entwicklung nahezu vollständig zurückgezogen. Es gab nur eher überschaubare Projekte wie den Microsoft JDBC Driver for SQL Server. Das Verhältnis ist heute auch deutlich entspannter, und Microsoft geht wieder einen Schritt auf Java zu. Zu erkennen ist das am Beitritt zur Jakarta EE Working Group und an der Unterstützung von Java-Applikationen in der Windows-Cloud Azure.[ 28 ](https://azure.microsoft.com/de-de/develop/java/) Vielleicht gratuliert Microsoft irgendwann einmal Oracle, wie es auch Linux zum 20. Geburtstag gratuliert hat.[ 29 ](http://www.youtube.com/watch?v=ZA2kqAIOoZM)

 

Zum Seitenanfang

1.3.4    Java und C#/.NET Zur vorigen ÜberschriftZur nächsten Überschrift

Da C# kurz nach Java und nach einem Streit zwischen Microsoft und Sun erschien und die Sprachen zu Beginn syntaktisch sehr ähnlich waren, könnte leicht angenommen werden, dass Java Pate für die Programmiersprache C# stand.[ 30 ](In Microsoft-Dokumenten findet sich über Java kein Wort. Dort wird immer nur davon gesprochen, dass C# andere Sprachen, wie etwa C++, VB und Delphi, als Vorbilder hatte. ) Doch das ist lange her. Mittlerweile hat C# eine so starke Eigendynamik entwickelt, dass Microsofts Programmiersprache viel innovativer ist als Java. C# ist im Laufe der Jahre komplex geworden, und Microsoft integriert ohne großen Abstimmungsprozess Elemente in die Programmiersprache, wo in der Java-Welt erst eine Unmenge von Personen diskutieren und abstimmen. Zeitweilig macht es den Eindruck, als könne Java nun auch endlich das, was C# bietet. So gesehen, profitiert Java heute von den Erfahrungen aus der C#-Welt. Bei den Lambda-Ergänzungen von Java 8 wurde auch ausdrücklich die Übernahme der C#-Syntax hervorgehoben,[ 31 ](http://mail.openjdk.java.net/pipermail/lambda-dev/2011-September/003936.html) anders als bei der Microsoft-Dokumentation, die jegliche Ähnlichkeit zwischen C# und Java leugnet.

Während Oracle für Java eine Aufteilung in das Java SE für die »allgemeinen« Programme und das Jakarta EE (ehemals Java EE) als Erweiterung für die »großen« Enterprise-Systeme vornimmt, fließt bei Microsoft alles in ein Framework, genannt .NET. Das ist natürlich größer als das Java-Framework, da sich mit .NET alles programmieren lässt, was Windows hergibt. Diese Eigenschaft fällt im Bereich GUI besonders auf, und das plattformunabhängige Java gibt dort weniger her.

Eine neue Richtung entsteht durch .NET Core, eine quelloffene, an das »große« .NET-Framework angelehnte Alternative, die für Windows, macOS und Linux x64 bereitsteht. Alle Änderungen an der Codebasis sind unter https://github.com/dotnet/core sichtbar. Da sich bestehende .NET-Anwendungen nicht ohne Anpassungen migrieren lassen, hat .NET Core noch nicht so richtig an Fahrt aufgenommen.

Etwas zynisch lässt sich bemerken, dass Java vielleicht nur deshalb noch lebt, weil Microsoft mit .NET ausschließlich auf Windows gesetzt hat, die Welt aber etwas anderes wollte. Mit .NET Core hat Microsoft zu lange gewartet, weil es nicht andere Plattformen stärken wollte.

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java ist auch eine Insel Java ist auch eine Insel

Jetzt Buch bestellen


 Buchempfehlungen
Zum Rheinwerk-Shop: Captain CiaoCiao erobert Java

Captain CiaoCiao erobert Java




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Objektorientierte Programmierung

Objektorientierte Programmierung




 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2021

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



Cookie-Einstellungen ändern