common language runtime
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 PresentationTRANSCRIPT
Common Language Runtime
Seminar Softwareentwicklung
Wintersemester 2003
Gertraud Orthofer
e-mail: [email protected]
Seminar Softwareentwicklung 2
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
Seminar Softwareentwicklung 4
Vorteile von CLR
Typsicherheit Sicherheit verschiedene Sprachen Performanz Deployment (DLL-hell) Metadata (self-describing Code) Garbage Collection
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
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
Seminar Softwareentwicklung 7
Übersicht der TypenBoxing
Unboxing
Werttypen Referenztypen
Vordefinierte Typen
Benutzerdefinierte Typen
Vordefinierte Typen
Pointers
Klassen
Schnittstellentyp
Arrays
Delegates
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
}
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)
}
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())
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)
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)]
Seminar Softwareentwicklung 13
weitere CLR-Regeln
Namen Member Access
Type visibility Member accessibility Security constraints
Type Members Properties Events
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
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