C Sharp programozás/Microsoft .NET Framework
A kilencvenes évek közepén a Sun MicroSystems kiadta a Java platform első nyilvános változatát. Az addigi programnyelvek/platformok különböző okokból nem tudták felvenni a Java –val a versenyt, így számtalan fejlesztő döntött úgy, hogy a kényelmesebb és sokoldalúbb Java –t választja. Részben a piac visszaszerzésének érdekében a Microsoft a kilencvenes évek végén elindította a Next Generation Windows Services fedőnevű projektet, amelyből aztán megszületett a .NET.
A .NET platform
[szerkesztés]Maga a .NET platform a Microsoft, a Hewlett Packard, az Intel és mások közreműködésével megfogalmazott CLI (Common Language Infrastructure) egy implementációja. A CLI egy szabályrendszer, amely maga is több részre oszlik: A CTS (Common Type System) az adatok kezelését, a memóriában való megjelenést, az egymással való interakciót, stb. írja le. A CLS (Common Language Specification) a CLI kompatibilis nyelvekkel kapcsolatos elvárásokat tartalmazza. A VES (Virtual Execution System) a futási környezetet specifikálja, nevezik CLR -nek (Common Language Runtime) is. A .NET nem egy programozási nyelv, hanem egy környezet. Gyakorlatilag bármilyen programozási nyelvnek lehet .NET implementációja. Jelenleg kb. 50 nyelvnek létezik hivatalosan .NET megfelelője, nem beszélve a számtalan hobbifejlesztésről.
MSIL/CIL
[szerkesztés]A “hagyományos” programnyelveken – mint pl. a C++ - megírt programok ún. natív kódra fordulnak le, vagyis a processzor számára – kis túlzással – azonnal értelmezhetőek. Ezeknek a nyelveknek az előnye a hátránya is egyben. Bár gyorsak, de rengeteg hibalehetőség rejtőzik a felügyelet nélküli (unmanaged) végrehajtásban. A .NET (akárcsak a Java) más úton jár, a fordító egy köztes nyelvre (Intermediate Language) fordítja le a forráskódot. Ez a nyelv a .NET világában az MSIL illetve a szabványosítás után CIL (Microsoft/Common IL) – különbség csak az elnevezésben van.
Fordítás/futtatás
[szerkesztés]A natív programok ún. gépi kódra fordulnak le, míg a .NET forráskódokból egy CIL nyelvű futtatható állomány keletkezik. Ez a kód a feltelepített .NET Framework –nek szóló utasításokat tartalmaz. Amikor futtatjuk ezeket az állományokat először az ún. JIT (just–in–time) fordító veszi kezelésbe és lefordítja őket gépi kódra, amit a processzor már képes kezelni. Amikor “először” lefordítjuk a programunkat akkor egy ún. Assembly (vagy szerelvény) keletkezik. Ez tartalmazza a felhasznált illetve megvalósított típusok adatait (ez az ún. Metadata) amelyeket a futtató környezet fel tud használni a futtatáshoz (az osztályok neve, metódusai, stb…). Egy Assembly egy vagy több file –ból is állhat.
BCL
[szerkesztés]A .NET Framework telepítésével a számítógépre kerül – többek közt – a BCL (Base Class Library), ami az alapvető feladatok (file olvasás/ írás, adatbázis kezelés, adatszerkezetek, stb…) elvégzéséhez szükséges eszközöket tartalmazza. Az összes többi könyvtár (ADO.NET, WCF, stb…) ezekre a könyvtárakra épül.
A C# programozási nyelv
[szerkesztés]A C# (ejtsd: Szí-sárp) a Visual Basic mellett a .NET fő programozási nyelve. 1999 –ben Anders Hejlsberg vezetésével kezdték meg a fejlesztését. A C# tisztán objektumorientált, típusbiztos, általános felhasználású nyelv. A tervezésénél a lehető legnagyobb produktivitás elérését tartották szem előtt. A nyelv elméletileg platformfüggetlen (létezik Linux és Mac fordító is), de napjainkban a legnagyobb hatékonyságot a Microsoft implementációja biztosítja.
Alternatív megoldások
[szerkesztés]A Microsoft .NET Framework jelen pillanatban csak és kizárólag Microsoft Windows operációs rendszerek alatt elérhető. Ugyanakkor a szabványosítás után a CLI specifikáció nyilvános és bárki számára elérhető lett, ezen ismeretek birtokában pedig több független csapat vagy cég is létrehozta a saját CLI implementációját, bár eddig még nem sikerült teljes mértékben reprodukálni az eredetit. Ezt a célt nehezíti, hogy a Microsoft időközben számos a specifikációban nem szereplő változtatást végzett a keretrendszeren.
SSCLI
[szerkesztés]Az SSCLI (Shared Source Common Language Infrastructure) vagy korábbi nevén Rotor a Microsoft által fejlesztett nyílt forrású, keresztplatformos változata a .NET Frameworknek (tehát nem az eredeti lebutított változata). Az SSCLI Windows, FreeBSD és Mac OSX rendszereken fut. Az SSCLI –t kimondottan tanulási célra készítette a Microsoft, ezért a liszensze engedélyez mindenfajta módosítást, egyedül a piaci értékesítést tiltja meg. Ez a rendszer nem szolgáltatja az eredeti keretrendszer teljes funkcionalitását, jelen pillanatban valamivel a .NET 2.0 mögött jár. Az SSCLI hivatalos oldala:
Mono
[szerkesztés]A Mono projekt szülőatyja Miguel de Icaza 2000 –ben kezdte meg a fejlesztést és egy évvel később mutatta be ez első kezdetleges C# fordítót. A Ximian (amelyet Icaza és Nat Friedman alapított) felkarolta az ötletet és 2001 júliusában hivatalosan is elkezdődött a Mono fejlesztése. 2003 –ban a Novell felvásárolta a Ximian –t, az 1.0 verzió már Novell termékként készült el, egy évvel később. A legutolsó verzió (2.0.1) amely 2008 októberében látott napvilágot. Ez a változat már a teljes .NET 2.0 –át magába foglalja, illetve a C# 3.0 képességeit is részlegesen támogatja (pl. van LINQ to XML illetve LINQ to Objects). Ugyanez a verzió tartalmazza a Novell SilverLight alternatíváját, amit MoonLight –ra kereszteltek, ennek fejlesztésében a Novell segítségére van a Microsoft is. A Mono saját fejlesztőeszközzel is rendelkezik a MonoDeveloppal.
Ezzel a változattal párhuzamosan fejlesztés alatt áll a .NET 3.0 –t is támogató rendszer, a project kódneve Olive (http://www.mono-project.com/Olive).
A Mono Windows, Linux, UNIX, BSD, Mac OSX és Solaris rendszereken elérhető. Napjainkban a Mono mutatja a legígéretesebb fejlődést, mint a Microsoft .NET jövőbeli ellenfele illetve keresztplatformos társa. A Mono emblémája egy majmot ábrázol, a szó ugyanis spanyolul majmot jelent. A Mono hivatalos oldala:
DotGNU
[szerkesztés]A DotGNU a GNU projekt része, amelynek célja egy ingyenes és nyílt alternatívát nyújtani a Microsoft implementáció helyett. Ez a projekt – szemben a Mono –val – nem a Microsoft BCL –el való kompatibilitást helyezi előtérbe, hanem az eredeti szabvány pontos és tökéletes implementációjának a létrehozását. A DotGNU saját CLI megvalósításának a Portable .NET nevet adta. A jegyzet írásának idején a projekt leállni látszik. A DotGNU hivatalos oldala: