Hlavní navigace

Proč je Java za zenitem

24. 3. 2014 23:53 (aktualizováno) | zboj

Java vznikla jak odpověď na tristní stav vývoje softwaru v 90. letech. Na vině byl hlavně Microsoft se svým příšerným Winapi a nízká portabilita kódu v C(++). Java se silně (zejména v oblasti knihoven) inspirovala OpenStepem (což byl ostatně částečně produkt Sunu), hlavně proto, že Sun koupil několik firem vyvíjejících pro OpenStep. První verze Javy ničím moc neoslnila, ale krok za krokem se z ní pomalu stávala zajímavá platforma.

Navzdory několika pokusům se Java nikdy neuchytila na desktopu a její jedinou doménou se tak staly serverové aplikace. Tím se ostatně liší i od svého klonu C#, v němž vznikaly a dodnes vznikají desktopové aplikace založené na knihovnách, jež jsou jen obaleným Winapi. Jenže Java jen zaplnila mezeru na “trhu” jazyků. Malé weby si vystačí s PHP nebo něčím podobným. Velké informační systémy a kritické aplikace (burzovní systémy, banky, řízení letového provozu, vesmírné projekty) využívají efektivní jazyky a platformy. Java tak zbyla pro středně velké projekty, kterých je ale najvíce a u kterých je velký tlak na čas a na nízké náklady. Tato souhra faktorů logicky vyžaduje velké množství vývojářů, a protože těch opravdu dobrých je jen omezené množství, zbyly na projekty v Javě (čest výjimkám) hlavně ti průměrní (a ti pod nimi). Jako poznámku na okraj uveďme, že vysoce specializované aplikace ve vědě a výzkumu Javu nepoužívají snad nikde, různé mezní disciplíny (mající ve svém anglickém názvu často “computational”, např. komputační lingvistika, komp. fyzika, chemo- a bioinformatika) založené na zpracování obrovského množství dat téměř výhradně implementují algoritmy v C(++). Například řešení SAT je v Javě zhruba třikrát pomalejší než v C(++). Což je u problémů, jejichž řešení vyžaduje hodiny, docela rozdíl.

Současná situace Javě příliš nepřeje. Posun vývoje k mobilním a embedded aplikacím přeje spíše nativnímu kódu. Prozatímním ostrůvkem zůstává Android. Na serverech čím dál více kraluje .NET, kdysi chudší kopie Javy (nejen C#, ale celá koncepce), jež však rychle svůj vzor dohnala, předehnala a zmizela mu z dohledu. K tomu částečně přispívá i pomalý vývoj Javy (nejen C#, i C++ a Objective-C jsou z pohledu moderního vývoje značně dále) a nejistota jejího dalšího rozvoje pod Oraclem.

Právě v těchto dnech sice přichází Java 8, jenže ani tato verze nic moc nového nepřináší. Java se pomalu stává Cobolem dnešní doby. Existence obrovského množství “legacy” kódu nedá Javě zahynout a bude ještě značně dlouho živit nesčetné zástupy kodérů. Ale Java už dávno ztratila své kouzlo.

 

Pár reakcí na komentáře:

ObjC – že prý zrůdnost. Jistě, někteří tak tvrdí, většinou ti, co nenávidí Apple (což je ale záležitost pro psychiatra). ObjC nemůže za to, že bylo Applem koupeno. Z technického pohledu se jedná o geniální jazyk právě syntaxí (vysokou čitelností). Kód je self-documenting. Výkonově a koncepčně je mezi C++ a Javou.

SAT – v Javě je pomalý inherentně, ne proto, že to někdo blbě napsal. Autor komentáře chce nejspíš bránit „výkon“ Javy, může tedy zkusit udělat v ní rychlý SAT. Zatím se to nepovedlo ani těm nejlepším z nejlepších.

Linux na desktopu – co použít je otázka částečně subjektivní. Zkusil bych nějaký GUI framework v C++. Ale hodně to záleží na zadání.