common language runtime

15
Common Language Runtime Seminar Softwareentwicklung Wintersemester 2003 Gertraud Orthofer e-mail: [email protected]

Upload: anaya

Post on 05-Jan-2016

51 views

Category:

Documents


0 download

DESCRIPTION

Common Language Runtime. Seminar Softwareentwicklung Wintersemester 2003. Gertraud Orthofer e-mail: [email protected]. Common Language Runtime. Laufzeitumgebung CIL-Code und Metadaten Hauptbereiche Common Type System (CTS) Common Language Specification (CLS) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Common Language Runtime

Common Language Runtime

Seminar Softwareentwicklung

Wintersemester 2003

Gertraud Orthofer

e-mail: [email protected]

Page 2: Common Language Runtime

Seminar Softwareentwicklung 2

Page 3: Common Language Runtime

Seminar Softwareentwicklung 3

Common Language Runtime

Laufzeitumgebung CIL-Code und Metadaten Hauptbereiche

Common Type System (CTS)Common Language Specification (CLS)Virtual Execution System (VES)Metadata System

Page 4: Common Language Runtime

Seminar Softwareentwicklung 4

Vorteile von CLR

Typsicherheit Sicherheit verschiedene Sprachen Performanz Deployment (DLL-hell) Metadata (self-describing Code) Garbage Collection

Page 5: Common Language Runtime

Seminar Softwareentwicklung 5

Common Type System

Gemeinsames Typsystem für alle Sprachen

legt Regeln fest: wie Typen definiert werden wie sie sich verhalten

alle Typen erben von System.Object Typen bestehen aus

Menge von Werten darauf definierten Operationen

zwei grundlegende Typen Werttypen Referenztypen

Page 6: Common Language Runtime

Seminar Softwareentwicklung 6

Werttypen - Referenztypen

Werttypen Referenztypen

Speicherort Stack Location: StackInhalt: Heap

Initialisierung 0 null

Garbage Collection

nein ja

Objektvergleich Inhalt Referenz

Vererbung nein ja

Basisklasse System.Value System.Object

Page 7: Common Language Runtime

Seminar Softwareentwicklung 7

Übersicht der TypenBoxing

Unboxing

Werttypen Referenztypen

Vordefinierte Typen

Benutzerdefinierte Typen

Vordefinierte Typen

Pointers

Klassen

Schnittstellentyp

Arrays

Delegates

Page 8: Common Language Runtime

Seminar Softwareentwicklung 8

Benutzerdefinierte Werttypen (1/2)

Struktur.class (auto|sequential) sealed Person extends

System.ValueType{.field string name.field int32 age

}

Vereinigung.class explicit sealed IntFloat extends

System.ValueType{.field [0] float32 f.field [0] int32 i

}

Page 9: Common Language Runtime

Seminar Softwareentwicklung 9

Benutzerdefinierte Werttypen (2/2)

Enumeration Basisklasse System.Enum Namen/Wert Paare werden unter bestimmten Namen

gruppiert.class sealed Color extends System.Enum{

.field static literal valuetype Color red = int32 (0x00000000) .field static literal valuetype Color green = int32 (0x00000001) .field static literal valuetype Color blue = int32 (0x00000002)

}

Page 10: Common Language Runtime

Seminar Softwareentwicklung 10

Benutzerdefinierbare Referenztypen (1/2) Klassen

Speicherplatzreservierung und Initialisierung in einer Anweisung abgeleitet von System.Object Keine Mehrfachvererbung erlaubt Methoden.class Bar extends System.Object {

.method static void foo() {…}

.method instance virtual void goo() {…}

.method instance void hoo() {…} } Methodenaufrufe

Call void Bar:: foo() oder call instance void Bar:: (goo() | hoo()) Callvirt instance void Bar:: (goo() | hoo())

Page 11: Common Language Runtime

Seminar Softwareentwicklung 11

Benutzerdefinierbare Referenztypen (2/2) Interfaces

müssen abstract sein, keine Instanzen können davon erzeugt werden mehrfache Schnittstellenvererbung erlaubt.class interface abstract ILockable {

.method public abstract instance virtual void Lock() {}}

Arrays Daten vom Array müssen alle den gleichen Typ enthalten Zugriff auf die Daten über den Index Arten (newarr, newobj)

Page 12: Common Language Runtime

Seminar Softwareentwicklung 12

Common Language Specification

legt Mindestanforderungen an jede Programmiersprache fest

Regelwerk CLS-Regel 1:

CLS-Regeln betreffen lediglich die Teile eines Typs, die außerhalb des definierenden Assemblys zur Verfügung stehen.

[assembly: CLSCompliant(true)]

Page 13: Common Language Runtime

Seminar Softwareentwicklung 13

weitere CLR-Regeln

Namen Member Access

Type visibility Member accessibility Security constraints

Type Members Properties Events

Page 14: Common Language Runtime

Seminar Softwareentwicklung 14

Virtual Execution System

Starten einer .exe Datei CLR starten

Windows Loader lädt Datei MSCorEE.dll laden _CorExeMain starten CLR initialisieren

CLR beginnt zu arbeiten

Page 15: Common Language Runtime

Seminar Softwareentwicklung 15

Execution Engine

JIT-Compiler

AppDomain

Laden einer PE-Datei

Laden eines Assemblies

Sicherheitsmanager

Rechtsvergabe

Klassenlader

Laden eines Moduls

Laden eines Typs

Übersetzung in Maschinencode

Codemanager

Ausführung des Programms

Verifikation der CIL

Managed Native Code Image