.NET se stalo fenoménem už v době, kdy se o něm pouze mluvilo. Pravda, dílem to bylo výborným marketingem společnosti Microsoft, ale současně důvodem byla skutečnost, že .NET mělo konkurovat Javě. Multiplatformní, robustní, ryze objektové prostředí.
Cílem tohoto povídání je seznámit neprogramátory s technologií .NET.
Jenže problém je právě v tom, že .NET je technologie, tedy něco, co se
neprodává. Prodávají se aplikace či služby. Proto nám nezbude než se
kolem programování stále točit, byť do něj nezabřednout.
Ještě než se podíváme přímo na .NET, nahlédněme do historie, abychom
poodhalili důvody vzniku .NET.
V době operačního systému MS-DOS spolu aplikace nekomunikovaly. V jednu
dobu běžela právě jedna aplikace, takže vlastně ani neměla, s kým by si
popovídala.
Po příchodu Windows se situace výrazně zlepšila. Aplikace mohly
komunikovat pomocí různých protokolů založených hlavně na zprávách.
Zpráva nebyla nic jiného než číslo, které jednoznačně určovalo typ
zprávy (např. překresli se) a případné parametry.
Jenže to velmi brzo přestalo stačit. V té době totiž zažívalo
obrovský rozmach objektově orientované programování, které bylo v rozporu
s voláním a přijímáním zpráv. Objektové programování totiž ze své
definice spočívá v tom, že konkrétní objekt má nějaké vlastnosti
zásadně určené pouze pro čtení (např. barvu, stav) a metody, které
s těmito vlastnostmi manipulují (např. načti obsah ze souboru, připoj se
k databázi).
Vynecháme-li různé objektové nadstavby nad zprávami (nejznámější je
asi knihovna VCL používaná v dnes již pomalu zastaralých Delphi
společnosti Borland), pak se ke slovu začaly dostávat komponenty, které bylo
možné používat již jako objekty a to i mezi více vývojovými
prostředími. Tyto komponenty jsou známé jako COM objekty.
COM objekty ovšem měly několik zásadních nedostatků — složitá
registrace do systému, nepříliš dobrá kompatibilita datových typů a
další. Architekti z Microsoftu tedy přemýšleli, jak vyřešit co možná
nejvíce nedostatků a přidat další výhody — absolutní objektovost,
kompatibilitu mezi různými programovacími jazyky, jednoduchou komunikaci mezi
aplikacemi, větší bezpečnost atd. Odpovědí byla technologie .NET.
.NET ale není jen další možnost, jak komunikovat mezi aplikacemi, či
spíše mezi objekty. .NET je platforma v pravém slova smyslu, podobně jako
je například Java. .NET je možné provozovat — alespoň teoreticky — na
různém hardware a různých operačních systémech — nalezneme jej ve
Windows (od Windows 2003 je součástí instalace operačního systému),
v mobilních přístrojích s Windows CE a dokonce i na Linuxu (projekt Mono,
ovšem ten má problémy kvůli poměrně hloupým licenčním podmínkám
některých částí .NETu). Snahou je dostat se i do mobilních telefonů
resp. mobilních přístrojů obecně, ale zde si zatím jednoznačný prim
drží Java.
Než začnu popisovat .NET podrobněji, chtěl bych se nyní odprostit od
abstraktního popisu a říct — zcela přízemně —, co to znamená .NET
ve spojitosti s vaším počítačem. Pokud chcete provozovat .NET aplikaci,
musíte mít k tomu na svém počítači tzv. .NET Framework. .NET Framework je
to samé, co Java Virtual Machine pro Javu (myšleno technologii, nikoliv
jazyk). .NET Framework lze zdarma stáhnout ze stránek Microsoftu a zcela
legálně nainstalovat na počítač s (legálními) Windows. Jakmile se vám to
povede, lze spouštět .NETové aplikace.
.NET vytváří pro jednotlivé aplikace (případně komponenty, chceme-li
aplikace dělit na menší části) společné podhoubí — komponenty spolu
navzájem objektově komunikují. A je jedno, zda jsou tyto komponenty
v rámci jedné či více aplikací.
Dalším důležitým faktorem je to, že je naprosto nepodstatné, v jakém
(.NETovém) programovacím jazyce byla komponenta napsána. Jinými slovy, jedna
komponenta může být v jazyce C#, druhá ve Visual Basicu.NET a třetí
třeba v J#. Princip je totiž v tom, že výsledkem překladu zdrojového
kódu (a nyní se omlouvám za trochu programátorštiny) není nativní kód
pro Windows — tedy klasický .EXE soubor, jak jej můžeme znát — ale
tzv. mezikód, který se distribuuje jako aplikace. Při prvním spuštění
tohoto mezikódu jej .NET Framework přeloží pro konkrétní procesor, na
kterém .NET Framework běží a spustí jej (tedy jej neinterpretuje jako to
dělali např. dřívější verze Visual Basicu!). Ačkoliv tedy první
spuštění aplikace může být pomalejší, tak vlastní běh (a —
zjednodušeně řečeno — libovolné další spuštění) může být
znatelně rychlejší než u klasického EXE souboru. Důvodem je to, že .NET
Framework přeloží mezikód s ohledem na daný procesor, tedy snaží se
využít všechny jeho instrukce. EXE soubor naopak kvůli zpětné
kompatibilitě používá obecnější (a tedy pomalejší) instrukce, není-li
optimalizován.
Jen pro zajímavost — zmínili jsme jazyk C#. Jde o nový programovací
jazyk a jedno z prohlášení Microsoftu zní, že .NET Framework a C# byly
vyvinuty jeden pro druhého. Architektem a otcem C# (a knihovny .NET) je Andreas
Hejlsberk, který pracoval dříve pro Borland a měl na svědomí již jednou
zmíněné Delphi a knihovnu VCL.
.NET Framework v sobě skýtá několik velmi důležitých částí —
ADO.NET pro přístup k databázím, ASP.NET pro tvorbu webových aplikací a
služeb, WinForms pro tvorbu klasických tlustých klientů a další. Zřejmě
nejdůležitější jsou webové služby, na které je v současné době
kladen velký důraz, na druhou stranu bez uložení do databáze by se
většina těchto služeb mohla zrušit. Z tohoto důvodu jsou jednotlivé
části dobře provázané, ale současně jednoduše rozdělitelné právě
díky objektovosti.
Neméně důležitou vlastností je i bezpečnost. Na základě
definovaných oprávnění a přidělených rolí lze v rámci aplikace povolit
např. některé operace, které běžnému uživateli zůstávají skryty.
Dosud to šlo řešit pouze na úrovni operačního systému a věru, nebylo to
nijak jednoduché.
.NET má citelnou výhodu v tom, že přišel dlouho po uvedení Javy.
Dokázal se poučit z chyb, které Java sebou vleče a jíž se nedokáže
zbavit. Rozhodně ale nelze říct, že by .NET byl lepší než Java. .NET
nemá svůj Framework pro mnohá zařízení, kde dominuje Java. Zde má
Microsoft stále co dohánět.
Podobně, jako existují směšné hádky mezi tábory Pascalistů a
Céčkařů, Linuxářů a Windowsáků, Nokiářů a Siemensáků, existují
stejně komická hádky mezi .NETysty a Javaři. Nelze však říct, co je
lepší. Vždy musíme mít konkrétní projekt, úlohu, vizi, na kterou lze
nasadit jedno nebo druhé, nebo dokonce obojí. Každý systém má své výhody
i nevýhody, které lze uplatnit či akceptovat v dané situaci.
A co budoucnost? V současné době se připravuje druhá verze .NETu,
která by měla přijít na trh letos společně s Microsoft SQL Serverem
2005 a samozřejmě vlajkovou vývojovou lodí Visual Studiem .NET 2005. Proč
zrovna společně s SQL Serverem? Myslím si, že hlavním důvodem je ukázat
životaschopnost této platformy. Microsoft novou verzi SQL Serveru totiž
z většiny přepsal právě pro platformu .NET a v jistém smyslu půjde
o malou revoluci. Např. uloženou proceduru bude možné napsat nejenom v SQL
jako doposud, ale např. v C# či Visual Basicu .NET.
.NET se podobně jako ostatní technologie vyvíjí a stejně jako ostatní
časem vyhynou. V tomto případě to ale bude trvat déle než tomu bylo
u jiných. Důvodem je nejen dobrá architektura a přijmutí .NETu komunitou
vývojářů (a na nich to vlastně stojí), ale i to, že Microsoft mnoho
svých aplikací pro .NET píše. A pokud je budeme chtít používat, .NET si
budeme muset nainstalovat, pokud jej už v rámci operačního systému
nebudeme mít předinstalovaný.
Tento článek byl napsán pro Click 6/2005.
Upozornění: tento text neprošel redakční úpravou, takže je
tak, jak byl napsán včetně případných chyb. Žádná část tohoto
článku nesmí být použita bez předchozího souhlasu autora.
Seznam mých dalších článků je v tomto přehledu.