Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling.

Ähnliche Präsentationen


Präsentation zum Thema: "René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling."—  Präsentation transkript:

1 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling to get out … T.Hoare nach Igarashi, Pierce, Wadler

2 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Gliederung Motivation Featherweight Java Programmstruktur Reduktion Regeln(Syntax, Reduktion, Typisierung) Stupid Cast Beweis der Typsicherheit Featherweight Generic Java (FGJ) Schlussfolgerungen Gliederung

3 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Was ist Featherweight Java ein funktionaler Java-Kern Reduktion auf das Wesentliche nur wenig umfangreicher als der - Kalkül Subset von Java und von Standard- Java compilierbar voll Turing-fähig Motivation

4 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Wozu Featherweight Java? Finden von Typproblemen im Java-Kern Beweisen der Typsicherheit des Java- Kerns Basis für Erweiterungen plastische Darstellung durch compilierbaren Code Motivation

5 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 5 mögliche Ausdrücke Objektinstanzierung Methodenaufruf Feldzugriff Casting Variablenzugriff Programmstruktur

6 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Was ist in FJ möglich gegenseitige rekursive Klassendefinitionen Methoden überschreiben Methodenrekursion mit Hilfe von this Vererbung Programmstruktur

7 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Was ist in FJ nicht möglich Zuweisungen Interfaces Überladen Aufrufe von super Null-Pointer Primitive Datentypen Programmstruktur

8 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Was ist in FJ nicht möglich abstrakte Methodendeklarationen Shadowing von Feldern Zugriffskontrolle (public, private, etc.) Exceptions Fortgeschrittene Techniken Programmstruktur

9 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 FJ Programm class A extends Object { A() {super();} } class B extends Object { B() {super();} } Programmbeispiel

10 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 FJ Programm class Pair extends Object { Object fst; Object snd; Pair(Object fst, Object snd) { super(); this.fst=fst; this.snd=snd; } Pair setfst(Object newfst) { return new Pair(newfst, this.snd); } Programmbeispiel

11 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Reduktion new Pair(new A(), new B()).setfst(new B()); newfst new B() this new Pair(new A(), new B()) new Pair(newfst, this.snd) new Pair(new B(), new B()) Reduktion

12 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Java S Syntax Regeln

13 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 FJ Syntax L ::= class C extends D { C f; K M } K ::= C(C f) {super(f); this.f=f;} M ::= C m(C x) { return e;} e ::= x | e.f | e.m(e) | new C(e) | (C)e Regeln

14 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 FJ Vererbung C <: C C <: D D <: E C <: E class C extends D {...} C <: D Regeln

15 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Casting Regeln e 0 : D D <: C (C)e 0 : C e 0 : D C <: D C D (C)e 0 : C Upcast Downcast Stupid Cast

16 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Stupid Cast Downcast Upcast Object BA (A)(Object)new B() (A)new B() Stupid Cast

17 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Stupid Cast e 0 : D D <: C (C)e 0 : C e 0 : D C <: D C D (C)e 0 : C Upcast Downcast e 0 : D C <: D D <: C stupid warning (C)e 0 : C Stupidcast Stupid Cast

18 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Reduktion fields (C) = C f (new C(e)).f i e i new Pair(new A(), new B()).snd new B() Regeln

19 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Beweis der Typsicherheit Preservation: Wenn t : C und t t, dann t : C für C <: C Progress Reduction preserves Cast-Safety Progress of Cast-Save Programs weitere Theoreme : Typsicherheit

20 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Generic Java (FGJ) Featherweight Java um Generics erweitert FGJ auf FJ zurückgeführt somit ist FGJ auch typsicher FGJ

21 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Schlussfolgerungen Featherweight Java ist typsicher stupid casts in Java eingeführt Typsicherheit auf Generics erweitert und bewiesen Fehler im Java-Compiler in bezug auf Generics gefunden Weiterhin erweiterbar Schlussfolgerungen

22 René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Quellennachweise Igarashi, A., Pierce, B.C. and Wadler 2002. Featherweight Java: A Minimal Core Calculus for Java and GJ,University of Tokyo, University of Pennsylvania, Avaya Labs Benjamin C. Pierce / Types and Programming/, MIT Press 2002.Drossopoulou, S., Eisenbach, S 1997. Java is Type Safe – Probably, London Quellennachweise


Herunterladen ppt "René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling."

Ähnliche Präsentationen


Google-Anzeigen