Windows v JavaScriptu

Altairovy články čtu rád. A většinou souhlasím. Podepsal bych i závěr jeho článku z minulého měsíce o Microsoftu nad propastí. Přesto mám dojem, jako by tentokrát přehlédl, že probíhající změny jsou ještě hlubší, než se na první pohled zdá, zatímco leccos naopak zůstalo při starém. Ale popořádku...

Altair mimo jiné napsal:

Naštěstí se objevil spasitel a jeho prorok. Spasitelem je technologický pokrok, který umožnil skoro každému udělat to, co dříve dokázali jenom giganti typu IBM nebo Microsoft. A jeho prorokem byl Steve Jobs.

Uživatelé nechtějí počítač. Chtějí něco, co jim umožní pár jednoduchých věcí [...]. [...] Takové zařízení dneska nepotřebuje sofistikovaný hardware a ani sofistikovaný operační systém. Fakticky ho zvládne vytvořit každý student informatiky ze součástek, které se smetou z podlahy libovolného skladu na břehu velké žluté řeky Chuang Che a útržků zdrojových kódů smetených z GitHubu. Bude umět asi tak tři procenta toho, co "písíčko" s desktopovým operačním systémem, ale bude to good enough.

Postav si vlastní počítač

Technologický pokrok je s námi mnohem déle než posledních pár let. Podobný článek mohl bez problémů vyjít třeba před 30 lety. Jen s tím rozdílem, že gigantem udávajícím směr byl tehdy kromě IBM třeba Xerox či AT&T, a prorokem, který přinesl nové technologie obyčejným smrtelníkům, nebyl jen Steve Jobs, ale i Bill Gates. Prvním úspěšným produktem jeho startupu Micro-soft se stal interpret jazyka Basic pro mikropočítač Altair 8800. To byl mimochodem počítač pro nadšence stlučený na koleně. Na trhu se objevil někdy v roce 1974...

Steve Jobs a další nadšenci totiž vytvářeli počítače ze součástek smetených z podlahy už před 40 lety. Nebylo to o moc složitější než dnes, jenom ty součástky tehdy ještě nebyly od Žluté řeky. A vůbec nepochybuju o tom, že profesionálním paranoikům z řad zavedených značek jako IBM se z toho už tenkrát ježily chlupy na všemožných částech těla. V roce 1981 si už mohl každý koupit knížku Build Your Own Z80 Computer a po vymetení obchůdků v okolí se pustit do práce.

První dojem klame

Jedna věc se však přeci jen změnila. Zatímco tehdy si šikovní studenti pro své výtvory běžně napsali i vlastní miniaturní operační systém (dá-li se to tak vůbec nazvat), dnes sáhnou zpravidla po Linuxu. Ale proč? Z jednoho prostého důvodu - ty dnešní zdánlivě hloupé počítače toho překvapivě umí poněkud víc než osmibity před třiceti lety a napsat pro ně operační systém už není práce na pár člověko-dní, ale přinejmenším na pár člověko-let.

Hardware dnešních chytrých zařízení totiž ani zdaleka není hloupý. Naopak - je sofistikovanější než stroje, na kterých jsme ještě před 10 lety provozovali desktopové operační systémy! A co se týče operačního systému, posuzování sofistikovanosti je záludné. Linux je už přes 20 let terčem kritiky kvůli své monolitické architektuře, ale ta debata je spíš akademická. V praxi mu nedostatek sofistikovanosti vyčítat opravdu nelze a jde bezpochyby o kernel, nad kterém lze vystavět plnohodnotný desktopový operační systém.

Je už jen na každém studentu informatiky, jestli na svém bastlu z čínských součástek pustí Linux s Androidem nebo Linux s Ubuntu či jiným "sofistikovaným" desktopovým operačním systémem. Zvolí-li to druhé, vytvoří plnohodnotný počítač, který zvládne prakticky to samé, jako Altairova oblíbená Windows. Ani bezpečnost za nimi nebude pokulhávat. Ale na tom se snad shodneme.

Ale co když zvolí první možnost? Opravdu zvládne zařízení s Androidem či iOSem asi tak tři procenta toho, co "písíčko"? Zdánlivě ano. Ale zdání klame. Potíž je v tom, že nová zařízení pořád vnímáme starým zrakem. Ano, operační systémy "nových počítačů" opravdu nepůsobí na pohled sofistikovaným dojmem. Je to tím, že prezentační vrstvu operačního systému pomalu a potichu přebírá něco jiného, čemu pro nedostatek lepších termínů pořád ze zvyku říkáme "webový prohlížeč".

Prohlížeč jako univerzální API

S Mosaicem či Netscape Navigatorem mají přitom dnešní "prohlížeče" společného asi tolik jako Windows 10 s MS DOSem! Dnes je již "prohlížeč" téměř plnohodnotnou platformou a "webové aplikace" zvládnou většinu z toho, co umí "klasické" aplikace pro desktopové operační systémy. Editace textu? Žádný problém. Přehrávání filmů a hudby? Jde to. Síťová komunikace? Umíme. Upload či download hromady velkých souborů? Může být. Počítačové hry a pokročilá 3D grafika? Jakbysmet!

Pravda, něco z toho pořád nefunguje úplně dobře, úplně rychle či úplně všude (a třeba ta 3D grafika přes WebGL je na úrovni tak 5 let zpátky), ale směr vývoje je zřejmý. Z "webového prohlížeče" se stává jakési univerzální API mezi aplikační vrstvou a operačním systémem. Nejen z pohledu uživatele, ale i z pohledu vývojáře bude brzy operační systém naprosto irelevantní. Brzy už nebudeme řešit, jestli podporovat Windows, Linux, OS X, Android, iOS či Windows Phone, ale jestli podporovat "prohlížeč" Google Chrome, Apple Safari, Mozilla Firefox, nebo Microsoft Internet Explorer. Windows i Linux s námi sice zůstanou, ale už nebudou vidět.

Když se Microsoft před lety bránil nařčení ze zneužívání monopolního postavení nepřesvědčivým tvrzením, že prohlížeč je neoddělitelnou součástí operačního systému, ani jeho vlastní právníci nejspíš netušili, že ona provázanost jednou dosáhne takové úrovně, že operační systém bez prohlížeče bude prakticky k ničemu - zůstane z něho nakonec zas jen kernel bez prezentační vrstvy. Její roli převezme to, co se během několika následujících let teprve vyvine z webových prohlížečů a co zvládne nikoli 3 %, ale 97 % toho, co umí desktopové aplikace. A k tomu bude umět i spoustu věcí navíc.

Pro Microsoft to ale není moc dobrá zpráva - dojde-li na má slova, bude ještě trpčeji litovat, že ostudným zanedbáváním Internet Exploreru v letech 2001 až 2006 umožnil rozvoj podhoubí nových technologií, kvůli kterým se nakonec stal téměř irelevantním. I když to tenkrát ještě nikdo netušil, Microsoft svým zahálením umožnil malému a hbitému Firefoxu nahlodat díru do základů, na kterých stál zdánlivě nezdolný monopol Internet Exploreru. Tím otevřel zadní vrátka webu novým hráčům, kteří nakonec smetli z trůnu nejen dinosaura přezdívaného důvěrně "íéčko", ale i samotný Microsoft.

Stříbrné světlo

Přijmeme-li tento výklad, i osud Altairem zmiňovaného Silverlightu uvidíme v poněkud jiném světle. Ale dejme slovo Altairovi:

Jsou i horší případy, kdy Microsoft své partnery nejdříve pracně a složitě nalákal na nějakou technologii… a pak je nechal stát nahé na mrazu. To se týká třeba Silverlightu, který objektivně představuje velice dobrou cestu, jak dostat line of business aplikace do webového prohlížeče. Ale na volném internetu se neujal. A Microsoft jej přestal vyvíjet a kdo na něm postavil svou aplikaci, má problém s jejím dalším rozvojem.

Ano, Silverlight zpočátku opravdu vypadal nadějně. Byl postaven na tehdy populární platformě .NET a podobně jako starší Flash umožňoval vývoj multiplatformních webových aplikací. Pravda, to samé už o pár let dřív uměla i Java, ale firmy Microsoft a Sun ji v tom bizarním způsobem společnými silami zabránily - z Windows i Internet Exploreru ji prostě odstranily.

Ale vraťme se k Silverlightu. Ten skončil stejně jako konkurenční Flash mávnutím kouzelného proutku Steva Jobse, který je nepustil do svého nového operačního systému iOS. Od té chvíle už Flash ani Silverlight nebyly dostatečně multiplatformní. Kdo chtěl, aby jeho aplikace na iPhonu a iPadu fungovaly, musel se chtě-nechtě poohlédnout po jiné technologii. Což byl tehdy docela problém a vývojáři oprávněně spílali oběma stranám.

Microsoft přesto Silverlight neodepsal hned. Bohužel. Místo toho přestal vyvíjet Windows Mobile a narychlo přišel s novým mobilním operačním systémem Windows Phone 7, na kterém už aplikace napsané pro Windows Mobile nefungovaly. Založen byl právě na Silverlightu, ale ani nedostal šanci se ujmout, protože brzy po vydání bylo jasné, že jde o slepou uličku a že pro Windows Phone 8 se bude psát zase jinak. Nakonec sice i tam část Silverlightového API zůstala, ale jeho místo postupně přebírá jiné API, kterému Microsoft ani nedokázal vymyslet pořádné jméno a kterému vývojáři říkají Metro či WinRT.

Nová platforma není z velké části kompatibilní ani se Silverlightem, ani s klasickým .NETem (kromě prezentační vrstvy jde třeba o síťovou komunikaci nebo šifrování). Ani s ničím jiným. Což je vskutku husarský kousek - aplikace napsané v .NETu je jednodušší rozchodit (s pomocí Xamarin Studia) na iOS či Android než na Windows Phone! Není proto divu, že se do vývoje pro Windows Phone nikdo moc nehrne. Málokdo se chce spálit třikrát po sobě.

Moderní nebo překonané?

WinRT je stejné API, které používají "moderní" aplikace pro Windows Store, tedy pro "to nové a divné" dlaždicové prostředí" ve Windows 8 a 8.1.

Důvodů, proč na ně vývojáři neslyší, je více. Není úplně pravda, že jejich profesionální uživatelé takové aplikace nepotřebují - tenký klient pro ovládání čističky odpadních vod by v tom šel napsat bez problémů. Jenže bez zaplacení tučného "výpalného" či bez hacknutí počítače si takovou aplikaci nikdo nenainstaluje! Proč? Protože se tak Microsoft rozhodl. Jenže zapomněl, že není Apple. A dokonce i Apple nabízí malým a středním firmám výhodnější licenční podmínky, chtějí-li na iOS provozovat vlastní aplikace!

A pak jsou tu i další důvody. Zaprvé je budoucnost celé té "moderní" platformy ve hvězdách. Což odrazuje kromě firemních zákazníků i vývojáře aplikací určených přímo pro Microsoft Store a tedy "pro koncáky". Nové Universal Applications by sice už teoreticky měly běžet na Windows 10 i a Windows Phone 10 (a dá-li Nadella, tak i ve Windows 8.1 a Windows Phone 8.1), jenže ani to už nestačí, protože doba se změnila. Na zařízeních s Androidem či iOS totiž nepoběží. Na rozdíl od webových aplikací je navíc nutné je k uživatelům složitě tlačit přes Windows Store, který je stejně zbytečný a proprietární jako ten od Applu. Údajné "moderní" aplikace působí ve srovnání s aplikacemi webovými už dnes poněkud zastarale.

Zůstává záhadou, proč se Microsoft rozhodl vytvořit platformu, která není kompatibilní ani s jeho vlastními technologiemi. Ano, Stevu Jobsovi se to předtím povedlo, i když se mu Steve Ballmer smál. Ale to byla výjimka, ne pravidlo. Od té doby uběhlo 7 let a dnes už jsou karty rozdány úplně jinak. Ani svěží minimalistický design Metro nezachrání.

Windows v JavaScriptu?

Začíná dokonce hrozit, že vlna změn brzy smete i Apple. Protože až dokáží "webové aplikace" to samé, jako aplikace "nativní", i iOS se stane irelevantním a AppStore zbytečným. A ta doba už není daleko. První ránu si Apple zasadil minulý měsíc sám, když do iOS 8 přidal podporu pro WebGL, umožňující tvorbu webových aplikací s náročnou akcelerovanou 3D (a vlastně i 2D) grafikou. Následoval tak Microsoft, který se WebGL také podvolil až po dlouhém boji s příchodem Internet Exporeru 11. Novináři si toho většinou nevšimli, ale jde o další důkaz toho, že nastoupený směr už nedokáží zvrátit ani ti, kteří ho donedávna určovali.

Naopak Windows Phone mohou probíhající změny paradoxně zachránit. Webové aplikace mohou i na mobilech s Windows Phoně běžet stejně dobře jako na jakékoli jiné platformě.

Co ale s uživateli a programátory, kteří si zvykli na starý model? Inu, stačí chvilku počkat. Pak někdo napíše emulátor PC jako webovou aplikaci a na platformě, která "umí tři procenta toho, co PC", jim rázem poběží cokoli. Nevěříte? Tak koukněte sem. Sice to neemuluje PC, ale OpenRISC (a běží v tom zatím jenom Linux), ale umí to X Window i síťovou komunikaci, běží to na "chytrých zařízeních" a ani na iPhonu to není úplně pomalé. Můžete si v tom třeba zkompilovat a pustit aplikaci v C++. Dost bych se divil, kdyby se do dvou let neobjevil i emulátor plnohodnotného PC.

Takže se nebojte, Windows s námi zůstanou. Za pár let si je budeme pouštět na virtuálních strojích běžících v JavaScriptu! :-D