25
FHTW-Berlin Diplomandensemin ar Projekt: Kaba KABA Sicheres Java Einleitun g Typensyst em E-JAVA Fazit Stefan Gehrmann Frank Schubert Denis Gotthans Matthias Rieke Matthias Brzesowsky Andreas Gohr Experimentelle Weiterentwicklung der Programmiersprache Java zu Kaba in Projekt unter Leitung von Prof. Dr. Horst Hansen

Einleitung FHTW-Berlin Diplomandenseminar Projekt: Kaba KABA Sicheres JavaEinleitungTypensystemE-JAVAFazit Stefan Gehrmann Frank Schubert Denis Gotthans

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

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