© Excellent backgrounds/Shutterstock.com
Java Magazin
Vom JDK 1.0 bis Java 9

20 Jahre Java - Rückblick in 22 Listings

Zu so einem runden Geburtstag gehört einfach ein Rückblick dazu. Java hat sich in den zwei Jahrzehnten seit seiner Entstehung stark verändert. Dieser Artikel riskiert einen solchen nostalgischen Rückblick auf die verschiedenen Releases mit ihren Eigenheiten, Stärken und Schwächen. Er spiegelt meine persönlichen Erlebnisse und Schwerpunkte durch die Jahre wider und erhebt ausdrücklich keinen Anspruch auf Vollständigkeit.

Arno Haase


Bei einigen der Codebeispiele sprengt eine detaillierte Erklärung den Rahmen dieses Rückblicks. Das sollte niemanden verschrecken – in diesen Fällen kann man die Listings einfach als historische Kuriosität betrachten. Und wenn das eine oder andere Feature die Neugier weckt, gibt es in jedem Fall eine detaillierte Dokumentation im Internet.

Die Anfänge – JDK 1.0

Java war ursprünglich als Sprache für das Web gedacht – es entstand in einer Zeit, wo Browser als neues Betriebssystem diskutiert wurden und überhaupt alle Welt von portablen Clientanwendungen träumte.

Zunächst waren Applets stark im Fokus von Java (Listing 1) – das Ausführen von beliebigen Anwendungen im Browser. Deshalb gab es von Anfang an auch den SecurityManager-Mechanismus, mit dem man Java-Anwendungen in einer Sandbox („Sandkiste“) mit konfigurierbaren Berechtigungen laufen lassen konnte (Listing 2).

Listing 1

Listing 2SecurityManager security = System.getSecurityManager();if (security != null) { // Beispielhaft überprüfen, ob eine Berechtigung zum Lesen // dieser speziellen System-Property vorliegt security.checkPropertyAccess ("my.special.property");}

Außerdem konnte Java von Anfang an Multi-Thread­ing. Das wirkt heute selbstverständlich, aber Mitte der neunziger Jahre war es etwas ziemlich Besonderes, betriebssystemunabhängig mit Threads programmieren zu können. Java hatte von Anfang an mit dem Schlüsselwort synchronized auch Mechanismen zum Koordinieren von Threads als Teil der Sprache selbst.

Als Collection-Klassen gab es im Wesentlichen Vector und Hashtable. Beide waren als Ausdruck der Multi-Threading-Euphorie der Zeit voll synchronisiert (und sind es wegen der Rückwärtskompatibilität immer noch, was sie weitgehend zur Bedeutungslosigkeit verdammt hat). Der Umgang mit Collections war ziemlich spröde (Listing 3) – ein Blick auf den Code hilft dabei, Dinge wie Generics, vereinfachte for-Schleifen-Syntax, Typinferenz und ähnlichen später hinzugekommenen syntaktischen Zucker zu würdigen. Das Iterieren über einen Vector erfolgte über eine Enumeration, das Iterator-Interface kam erst später dazu.

Listing 3// Collections in Java 1.0// Vector als einzige Collection-// KlasseVector v = new Vector(); v.addElement ("Happy");v.addElement ("birthday");v.addElement ("Java!"); // Enumeration statt IteratorEnumeration en = v.elements (); while (en.hasMore...

Java Magazin
Vom JDK 1.0 bis Java 9

20 Jahre Java - Rückblick in 22 Listings

Zu so einem runden Geburtstag gehört einfach ein Rückblick dazu. Java hat sich in den zwei Jahrzehnten seit seiner Entstehung stark verändert. Dieser Artikel riskiert einen solchen nostalgischen Rückblick auf die verschiedenen Releases mit ihren Eigenheiten, Stärken und Schwächen. Er spiegelt meine persönlichen Erlebnisse und Schwerpunkte durch die Jahre wider und erhebt ausdrücklich keinen Anspruch auf Vollständigkeit.

Arno Haase


Bei einigen der Codebeispiele sprengt eine detaillierte Erklärung den Rahmen dieses Rückblicks. Das sollte niemanden verschrecken – in diesen Fällen kann man die Listings einfach als historische Kuriosität betrachten. Und wenn das eine oder andere Feature die Neugier weckt, gibt es in jedem Fall eine detaillierte Dokumentation im Internet.

Die Anfänge – JDK 1.0

Java war ursprünglich als Sprache für das Web gedacht – es entstand in einer Zeit, wo Browser als neues Betriebssystem diskutiert wurden und überhaupt alle Welt von portablen Clientanwendungen träumte.

Zunächst waren Applets stark im Fokus von Java (Listing 1) – das Ausführen von beliebigen Anwendungen im Browser. Deshalb gab es von Anfang an auch den SecurityManager-Mechanismus, mit dem man Java-Anwendungen in einer Sandbox („Sandkiste“) mit konfigurierbaren Berechtigungen laufen lassen konnte (Listing 2).

Listing 1

Listing 2SecurityManager security = System.getSecurityManager();if (security != null) { // Beispielhaft überprüfen, ob eine Berechtigung zum Lesen // dieser speziellen System-Property vorliegt security.checkPropertyAccess ("my.special.property");}

Außerdem konnte Java von Anfang an Multi-Thread­ing. Das wirkt heute selbstverständlich, aber Mitte der neunziger Jahre war es etwas ziemlich Besonderes, betriebssystemunabhängig mit Threads programmieren zu können. Java hatte von Anfang an mit dem Schlüsselwort synchronized auch Mechanismen zum Koordinieren von Threads als Teil der Sprache selbst.

Als Collection-Klassen gab es im Wesentlichen Vector und Hashtable. Beide waren als Ausdruck der Multi-Threading-Euphorie der Zeit voll synchronisiert (und sind es wegen der Rückwärtskompatibilität immer noch, was sie weitgehend zur Bedeutungslosigkeit verdammt hat). Der Umgang mit Collections war ziemlich spröde (Listing 3) – ein Blick auf den Code hilft dabei, Dinge wie Generics, vereinfachte for-Schleifen-Syntax, Typinferenz und ähnlichen später hinzugekommenen syntaktischen Zucker zu würdigen. Das Iterieren über einen Vector erfolgte über eine Enumeration, das Iterator-Interface kam erst später dazu.

Listing 3// Collections in Java 1.0// Vector als einzige Collection-// KlasseVector v = new Vector(); v.addElement ("Happy");v.addElement ("birthday");v.addElement ("Java!"); // Enumeration statt IteratorEnumeration en = v.elements (); while (en.hasMore...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang