úterý 26. června 2007

Další porovnání PHP, ASP.NET a Javy

Se zájmem jsem přečetl článek Krátké zamyšlení nad platformami pro vývoj webových aplikací (PHP, Java, Asp.NET) na blogu Vlasty Vávrů. Hodně podobných článků má jednu zásadní chybu a to, že jejich autor má přinejlepším pouze praktickou zkušenost s jednou z výše uvedených technologií a o zbytku možná něco četl. Naproti tomu jsem v tomto článku našel náhled od člověka, který všechny tři technologie používal prakticky a to na reálných projektech.

S trochou despektu nahlížím na módní vlnu kolem frameworku Ruby on Rails a na všechny jeho fanatické vyznavače. O RoR mluvím v souvislosti se zmíněným článkem, protože všechny tři zmíněné technologie jsou na svých "vlnách" daleko jinde. Analytici z firmy Gartner údajně vymyslely hype cycle, který popisuje stavy, ve kterých se každá technologie nachází (zdroj mailová konference java.cz).

  • technologická spoušť
  • vrchol přehnaných očekávání
  • žlab deziluze
  • svah osvícení
  • planina produktivity

Srovnání PHP, ASP.NET a Javy je vhodné, protože všechny tři jsou přibližně na pomezí svahu osvícení a planiny produktivity. Kdežto RoR je na vrcholu přehnaných očekávání.

Servlety - co nás čeká a nemine (doufejme)

Minulý týden se pod JSR 315 objevila specifikace Servlet 3.0. Netuším sice proč se změnilo číslování, když poslední verze byla 2.5, ale to není to podstatné. Servlet 3.0 specifikace je plánována pro J2EE 6.0 a je řízena dvěma hlavními tématy a to jednoduchý vývoj a jednoduchá integrace web frameworků postavených nad Servlety.

jednoduchý vývoj
Servlety byla jedna z mála oblastí, které se nedotkly změny v Jave 5, speciálně anotace a generiky. To by měla verze 3.0 napravit. Další pěkná věc, která se osvědčila v EJB 3.0, je minimální nutná konfigurace a eliminace XML deployment descriptorů.
integrace web frameworku
Většina web frameworků se integruje na úrovni web.xml kde se definuje servlet či listener pro inicializaci a příjímání požadavků. Díky anotacím by nemělo být nutné deklarovat tyto věci v web.xml. Dále by mělo být servlet API rozšířeno o možnost programového přístupu web.xml a možnost měnit zadané hodnoty.
zpracování požadavku
Neblokující čtení/zápis, odložení zpracování požadavku, asynchronní notifikace a další požadavky, vyplívající z Comet přístupu viz článek Komety přilétají.
bezpečnost
podpora přihlášení, odhlášení, registrace. Není mi sice moc jasné jak tyto konkrétní operace začlenit, ale uvidíme.
spolupráce s dalšími JSR v J2EE 6.0
Především se jedná o připrované specifikace pro JSF 2.0 (JSR 314) a REST (JSR 311) a z nich vyplývající požadavky.
drobné úpravy
vylepšená welcome file definice, pořadí servlet context listenerů, file upload podpora (progress listener)

K přispěvatelům a inspiraci v oblasti integrace budou použity známe open source frameworky jako Grizzly (HTTP/S connector), DWR (Comet a AJAX framework), servlet kontainery Jetty, Apache a webframeworky jako Struts, Shale, Spring Web Flow. První veřejné review specifikace by mělo být k dispozici na konci tohoto roku.