Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Programování v C# Úvodní slovo
1 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Obsah přednášky
I
Seznámení s předmětem
I
Co je .NET
I
Vlastnosti .NET
2 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Kdo je kdo
I
Petr Vaněček
[email protected] J 502
I
Václav Novák
[email protected]
I
? ?
I
Při komunikaci uvádějte do e-mailu předmět ve tvaru: [PJC1] +důvod
3 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Plán semestru 1. Úvodní slovo 2. Struktura .NET aplikace 3. Zvyklosti a vývojová prostředí 4. Datové typy 5. Třídy, rozhraní a jmenné prostory 6. Operátory, kolekce a generika 7. Výjimky, vlákna, události 8. Souborový vstup/výstup 9. XML 10. Síťová komunikace 11. Reflexe 12. Ladění 4 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Požadavky na zápočet
I
Vypracování krátkých úložek v průběhu semestru I I
I
Malé úložky — min. 25 bodů z celkových 50 bodů Samostatná práce!!!
Vypracování semestrální práce I I I I I
Získání min. 25 bodů z celkových 50 bodů Funkční program Programátorská dokumentace Uživatelská příručka Zadání práce v průběhu 2. týdne
5 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Doporučená literatura
I
Web předmětu home.pf.jcu.cz/∼vanecek/education/pjc1
I
např. J. Sharp: Microsoft Visual C# .NET Step by Step
6 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Cíle .NET
I
Problémy při „běžnémÿ programování I I I I I
I
Cíle I
I
Jazyková nekompatibilita Platformová nekompatibilita Nekonzistentní knihovny Problémy s pamětí Nedůsledný objektové programování Odstranit/omezit výše popsané problémy
Řešení I
???
7 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Požadavky na platformu I
Interoperabilita — možnost spolupráce s hotovými knihovnami (většinou COM technologie)
I
Jednotný Runtime — podobně jako u JAVy využít mezijazyk (Common Intermediate Language – CIL)
I
Jazyková nezávislost — jednotný typový systém definující datové typy a programové konstrukty (Common Type System)
I
Knihovna základních tříd — knihovny pro často používané funkce (Base Class Library)
I
Jednoduchá instalace a údržba — problémy s registry, umístěním souborů a „DLL hellÿ
I
Bezpečnost — bezpečnostní mechanismy součástí Runtimu (trust levels)
8 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Platforma .NET
I
Principy známé s JAVy I I I I
I
Jednotné běhové prostředí (Virtual Machine) Optimalizace kódu pro konkrétní procesor (Just-In-Time kompilace) Zjednodušení zprávy paměti (Garbage Collector) Knihovny často používaných (Class Library)
.NET navíc přináší I I
Jazyková nezávislost Nový jazyk plně využívající možnosti .NET (C#)
9 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Standardizované řešení
I
Zahájení projektu – r. 2000 I I I
I
Standard ECMA – r. 2001 I I
I
Microsoft Hewlett-Packard Intel CLI - Common Language Infrastructure C#
Standard ISO – r. 2003 I
Podmínka – Standard musí být volně k dispozici
10 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Microsoft a jiní
I
.NET Framework — dnes již součástí MS OS I I I
I
Nyní ve verzi 2.0 (ve Vista 3.0) Obsahuje i překladače pro C#, J#, Visual Basic.NET %systemdir%/Microsoft.NET/Framework/verze
.NET Framework SDK — na stránkách MS I I I
Debugger s GUI IL Disassembler Dokumentace
11 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Microsoft a jiní
I
Shared Source Common Language Infrastructure I I
I
.NET Compact Framework I
I
Windows CE
Mono I I
I
Zdrojové kódy k MS implementaci CLI Pro systémy Windows, FreeBSD, Mac OS X
Open source project Linux, Solaris, Mac OS X, Windows, Unix
DotGNU I I
GNU náhrada MS .NET Frameworku Linux, *BSD, Mac OS X, Solaris, Windows, . . .
12 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Common Intermediate Language (CIL) I
„mezijazykÿ do kterého se kompilují všechny programy
I
Obdoba Javovského bytecodu
I
Objektový
I
Není interpretovaný Just In Time kompilace
I
I I
I
Možno naprogramovat vlastní JITer I
I
Probíhá inkrementálně Překládá se jen to co je třeba
Kompilace pro libovolnou platformu
Microsoftí CIL – MSIL
C# code
J# code
VB.NET code
compiler
compiler
compiler
CIL
JIT
1001 1110 0010 1101 1111 0001 1101 1001 13 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Common Intermediate Language (CIL) I
Zdrojový kód
I
Překlad a spuštění
14 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Common Intermediate Language (CIL) I
Disassembler
15 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Common Language Runtime (CLR)
I
Řízené prostředí pro běh programů v CIL
I
Nahrávání tříd
I
JIT kompilátor
I
Správa paměti
I
Správa vláken
I
Správa výjimek
I
Typová kontrola
I
Zabezpečení
I
Ladění
I
Spolupráce s Base Class Library
16 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Common Language Runtime (CLR)
17 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Common Type System (CTS)
I
Umožňuje spolupráci mezi různými jazyky
I
Obdobné datové typy ve všech jazycích – možno sdílet data Možnosti
I
I I I
Instanciování třídy napsané v jiném jazyce Přístup k veřejným členům třídy v jiném jazyce Dědění třídy od třídy v jiném jazyce
18 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Common Type System (CTS)
Typy
Hodnotové
Systémové hodnotové typy
Výčty
Referenční
Uživatelské hodnotové typy
Samopopisné typy
Ukazatele
Třídy
Delegáti
Uživatelské referenční typy
Rozhraní
Pole
Boxované hodnotové typy
19 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Common Type System (CTS)
I
Hodnotové typy I I I
I
Alokují se na zásobníku Systémové hodnotové typy – čísla, znaky řetězce Uživatelské struktury
Referenční typy I I
I
Odkaz na zásobníku, data na heapu Rozhraní – typ na který lze přetypovat instance tříd implementující dané rozhraní Samopopisné typy I I I
Typy, které poskytují informace garbage collectoru Delegáti – typy odkazující na metodu Boxované typy – hodnotové typy zabalené tak, aby s nimi šlo zacházet jako s referenčními
20 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Garbage Collector (GC)
I
Problémy se správou paměti I I I
I
Nutno alokovat paměť na „společnéÿ hromadě Nutno uvolnit paměť, když se přestane používat Problematické odhalování potíží s alokací/dealokací paměti
Řešení ponechat na systému – garbage collector I I I
Součást runtimu Kontroluje zda existuje reference na instanci Odstraňuje instance bez referencí
21 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Garbage Collector (GC)
I
Spouštění GC je nedeterministické I
I
Spouští se v okamžiku kdy na heapu dochází místo
Jak se ale zjistí na který objekt vede reference? I
Problémy s cyklickými referencemi A
B
C
Bb
Cc
Bb
22 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Garbage Collector (GC) F I
I I
Každá aplikace má množinu „kořenovýchÿ objektů (např. globální a statické objekty) Všechny instance se označí jako nedosažitelné Prochází se od kořenů a staví se graf I
I
Pokud je instance nedosažitelná, přidá se do grafu a nastaví se jako dosažitelná Pokud je instance dosažitelná, může se prohledávání této cesty ukončit
I
Dosažitelné objekty jsou „setřesenyÿ na začátek heapu
I
Ukazatele na dosažitelné objekty se opraví
E D
D
C ROOT objekty B
C
A
A
B
D
F
C ROOT objekty B
D
A
A
C
23 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Base Class Library (BCL)
I I
Rozsáhlá knihovna tříd, rozhraní a hodnotových typů Zajišťuje např. I I I I I I I I I
Kolekce Souborové vstupy/výstupy Práce s XML Přístup k DB Práce s komunikačními protokoly Tvorba GUI Spolupráce s neřízeným kódem Web services Podporu národních zvyklostí
24 / 25
Úvod Seznámení s předmětem Co je .NET Vlastnosti .NET Konec
Konec
25 / 25