Platformově nezávislá káva může zhořknout

Java se stala jedním z fenoménů posledních let. Samotné slovo začíná fungovat jako jakási magická formule, tvrzení,...


Java se stala jedním z fenoménů posledních let. Samotné slovo začíná fungovat
jako jakási magická formule, tvrzení, že něco je napsané v Javě, se vykládá
téměř jako záruka kvality. Pokusím se nicméně uvést i několik argumentů proti
vizím o javové budoucnosti IT.
Poslední dobou se často setkávám s tím, že vývojáři si pokládají otázky, jestli
má programování v Javě vlastně smysl, co opravdu Java vývojářům a uživatelům
poskytuje a jestli v dnešním světě, kde dominují Windows, má Java své místo. V
poslední době jsem si položil podobné otázky sám a snažil jsem si na ně
odpovědět. Závěr, který jsem (původně sám pro sebe) vyvodil, bych si dovolil
prezentovat v tomto článku.
Platformová nezávislost
I začínající uživatel výpočetní techniky se setkal s faktem, že každý program
není možné spustit na každém počítači. Programátoři již odedávna toužili potom,
aby s přechodem na nový počítač nemuseli začínat "od píky". Již s příchodem
vyšších programovacích jazyků přišla na svět myšlenka kompatibility platforem
na úrovni zdrojového kódu.
Základní myšlenka Javy "write once, run anywhere" (napiš jednou a spusť
kdekoliv) a tedy kompatibilita na úrovni spustitelného kódu se stala pro mnoho
vývojářů velice atraktivní. Zejména na americkém trhu, kde je použití více
různých platforem uvnitř jedné organizace běžnou záležitostí.
Není Java jako Java
Java v této souvislosti přišla "jako na zavolanou". Zdrojové kódy jazyka je
možné přeložit do bytecodu a ten je možné spouštět kdekoliv, kde je k dispozici
runtime (zvaný honosně "Java Virtual Machine"). Tolik tedy v Javě jako k
programovacímu jazyku.
V dnešní době je však třeba striktně oddělovat od sebe Javu jako jazyk, javový
bytecode a Javu jako platformu. Dnes již totiž existují nástroje, které
umožňují generovat javový bytecode bez nutnosti psát zdrojové kódy v Javě, a
naopak existují i nástroje, které umožňují z javového zdrojového kódu generovat
platformově závislý kód. Počet těchto nástrojů se bude jistě zvyšovat, neboť
mnoha programátorům bude vyhovovat jazyk Java, ale o platformovou nezávislost
stát nebudou. Taktéž bude existovat (zřejmě poněkud menší) skupina
programátorů, kteří budou chtít vytvářet platformově nezávislé aplikace, ale
nikoliv v Javě.
Současné problémy
Java zatím trpí mnoha dětskými nemocemi. Je značně pomalá a náročná na
technické vybavení. Také se poukazuje na problémy se skutečnou přenositelností
javových aplikací, neboť se stále často stává, že aplikace v Javě nepracuje na
všech platformách tak, jak by měla. Růz-né verze JDK, otázky stability to jsou
poměrně vážné výtky, zvlášť, když k nim připočteme posměšný sarkasmus "write
once, debug everywhere" (napiš jednou a odlaďuj všude).
Současně je však třeba uvážit, že podobnou kritikou nešetří Microsoft a
konkureční zdroje uvádějí, že nejvíce potíží je právě s aplikacemi, napsanými v
J++ nástrojích anebo při použití Microsoft Java Virtual Machine. Je nutné si
uvědomit, že Microsoftu se platformová nezávislost koneckonců může jen stěží
líbit, neboť značná část jeho příjmů pochází z prodeje operačních systémů.
Argumentem Microsoftu také je, že operační systémy se vyvíjejí a každý operační
systém má svá specifika. Vývojáři, kteří budou vytvářet své aplikace těsně
spolupracující s operačním systémem, budou tak mít konkurenční výhodu a
vytvářet takovéto aplikace platformově nezávislé, to je samozřejmě téměř
nemožné.
Ne vše se daří
O tom, že vývoj aplikací v Javě je opravdu problematický, svědčí i jiné
skutečnosti. Velice závažným signálem pro mne je, že mnoho projektů "přepisu"
windowsových aplikací do Javy bylo zastaveno nebo skončilo "ve ztracenu" za
všechny jmenuji např. Javagator nebo Corel Office for Java.
Navíc se nabízí otázka: proč vůbec vyvíjet platformově nezávislé aplikace, když
více než 90 % nových počítačů jsou počítače s platformou 32bitových Windows? To
je jistě velmi pádný argument, neboť vývoj nových aplikací v Javě není rozhodně
levnou záležitostí. Protiargumentem může být, že právě Java bude naopak tím, co
umožní, aby se rozšířily i jiné platformy. Postupně také přicházejí na trh
zařízení, která považují Javu za vlastní, nativní platformu. Tato zařízení jsou
většinou koncipována tak, aby se mohla na trhu prosadit svou nízkou cenou. V
tuto chvíli se ovšem na trhu ještě příliš neuplatnily a jejich nástup je tedy
přinejmenším poněkud pomalejší, než se původně předpokládalo.
Srovnání s Windows
Nutno však podotknout, že příchod platformy Windows vypadal zpočátku velice
podobně jako příchod Javy. Windows byly pomalé, neohrabané a vyžadovaly na svou
dobu velice "silný" hardware. Posléze však o úspěchu Windows rozhodli
uživatelé, kterým se tento OS prostě líbil. A v případě Javy by se tato
historie mohla klidně opakovat. Každopádně je však potřeba nabídnout uživatelům
něco, co by zvýšilo jejich zájem o aplikace napsané v Javě. Co by to mohlo
konkrétně být, to raději nechám vizionářům.
Servlety
Poslední dobou se Java také nasazuje na servery (v podobě tzv. "servletů").
Právě zde má velké opodstatnění platformová nezávislost, neboť na straně
serverů se (na rozdíl od jednoznačné dominance Windows na straně klientů)
používá stále velmi mnoho různých platforem.
Na serverové komponenty jsou však obvykle kladeny velké nároky na výkon, kde
Java zatím dnes příliš neobstojí. Dodavatel informačního systému si také může
snáze "poručit", jakou platformu je třeba pro provoz serveru (na rozdíl od
platformy klientů, kde by si uživatelé rádi zachovali stávající platformy).
Nativní kompilace Javy přímo do prostředí příslušného serverového operačního
systému na jednu stranu zmírňuje problémy s rychlostí, na druhé straně činí
spornou uváděnou platformovou nezávislost.
Komu ku prospěchu?
Pomineme-li přímo tvůrce Javy, zatím největší radost a nadšení z Javy dávají
najevo výrobci vývojových nástrojů aby také ne, když vám současně potřebují
prodat nástroje pro vývoj v Javě.
Je potřeba si uvědomit ještě jednu rovinu celého problému. Microsoft, který
ovládá značnou část trhu s informačními technologiemi, získal (a získává) v
mnoha oblastech monopolní postavení. Jedním z mála způsobů, jak může monopol
přijít o své monopolní postavení je, že opomene určitý "trend" (či "posun") v
technologiích, a ostatní výrobci jej předeženou. Už jednou se to Microsoftu
málem stalo v případě Internetu. Nyní se může snadno situace opakovat v případě
Javy zde je ovšem třeba opět velmi jemně rozlišovat Javu jako programovací
jazyk, Javu jako platformu a Javu jako bytecode.
Otázky a zase otázky
Nabízí se stále mnoho pochybností, proč používat Javu. Nabízí se otázka, jestli
kompatibilitu v rámci organizace by nebylo lepší (levnější) vyřešit
"přezbrojením" na jednu platformu. Kontranámitkou je samozřejmě přechod z PC
přímo na javové platformy.
Java má i další velmi silnou konkurenci, kterou jsou dynamicky generované HTML
stránky. Je dobré si uvědomit, že aplikace v podobě dynamicky generovaných HTML
stránek jsou stejně jako Java platformově nezávislé přinejmenším teoreticky.
WWW prohlížeč je pak obvykle i tam, kam třeba ještě Java nedorazila. Tyto
aplikace jsou dále pro klienta zcela bezpečné a velmi nenáročné na technické
vybavení (jsou tzv. "ultratenké"). Pokud ještě dynamické HTML stránky doplníte
skriptováním na straně klienta (a smíříte se s horší přenositelností), možnosti
se vám ještě rozšíří. K tomu na straně klienta ještě přibývá možnost DHTML. Na
rozdíl od aplikace napsané v Javě vyžadují dynamicky generované HTML stránky
častější komunikaci klienta a serveru. Otázka může být tedy položena i tak, zda
je výhodnější přenášet jednou po síti applet nebo častěji datově nenáročný kód
HTML. I to samozřejmě záleží na řadě okolností...
Častou námitkou vůči Javě je rychlost javových aplikací. Pokud pomineme nativní
kompilaci nebo čas strávený stahováním appletu, je za rychlost Javy odpovědný
především příslušný virtuální stroj, tedy Java Virtual Machine. Právě na poli
JVM probíhá válka mezi řadou firem, přičemž všechny zúčastněné strany
pochopitelně tvrdí, že právě jejich JVM je nejrychlejší. Rozvoj na poli JVM
však každopádně vede k tomu, že pomalost Javy je již spíše minulostí.

Budoucnost Javy
Pokud jste očekávali, že tento článek vám přinese jednoznačnou odpověď, jaký
vztah zaujmout k Javě, musíme vás zklamat. Je mnoho důvodů, proč si myslet, že
Java je platformou budoucnosti, ale současně i řada důvodů, proč si myslet
spíše opak.
Vše se však asi rozřeší poměrně brzy - Java buď obstojí, čímž myslím, že
vznikne skupina kvalitních platformově nezávislých aplikací, anebo neobstojí a
manažeři v oboru IT přestanou Javě věřit a přestanou financovat příslušné
javové projekty. Vše také závisí na postoji uživatelů - neboť jsou to v
konečném důsledku zejména oni, kdo ovlivňují trh.

Častou námitkou vůči Javě je rychlost javových aplikací. Pokud pomineme nativní
komplikaci nebo čas strávenýstahováním appletu, je za rychlost Javy odpovědný
především příslušný virtuální stroj, tedy Java Virtual Machine. Právě na poli
JVM probíhá válka mezi řadou firem, přičemž všechny zúčastněné strany
pochopitelně tvrdí, že právě jejich JVM je nejrychlejší. Rozvoj na poli JVM
však každopádně vede k tomu, že pomalost Javy je již spíše minulostí.

8 2665 / pah









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.