Až Vám zčerná obrazovka, přejděte na Linux!

Proč používat Linux

středa 16. dubna 2008

Java prý prohrává boj o Web

Po delší době jsem zase brouzdal The ServerSide a musel jsem se opravdu zasmát. Přečetl jsem si "Java is losing the battle for the modern web"..., reakci Josepha Ottingera na Java is losing the battle for the modern Web. Can the JVM save the vendors? od Andiho Gutmana. Lidi, číst si některé blog2blog flameware, to je vám fakt někdy švanda. První něco ne zrovna inteligentního vymyslí pro podporu svého tvrzení, druhý to navíc špatně pochopí a polemizuje s tím. No nic.
Přesto je dobré si ona dvě zamyšlení přečíst. Andi se snaží přijít na to, proč je LAMP tak úspěšný a prosazuje se oproti Java EE řešení.
Zaujala mne myšlenka o větší RESTovosti LAMP řešení oproti klasice v Javě, která je podle něj navržena více na Enterprise aplikace a Webový Xicht je tam přidán tak nějak jako navíc. S tou historickou skutečností má dozajisté pravdu. EJB, gró J2EE, vznikaly nezávisle a odděleně od JSDK. JServ jsme používali a EJBoss byl ve stavu nepoužitelném.
Co se týká RESTovosti, tak tady je to dáno geneticky. Spustit CGIčko bylo velice rychlé, obzvláště když byl skript nakešován. Navíc CGI nemohlo být stavové a tak se všechna data předávala v INPUT HIDDEN tazích. Oproti tomu spouštět JVM pro každý request by znamenalo si vyrvat vlasy. Je celkem pochopitelné, že chtěl-li Sun dostat Javu i na serverovou stranu, musel JVM pověsit na ServerSocket. Ono to mělo zase spoustu výhod. Najednou přibyla stavovost a všichni tvůrci Webových aplikací (no, moc nás tehdy nebylo) jásali, protože si mohli data držet v HttpSession. A ano, zde se ztratil REST.
Časem ale došlo k velkému sblížení. PHP dostalo session (ó, jaká to výhoda oproti Perlu, máme podporu session přímo v systému!), J2EE patterny tvrdí něco o bezstavovosti a držení si stavu v DB, což je momentálně jediný způsob, jak si ho drží Perl či Python.
Takže o větší RESTovosti LAMPu to není. Aplikace je tak RESTová, jak se napíše.
Další zajímavý poznatek je o multiprocess versus multithread. Dozajista pád skriptu nemusí nutně znamenat pád celého systému. Ale řekněme si to jinak - od dob mod_php či mod_perl je schopen vzít s sebou skript celý apache. Deadlocky nechrozí jenom zdánlivě - maximální počet spojení na MySQL se při tuhnutí skriptu velice brzo vyčerpá, to mi věřte.
Já si myslím, že hlavní rozdíl je v nasazení. V rámci komunity se vyvíjí především na LAMP ve stylu komunita sobě, komerčnímu světu zase vládne spíše J2EE, protože platící zákazník požaduje záruku stability a pro většinu z nich není ani PHP ani MySQL dostatečnou zárukou. Proto je možno z Webu stáhnout LAMP OpenSource aplikace a vrznout je na svůj LAMP server, kdežto málokdy stáhnete OpenSource .ear .

Žádné komentáře: