Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

24.09.1999

Spracherweiterungen für Java

In Vergleichen mit C wird oft das Fehlen eines Präprozessors in Java als Nachteil vermerkt. Ein Präprozessor beherrscht in der Regel die textuelle Manipulation eines Quelltextes. So kann er Makrodefinitionen expandieren oder Teile des Textes ausblenden. Der Präprozessor wird dem eigentlichen Java-Compiler vorgeschaltet, dem er puren Java-Code liefert. Präprozessoren können sich in Entwicklungsumgebungen als Problem entpuppen, wenn ein syntaxgesteuerter Java-Editor Präprozessoranweisungen als Fehler erkennt.

Java-Präprozessoren können weit über die reine Makroverarbeitung und bedingte Übersetzung hinausgehen, wie der Extensible Java Pre-Processor EPP unter http://www.etl.go.jp/epp zeigt. EPP beherrscht verschiedene Erweiterungen der Java-Sprache wie Operator-Überladung, Mehrfachvererbung oder parametrisierte Klassen ähnlich den Templates in C++.

Eine Erweiterung des Sprachumfangs von Java bieten neben Präprozessoren auch veränderte Compiler. Solche Java-Ergänzungen stammen vornehmlich aus dem akademischen Bereich. Aus Sicht von Sprachentwicklern ist Java eine vergleichsweise altmodische Sprache, was die verwendeten Konzepte der Objektorientierung angeht.

Java-Varianten wie Jump (http://ourworld.compuserve.com/homepages/DeHoeffner/jump.htm) oder Pizza (http://wwwipd.ira.uka.de/pizza) erweitern die Sprache um modernere Konzepte. Beispiele sind Operatorüberladung, Klassen-Templates wie in C++ oder Code-Blöcke als Datentyp ähnlich wie in Smalltalk. Während die oben genannten Präcompiler ähnliche Mechanismen durch Transformation von Quellcode implementieren, handelt es sich bei Jump oder Pizza aber um vollständige Compiler mit JVM-Bytecode als Ausgabe.

Es ist aber nicht sichergestellt, daß diese Compiler jeweils mit der offiziellen Sun-Technologie Schritt halten. Andererseits wurde Pizza von Sun mit Hardware- und Geldmitteln unterstützt, um herauszufinden, wie sich ein zukünftiges Java am besten durch parametrisierte Klassen erweitern läßt. Die so entstandenen Mechanismen könnten in zukünftigen Java-Versionen standardisiert werden.