Tartalomjegyzék
.NET
A .NET Framework egy keretrendszer (ilyen pl. a java is), amely egy új absztrakciós réteget valósít meg a keretrendszerre írt felhasználói programok és az operációs rendszer (linux, windows_xp, windows_vista) között. Szokásos elnevezések: framework, keretrendszer, virtuális gép.
Feladata a beépített osztályokon és saját utasításkészletén keresztül „felügyelt” programok futtatása az op. rendszeren. Ezt az utasítéskészletet egy köztes nyelv, az Intermediate Language adja. A magasabb szintű nyelveken (c#, visual c++, visual basic.net, j#, php, pascal, python, LOGO, …) írt fordító (compiler) erre a köztes nyelvre (IL) fordítja le, amit aztán a futtatókörnyezet „felügyelt” módon gepi_kodra fordít és az operációs rendszer a hardveren futtat.
.cs (c# forráskód) .exe (il bináris)
a futó natív gépi kód
Természetesen a futás idejű fordítás sebességcsökkenéssel jár, amit a .net keretrendszer menet közbeni fordítója azzal kompenzál, hogy csak a még nem fordított metodust fordítja vagy a már rendelkezésre álló gépi kódot használja. Így a programindulás lényegesen lassabb lehet, de a futás általában már nem.
Ebből származó előnyök:
- hardverfüggő optimalizást a keretrendszer és nem a program végezheti (hordozható marad az általunk írt és fordított kód)
- szoftveroptimalizáció (?)
Native Imgae Generator (ngen.exe) -ral közvetlenül a natív kód is fordítható, bár általában nem javasolt.
A keretrendszer jelenleg a Mono projekt keretében linuxra, a Microsoft által Windows-okra érhető el.
Elnevezések:
- .NET osztálykönyvtár ~ Framework Class Library
- .NET futtatókörnyezet ~ Common Language Runtime Execution Engine
- menet közbeni fordító ~ JIT ~ Just-in-time Compiler
.NET Osztálykönyvtár
Igen nagy számú beépített osztálykönyvtár áll a programozó rendelkezésére. Fontosabb névterek1): System, System.IO, System.Net , System.XML, System.Console …
.NET Típusrendszere
- objektumorientált
- nyelvfüggetlen
- szigorú típuskezelés (érték+referencia; boxing; attributumok)
.NET Kivételkezelés
A nem várt eseményeket kivételnek nevezzük. Az egységes megvalósítás lehetőséget ad a kódban a hasznos kód és a kivételkezelő kód egymástól szétválasztására. Saját kivételek (osztályok) definiálhatók, kedvünkre szabhatók. Természetesen „kivételes esetben” ez is lassulást okoz, így a kivételkezelés módszerét nem célszerű - bár lehet - programozói feladatokra használni.
Memóriakezelés
Az automatikus memóriakezelést végez: memóriafoglalás, felszabadítás.
Jellemzően:
- gyors memóriafoglalás
- lassú - bár a végletekig optimalizált, és ritkán futó szemétgyűjtő algoritmus (Garbage Collector: külön szál; amíg fut, minden alkalmazás áll)
A GC mozgatja át a lyukas memóriaterületre a használt adatokat, az új üres tér egybefüggő (v.ö JAVA), így a memóriafoglalás villámgyors. Az optimalizált GC az igényeknek megfelelő sebességet produkál.