Transcript

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

FHTW-BerlinDiplomandenseminar Projekt: Kaba

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

Sicheres JavaEinleitung Typensystem E-JAVA Fazit


Recommended