Mi az a .NET Framework és mire jó?

A .NET Framework nem új technológia, azonban a felhasználók közül nem sokan tudják, mire jó ez, vagy miért kell ez. Ezen írásomban megpróbálom elmagyarázni, hogy mire is jó. Ezen felül szó lesz olyan témákról is, amelyek a járatosabb felhasználóknak sem egyértelműek.

Történelem

Valamikor a 90-es évek közepén a SUN kiadta a Java nevű programozási nyelvet és keretrendszert, ami a legtöbb felhasználónak a Chat.hu miatt lehet ismerős. A Java abban volt korszakalkotó, hogy gépfüggetlen volt. Vagyis a lefordított kód egy virtuális gépen futott, ami teljesen független volt az alatta lévő operációs rendszertől. Ez azért jó, mert a kész szoftvert nem kell legyártani n+1 platformra.

Kicsivel a megjelenése után a Java nyílt szabvány lett, ami azt jelenti, hogy otthon nekiállhat bárki házilag Java keretrendszert barkácsolni a dokumentációk alapján. A Microsoft ezt megtette és szállította is a saját Java változatát az Internet Explorer 5, 5.5 és 6 változatával. Azonban elkövették azt a “hibát”, hogy saját céljaiknak megfelelően olyan dolgokat is beletettek, amik csak Windows rendszeren voltak elérhetőek. Ezen kiegészítések használata nem volt kötelező, azonban lehetővé tette a fejlesztőknek, hogy a Windows szolgáltatásait igénybe vegyék.

Ez nem tetszett a SUN-nak és beperelte őket. A dolog vége az lett, hogy a Microsoft nem nevezhette a saját megvalósítását Java-nak. Többek között emiatt és más okokból felhagytak a keretrendszer fejlesztésével. Helyette egy új platform létrehozása volt a cél. Később ez lett a .NET

Az eredeti cél az volt, hogy a Windows programozói felületét modernizálják, korszerűbbé tegyék, valamint az is cél volt, hogy a COM alkalmazás szerver technológiát leváltsák. A .NET első változata 2002-ben jelent meg. Az 1.1-e változata bekerült a Windows Server 2003-ba is. Azóta az operációs rendszer megjelenésekor aktuális változata az aktuális Windows kiadásnak.

Mégis mi ez?

A .NET egy alkalmazás keretrendszer, amiben egy csomó programrészlet beépítetten kész van. Ez azért jó a fejlesztőknek, mert gyorsan tudnak alkalmazásokat fejleszteni. Mivel sok minden gyárilag jól van megírva, a program eleve kevesebb hibalehetőséggel készül el.

Ezen felül meg van a rendszer azon előnye, hogy platformtól független. Hasonlóan a Java-hoz, a bináris fájlok egy virtuális, csak specifikáció szinten létező gépre készülnek. Azonban ez nem azt jelenti, hogy a program virtuális gépen fut. Helyette indításkor fordítódik le a használt gép által értelmezhető kódra. Ez azért jó, mivel egy alkalmazás futhat 32 bites rendszeren, 64 bitesen és akár Tableten is. Bizonyos körülmények teljesülése esetén Linuxon és OS-X-en is.

Számos változata van a platformnak. A legfrissebb változat a cikk írásakor a 4.5 Minden programnak arra a Framework-re van szüksége, amire megírták. Azonban a keretrendszerek valamilyen mértékig visszafelé kompatibilisek . A 4.5-ös kiadás tud futtatni 4.0-ra írt alkalmazásokat. Azonban a 4-es változat már nem képes futtatni a 3.5-re írt alkalmazásokat. Ennek az oka az, hogy időközben fejlesztettek a virtuális processzoron a jelenlegi technológiához jobban igazodva. A 3.5-ös változat képes futtatni 3.0 és 2.0 alkalmazásokat is. Az 1.0 és 1.1 változatok mára már nem támogatottak., sőt a 3.0 és a 2.0 sem, mivel a 3.5 kiváltja a feladatukat.

Ez csak Windows-on fut?

Alapvetően mondhatnánk, hogy igen. De a helyzet nem ilyen egyszerű. Ennek oka az, hogy a .NET-et úgy alkották meg, hogy tartalmazzon olyan részeket, amelyek csak Windows-on érhetőek el és tartalmazzon olyan részeket is, amelyek minden platformon. A minden platformon elérhető része a .NET-nek még szabványosítva is van és elég sok minden használja is, de erről majd később.

Szóval, ha az alkalmazásunk csak azon részeket használja, amely minden rendszeren elérhető, akkor van egy olyan programunk, ami gyakorlatilag mindenütt futtatható. Viszont, ha már használ olyan dolgokat is, amelyek csak Windows-on érhetőek el, akkor a programot módosítania kell a programozónak, hogy fusson mindenhol. Ez a szoftver jellegéből adódóan vagy megoldható, vagy nem. (Halkan megjegyzem, hogy Java esetén is ez van)

A Microsoft hivatalosan sajnos nem készít Linux-ra és OS-X-re .NET keretrendszert. Egyesek szerint ez jó is így. Szerintem pedig a legrosszabb döntés amit a cég valaha is elkövetett, ennek köszönhetően nem terjedt el futótűzként. Helyette egy külön cég foglalkozik a .NET Linux és OS-X változatával. Az ő futtatókörnyezetük neve a Mono Framework. Ez az említett minden platform számára használható részleteket valósítja meg, illetve jó néhány specifikus dolgot, ami csak Linux, OS-X, Android vagy IOS rendszeren használható.

A Mono azért tud egyáltalán létezni, mert a közhiedelemmel ellentétben a .NET nem zárt forráskódú. Pontosan megosztott forrású, mint a Windows. Ez dióhéjban azt jelenti, hogy a forráskód nyilvános a partner programban résztvevőknek, azonban a partner program résztvevői CTRL+C és CTRL+V elven nem emelhetnek át kódot a saját megvalósításukban, valamint a származtatott termékékek nem használhatják az eredeti terméknevet.

A Mono azonban nyílt forráskódú. Ebből CTRL+C és CTRL+V elven lehet másolni. A fejlesztő cégnek azért éri meg ezzel foglalkozni, mert saját termékeket építenek rá. Például van fejlesztő eszközük, amivel egy mobil alkalmazást le lehet fordítani Android,IOS és Windows Phone eszközökre is, minimális módosításokkal. Szerencsésebb esetben egyáltalán nem is kell módosítás.

A Microsoft saját megvalósítása megtalálható a Windows termékekben, mint a Windows 8, Windows RT és a Windows Phone.

A Mono továbbá alkalmazott a Unity játékkészítő szoftverben is, így nem egy játék tartalmazza, illetve ráépül részben. A játékok listája a http://unity3d.com/gallery/made-with-unity/game-list címen lelhető fel.

Ha annyira jó, akkor miért az utált, illetve nem hallottam eddig róla?

Az utálat mostanában divat. Az utóbbi időben nem igen divat valamiről elismerően nyilatkozni. Arra nem kíváncsi senki (talán ezért nem olvassák a blogom többen, de deviánsnak lenni jó móka :)). Az utálat egyébként leginkább a nyílt forráskódú operációs rendszereket preferálóktól származik. Ez nem azt jelenti, hogy minden nyílt forráskódú rendszert használó utálja, hanem azt, hogy vannak olyan meggyőződésű felhasználók, akik szerint Bill Gates a sátán, a Microsoft pedig az apokalipszis egyik lovasa. És ebből kifolyólag bármi, amit ők csinálnak, az csak rossz lehet. Természetesen ezen emberek a leghangosabbak, így az ő szavuk hallható a leginkább 🙂

A felhasználók körében tapasztalható visszafogott ismertség oka abban keresendő, hogy a marketing csoport leginkább a fejlesztőket célozza. Felhasználóként különösebben számunkra nem fontos, hogy mit tud, mi van benne.

A Windows RT is .NET?

Alapvetően nem, de a .NET nélkül nem létezhetne. A Windows RT a Windows 8 Store alkalmazások számára biztosított keretrendszere. Hivatalosan nem része a .NET Framework-nek, de a .NET-ből ragadtak ki a megvalósításához sok részletet. Csak Windows 8 rendszerre létezik, korábbi Windows verziókra nem adták ki, és gyanítom, üzleti érdekek miatt nem is fogják.