úterý 28. března 2006

Několik nesmyslů o Jave

A já si dycinky myslel, že je ScienceWorld a potažmo ComputerWorld erudovaný zdroj. Po tom, co jsme si přečetl článek Kde jsou kdysi žhavé technologie? (via článek Paval Housera Jak jsme se mýlili v prognózách: WAP, XML, sémantický web...) budu muset změnit názor. Tolik nesmylů o Jave, na tak malém kousku textu, jsem dlouho neviděl.

Java úplně všude

Už od svých počátků byla Java považována za něco, co dobude svět. Jako vysoce objektově orientovaný jazyk byla mnohem elegantnější než její předchůdci. Javovský kód stačilo napsat jednou a mohl běžet kdekoliv. Byla rychlá, spolehlivá i bezpečná. Byla... Java zkrátka nabízela vše, co můžete od vývojového nástroje požadovat. Vzhledem ke slibům, jimž měla dostát, je rozsah, v němž je Java opravdu úspěšná, neuvěřitelně malý.

Vypíchnu ty nejúspěšnější, o kterých nemůže nikdo ani náznakem polemizovat: mobilní zařízení, middleware (server technologie)

Je těžké ale některá zklamání zcela ignorovat.Prvním problémem Javy byly aplety. Macromedia si pro sebe utrhla oblast tzv. bohatých médií (rich media), čímž Javu na straně klienta odsunula na okraj, do oblasti meziplatformových utilit a nástrojů pro správu.

Snad jediná část, se kterou se dá souhlasit. Applety nikdy nedosáhli takového rozšíření jak se očekávalo. Nyní lze jenom spekulovat, jak by to s Applety vypadalo, kdyby součásti Windows byla pokročilejší verze Javy.

Jazyk nakonec našel své příznivce především na serverové straně.Avšak v té době se léta neustálých změn v SDK (Software Development Kit) a fakt, že mnohá rozhraní API byla těžko pochopitelná a občas ne zcela povedená, už projevily zamlžením kdysi elegantního designu. Nejenže to často zmátlo nováčky, ale beznadějnou se stala i snaha o zachování kompatibility s předchozími verzemi.

Tak tohle je absolutně nekonkrétní blábol. Design javy se neměnil, pokud je tím myšlena architektura. Jednotlivé rozšíření API jsou, byly a budou zpětně kompatibilní. Pokud někdo ze ctihodných čtenářů ví, může v diskusi napovědět co tím chtěl básník říci.

Java 2 s sebou přinesla podnikovou variantu (Enterprise Java), pravděpodobně první skutečně vyspělou verzi.

Autorovi zřejmě nikdo nevysvětlil jak to bylo s verzováním Javy ba co více, jaký je zakladní rozdíl mezi SE (Standard Edition) a EE (Enterprise Editon) a jak spolu souvisí. Každý trochy znalý totiž ví, že EE je nadstavbou na SE (definuje API, obsahuje specifikaci jazyka apod.). Není SE, není EE. Například pro tvorbu desktopových aplikací, appletu či midletu (mobilní aplikace) v Jave není potřeba ani kousek z enterprise edice.

I přesto mnohé z vývojářských firem nadále preferují běžné servlety před mnohem složitější architekturou EJB (Enterprise JavaBeans), údajným nejzářivějším klenotem platformy J2EE (Java 2 platform Enterprise Edtion).

Uff kde začít. EE se skládá z velkého množství technologiii pokrývajících specifické části. Servlety a JSP slouží v EE pro tvorbu uživatelského rozhraní webových aplikací. EJB je technologie, zjednodušeně řečeno, pro distribuované serverové komponenty.

Pokud chcete mít webovou aplikaci a rozhodnete se, že aplikační vrstvu napíšete v EJB, pak pro prezentaci dat použijete Servlety a JSP. Čili tyto technologie spolu kooperuji a nemohou se vylučovat, protože každá slouží k něčemu jinému. Nadto se sluší dodat, že EJB není klenotem a uvnitř komunity byla podrobena velké kritice a hledání alternativ, kterté vyustili v EJB 3.0. Něco málo o EJB a alternativách lze najít v článku o J2EE kontejneru Spring.

Navíc ti, kteří rovnou přešli na J2EE, dnes do značné míry obětují výhodu přenositelnosti Javy, tedy možnost napsat kód jedenkrát a spouštět jej kdekoliv, ve prospěch proprietárních rozšíření svých aplikačních serverů.

Tohle je špatně formulovaný nesmysl. Přenositelnost vlastního java programu jako takového není ohrožena. Proprietární jsou deployment descriptory (XML konfigurace pro nasazení aplikace), které má každý server jiný. Co se týká rozšíření API, je to na každém jestli si přeje svázat vlastní kód s něčím proprietárním (specifické API) a nebo šáhne po alternativě, která je skoro pokaždé k dispozici.

A vzhledem k tomu, že i skalní vývojáři open source stále častěji sázejí na konkurenční technologie, jako je C# společnosti Microsoft (prostřednictvím platformy Mono), šance Javy na ovládnutí světa se zmenšují.

Z toho by si jeden mohl vyvodit, že open source se dělá v DOT.NETu a to především v tom neoficiálně portovaném pro Linux (pokud se nepletu tak to není ani celé převedené). To snad ani nepotřebuje komentář...

Co si pak má člověk myslet o zbytku článku, když si přečte takovéhle nesmysly?