Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

KABA Experimentelle Weiterentwicklung der

Ähnliche Präsentationen


Präsentation zum Thema: "KABA Experimentelle Weiterentwicklung der"—  Präsentation transkript:

1 KABA Experimentelle Weiterentwicklung der
Programmiersprache Java zu Kaba Ein Projekt unter Leitung von Prof. Dr. Horst Hansen Stefan Gehrmann Frank Schubert Denis Gotthans Matthias Rieke Matthias Brzesowsky Andreas Gohr Einleitung Sicheres Java Typensystem E-JAVA Fazit

2 Gliederung Einleitung Vorstellung der behandelten Themen Fazit
Vorgeschlagene Themen Entwicklungsumgebung Vorstellung der behandelten Themen Sicheres Java Typensystem Europäisches JAVA Fazit Einleitung Sicheres Java Typensystem E-JAVA Fazit

3 Vorgeschlagene Themen
Sicheres Rechnen in Java Get/Set Methoden durch Schlüsselworte Trennung von Schnittstelle und Implementierung Neue Threads Rechnen mit physikalischen Einheiten Unveränderbare Objekte Methodenredefinition in Objekten Sicheres Rechnen: Integer-Überläufe durch Exceptions melden Get/Set: ermöglicht standardisierten Zugriff auf Attribute der Objekte Interface-Code Trennung wie bei C++ (.h und .cpp) Neue Threads: Das unabhängige Konzept von Objekten und Threads sollte aufgehoben werden – wegen zu hohem Aufwand abgelehnt Typensystem: Variablen sollen neben einem Wert auch eine Einheit haben der mit verrechnet wird Final: Inhalte von als final deklarierten Objekte sollen nicht mehr verändert werden können, abgelehnt weil keine Zeit Methodenredefinition: Während der Laufzeit sollen Methoden von Objekten verändert werden können, wegen komplexität abgelehnt Einleitung Sicheres Java Typensystem E-JAVA Fazit

4 Entwicklungsumgebung Projektserver
Standort FHTW Projektlabor VG 220 Debian GNU/Linux SSH Zugang für Projektteilnehmer Sourcen von Kaffe und Jikes RVM Die Sourcen der Sun VM haben wir leider nicht kompiliert bekommen Einleitung Sicheres Java Typensystem E-JAVA Fazit

5 Entwicklungsumgebung BerliOS
Service von Fraunhofer Fokus (GMD) Webbasierte Umgebung Mailingliste CVS Server Dokumentationsverwaltung Aufgabenverwaltung Downloads Plattform zur Unterstützung von OpenSource Entwicklungen, basiert auf Sourceforge Code Wie haben vor allem Mailingliste, Dokumentationsverwaltung und CVS Server verwendet Einleitung Sicheres Java Typensystem E-JAVA Fazit

6 Sicheres Java Problem: Fehlerhafte Addition:
MAX_INTEGER + 1 = MIN_INTEGER Ziel: MAX_INTEGER + 1  OverflowException Einleitung Sicheres Java Typensystem E-JAVA Fazit

7 Sicheres Java Lösungsansatz I Datentyp ohne Wertebereichseinschränkung
z.B. BigInteger, BigDecimal Vorteil: schnell implementiert Nachteil: sehr langsam Einleitung Sicheres Java Typensystem E-JAVA Fazit

8 Sicheres Java Lösungsansatz IIa Auslesen des Overflow Flags der CPU
Vorrausetzung: Rechenoperation in Assembler Notwendig: JNI – Java Native Interface Vorteil: schnell Nachteil: plattformabhängig Einleitung Sicheres Java Typensystem E-JAVA Fazit

9 Sicheres Java Lösungsansatz IIb
Implementieren der Lösung IIa direkt in VM An KaffeVM versucht Trotz Teilerfolgen an Komplexität der VM gescheitert Einleitung Sicheres Java Typensystem E-JAVA Fazit

10 Sicheres Java Lösungsansatz III Rechenoperation atomisieren
+1; prüfen ob MAX_INTEGER erreicht: Ja  Exception; Nein  weiter addieren Vorteil: komplett in JAVA implementierbar Nachteil: langsam Einleitung Sicheres Java Typensystem E-JAVA Fazit

11 Sicheres Java Einleitung Sicheres Java Typensystem E-JAVA Fazit

12 Rechnen mit phys. Einheiten
v= 36km/2h = 5 m/s Konzept: Abbildung im Rechner mit dualem Typsystem möglich, mit implementierungsspezifischem und semantischem Anteil, Notation von Berechnungen als Ausdrücke Implementierungsmöglichkeiten: Erweiterung der Sprache, Änderung VM Klassenbibliothek Inline-Skriptsprache Beinhaltet verschiedenste Erweiterungen zu Java, Typensystem ist nur ein Teil davon Das Typensystem ist sehr einfach zu erweitern -> Einführen von preussischen Meilen in 2 Zeilen Einleitung Sicheres Java Typensystem E-JAVA Fazit

13 Klassenbibliothek J.A.D.E.
Java Addition to Default Environment Freie (LGPL) Java Bibliothek Physikalisches Einheitensystem Bekannte Einheiten bereits implementiert Automatische Umrechnung zwischen verschiedenen Einheiten Beinhaltet verschiedenste Erweiterungen zu Java, Typensystem ist nur ein Teil davon Das Einheitensystem ist sehr einfach zu erweitern -> Einführen von preussischen Meilen in 2 Zeilen Einleitung Sicheres Java Typensystem E-JAVA Fazit

14 J.A.D.E. Beispiel Geschwindigkeitsberechnung:
Quantity weg = Quantity.valueOf(„36 km"); Quantity zeit = Quantity.valueOf(„2 h"); Quantity erg = weg.divide(zeit); System.out.println(erg); Gibt die Geschwindigkeit mit der Einheit in m/s aus: 5.0 m/s toString() gibt standardmäßig in SI Einheiten aus, man kann aber auch angeben in welcher Einheit ausgegeben werden soll Einleitung Sicheres Java Typensystem E-JAVA Fazit

15 Skriptsprache Lua Ursprünglich zum Handling kompl. Konfigurationsdateien Moderne, prozedurale Sprache ähnlich Javascript mit komfortablen Möglichkeit zur Datenbeschreibung In Entwicklung an der PUC Rio de Janeiro seit für C++ und Java Einbindung des Lua-Interpreter über die Klasse „Luajava“ Zu berechnender Ausdruck kann direkt an Lua-Programm zur Auswertung übergeben werden toString() gibt standardmäßig in SI Einheiten aus, man kann aber auch angeben in welcher Einheit ausgegeben werden soll , Ergebnisse werden in das entsprechende Java Objekt zurückgeschrieben Einleitung Sicheres Java Typensystem E-JAVA Fazit

16 Beispiel Lua try { API.pushString("s=36km"); API.pushString("t=2h"); API.pushString("s/t"); API.doFile("expr.lua"); } catch (LuaException e) { System.out.println(e); } LuaObject result=API.pop(); String result=getResult(1); // => „5.0 m/s“ toString() gibt standardmäßig in SI Einheiten aus, man kann aber auch angeben in welcher Einheit ausgegeben werden soll , Ergebnisse werden in das entsprechende Java Objekt zurückgeschrieben Einleitung Sicheres Java Typensystem E-JAVA Fazit

17 Resümee Rechnen mit physikalischen Einheiten
Klassenbibliothek JADE: bekannte Maßeinheiten sind schon implementiert neue („Preußische Meilen“) können einfach hinzugefügt werden Negativ: Parser für Ausdrücke ist nicht enthalten Skriptsprache LUA: Datenübergabe und Parser für Ausdrücke leicht implementierbar unabhängig von Programmiersprache Lua Programme können wiederverwendet werden Negativ: Sprache noch in der Entwicklungsphase Einleitung Sicheres Java Typensystem E-JAVA Fazit

18 Europäisches Java Trennung von Schnittstelle und Implementierung
Java hat zwei Sprachmittel um die Schnittstelle eines Objekts zu definieren Das Konzept Interface Zugriffsdeklaration der Methoden (Klasse) Plattform zur Unterstützung von OpenSource Entwicklungen, basiert auf Sourceforge Code Wie haben vor allem Mailingliste, Dokumentationsverwaltung und CVS Server verwendet Einleitung Sicheres Java Typensystem E-JAVA Fazit

19 Sprachmittel der Schnittstelle
public interface DoIt { void doIt(); } public class DoSomething public void doSomethingElse() {...} Plattform zur Unterstützung von OpenSource Entwicklungen, basiert auf Sourceforge Code Wie haben vor allem Mailingliste, Dokumentationsverwaltung und CVS Server verwendet Einleitung Sicheres Java Typensystem E-JAVA Fazit

20 Lösungsansatz Idee: Zwang zum Interface
Jede public Methode muß in einem Interface deklariert sein public static final Attribute müssen in das Interface Syntax Checker Interface creation tool Plattform zur Unterstützung von OpenSource Entwicklungen, basiert auf Sourceforge Code Wie haben vor allem Mailingliste, Dokumentationsverwaltung und CVS Server verwendet Einleitung Sicheres Java Typensystem E-JAVA Fazit

21 Syntax Checker Basiert auf XJavadoc (XDoclet - Jakarta) Probleme
Nachimplementierung und Erweiterung von SUNs JavaDoc Attribute-Oriented Programming Probleme Schlecht dokumentiert Ungewohntes Verhalten Plattform zur Unterstützung von OpenSource Entwicklungen, basiert auf Sourceforge Code Wie haben vor allem Mailingliste, Dokumentationsverwaltung und CVS Server verwendet Einleitung Sicheres Java Typensystem E-JAVA Fazit

22 Interface Generator BeautyJ – Konfigurierbares Java Source Code Formatiertool & Source Code API Probleme: JAR Datei > 1 MByte, da Xerces 2.0 mit eingebunden werden muss undokumentiert Plattform zur Unterstützung von OpenSource Entwicklungen, basiert auf Sourceforge Code Wie haben vor allem Mailingliste, Dokumentationsverwaltung und CVS Server verwendet Einleitung Sicheres Java Typensystem E-JAVA Fazit

23 Zukünftige Erweiterungen
default Sichtbarkeit (package private) Sprachliche Ausdrucksformen wie Singleton Konstruktoren Plattform zur Unterstützung von OpenSource Entwicklungen, basiert auf Sourceforge Code Wie haben vor allem Mailingliste, Dokumentationsverwaltung und CVS Server verwendet Einleitung Sicheres Java Typensystem E-JAVA Fazit

24 Fazit Einsatz verschiedenster Technologien: Assembler JIT LUA
Attributorientierte Orientierung Diverse Bibliotheken Einleitung Sicheres Java Typensystem E-JAVA Fazit

25 Fazit Es ist uns gelungen JAVA in vielfältiger Weise zu erweitern
Teile unserer Ideen bereits in .NET realisiert z.B. checked Schlüsselwort um Überläufe zu erkennen Einleitung Sicheres Java Typensystem E-JAVA Fazit


Herunterladen ppt "KABA Experimentelle Weiterentwicklung der"

Ähnliche Präsentationen


Google-Anzeigen