KABA Experimentelle Weiterentwicklung der

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Dr. Andreas Winter Sommersemester 2007 Einführung in die Software-Entwicklung © Institut für Informatik Programmier-Richtlinien vgl. auch
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Objektorientierte Programmierung
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
Konstruktoren.
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
XDoclet ETIS SS05.
Einführung in die OOP in Java
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Einführung in Java1 Einführung in JAVA.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Klassen 02 - Klassen.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Einführung in die Programmiersprache Java
Aurich – Jonas Jacobi OSGi Tutorial Aurich – Jonas Jacobi Das OSGi Service Framework Dynamisches Modulsystem für Java Dynamische.
Präsentation von Sonja Pathe
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Unterprogramme in JAVA
ac.at1 EPROG Tutorium #1 Philipp Effenberger Einführung in Java Schlüsselworte Datentypen.
EPROG Tutorium #4 Philipp Effenberger
EPROG Tutorium #6 Philipp Effenberger
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Schleifen
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Robuste Programme durch Ausnahmebehandlung
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Java-Kurs Übung Besprechung der Hausaufgabe
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Abstrakte Klassen und das Interface-Konzept
Objektorientierte (OO) Programmierung
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
 Präsentation transkript:

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

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

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

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

Entwicklungsumgebung BerliOS Service von Fraunhofer Fokus (GMD) http://developer.berlios.de 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

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

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

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

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

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

Sicheres Java Einleitung Sicheres Java Typensystem E-JAVA Fazit

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

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 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

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

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 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 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

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

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

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

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

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

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

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

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

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

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