úterý 1. ledna 2008

O komplexnosti

Je opravdu Java tak neefektivní pro tvorbu webových aplikací a nebo je to jenom mýtus? Jednou z nevýhod Javy, která bývá často vznášena, je přílišná komplexnost. Mezi další nevýhody patří hosting a deployment. Zpět k té komplexnosti Javy pro webové aplikace. Položme si otázku, co za tou komplexností vězí.

Kdy jsem se o tom bavil s Vlastou Vávrů, kerý může porovnávat svět Javy i PHP, tak z naší diskuse vyplynulo, a nebo jsem si to alespoň tak přebral, že tvorba webových aplikací v Jave vyžaduje mnohem větší znalosti. Skončili jsme u oddělení vrstev, řízení transakcí, optimistickém zamykání dat a nebo ORM frameworků. Klíčové je položit si otázku, jestli všechny tyto technologie a postupy musíte použít.

V Java světě vám každý druhý řekne, že samozřejmě ano. Máme o tom spoustu informací, takže funguje něco jako všeobecné povědomí. Povědomí: "Chceš dělat webovou aplikaci? Na to potřebuješ technologii X a transakce a ORM řešené Y atd.". Ve skutečnosti stačí obyčejné JSP a Servlety a standardní API Javy. Pokud si to připustíme a budeme ignorovat infrastrukturní problémy, které jsem zmínil na začátku článku, pak je komplexnost zvoleného řešení (JSP, Servlety, J2SE API) srovnatelná s PHP.

Jenže v zápětí vám každý zkušenější webový vývojář omlátí o hlavu, že je potřeba oddělit data od jejich prezentace. Takže na jakékoliv platformě skončíte u nějakého MVC frameworku. Tím je ovšem přidaná další úroveň komplexnosti. A takhle se v tom vrstvení komplexnosti dá pokračovat dále. Klíčové je uvědomit si, jaká úroveň komplexnosti je pro danou aplikaci ještě akceptovatelná a tu nepřekročit.

Nemůžeme jednoduše říci, že stavět webové aplikace nad RoR je jednoduší než v Jave a nebo v PHP. Vždycky totiž musíme vzít v úvahu míru komplexnosti, kterou vyžaduje daná aplikace. Na druhou stranu si myslím, že některé webové aplikace tvořené v Jave si vlastní komplexnost zvyšují uměle a jsou předesignované. Ale to podle mého soudu není důvod považovat obecně Javu pro tvorbu webových aplikací jako příliš složitou a komplexní.