Upload
leutpald-schnall
View
117
Download
6
Embed Size (px)
Citation preview
FHTW-BerlinDiplomandenseminar Projekt: Kaba
KABA
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
Stefan GehrmannFrank SchubertDenis Gotthans
Matthias RiekeMatthias BrzesowskyAndreas Gohr
Experimentelle Weiterentwicklung der Programmiersprache Java zu Kaba
Ein Projekt unter Leitung von Prof. Dr. Horst Hansen
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Gliederung
• Einleitung– Vorgeschlagene Themen
– Entwicklungsumgebung
• Vorstellung der behandelten Themen– Sicheres Java
– Typensystem
– Europäisches JAVA
• Fazit
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
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 JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
EntwicklungsumgebungProjektserver
• Standort FHTW Projektlabor VG 220
• Debian GNU/Linux
• SSH Zugang für Projektteilnehmer
• Sourcen von Kaffe und Jikes RVM
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
EntwicklungsumgebungBerliOS
• Service von Fraunhofer Fokus (GMD)– http://developer.berlios.de
• Webbasierte Umgebung– Mailingliste
– CVS Server
– Dokumentationsverwaltung
– Aufgabenverwaltung
– Downloads
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Sicheres Java
Problem:
Fehlerhafte Addition:
• MAX_INTEGER + 1 = MIN_INTEGER
Ziel:
• MAX_INTEGER + 1 OverflowException
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Sicheres Java
Lösungsansatz I
• Datentyp ohne Wertebereichseinschränkung
• z.B. BigInteger, BigDecimal
• Vorteil: schnell implementiert
• Nachteil: sehr langsam
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
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
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Sicheres Java
Lösungsansatz IIb
• Implementieren der Lösung IIa direkt in VM
• An KaffeVM versucht
• Trotz Teilerfolgen an Komplexität der VM gescheitert
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
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
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Sicheres Java
20000 x (+1)
0
10
20
30
40
50
60
70
80
int Integer BigInteger SafeIntegerJNI
ms
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
2 Mio. x (+1)
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5
int Integer BigInteger SafeIntegerJNI
ms
* 10
³
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Rechnen mit phys. Einheiten
• 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
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
v= 36km/2h = 5 m/s
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Klassenbibliothek J.A.D.E.
• Java Addition to Default Environment– http://jade.dautelle.com
• Freie (LGPL) Java Bibliothek• Physikalisches Einheitensystem• Bekannte Einheiten bereits implementiert• Automatische Umrechnung zwischen
verschiedenen Einheiten
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
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
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
• 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 1994
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
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
Skriptsprache Lua
FHTW-BerlinDiplomandenseminar Projekt: Kaba
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“
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
Beispiel Lua
FHTW-BerlinDiplomandenseminar Projekt: Kaba
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
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
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)
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Sprachmittel der Schnittstelle
public interface DoIt {void doIt();
}
public class DoSomething {public void doSomethingElse() {...}
}
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
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
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Syntax Checker
• Basiert auf XJavadoc (XDoclet - Jakarta)– Nachimplementierung und Erweiterung von SUNs
JavaDoc– Attribute-Oriented Programming
• Probleme– Schlecht dokumentiert– Ungewohntes Verhalten
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
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
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Zukünftige Erweiterungen
• default Sichtbarkeit (package private)
• Sprachliche Ausdrucksformen wie Singleton
• Konstruktoren
Sicheres JavaEinleitung Typensystem E-JAVA Fazit
FHTW-BerlinDiplomandenseminar Projekt: Kaba
Fazit
• Einsatz verschiedenster Technologien:– Assembler– JIT– LUA– Attributorientierte Orientierung– Diverse Bibliotheken
Sicheres JavaEinleitung Typensystem E-JAVA Fazit