Applet, Servlet, JSP, Tomcat, Axis, J2EE, EJB, JAXP, Struts, Tag libraries, ... : ci sono decine di tecnologie collegate alle applicazioni Web di Java. Come fare per capirci qualcosa?
Qui cercheremo di classificarle riferendoci a 4 livelli (in ordine di scalabilita' e complessita') di applicazioni Web.
Livello 0 - A questo livello abbiamo gli Applet.
Livello 1 (cgi-bin) - La realizzazione di un cgi-bin in Java e' sorprendentemente difficile. Non potete far partire un'applicazione Java qualsiasi: la partenza della JVM e' lentissima ed inoltre richiede notevoli risorse. Mentre in altri linguaggi come Perl, C, C++, etc non fate altro che mandare in esecuzione un normale programma. La soluzione di questo problema per Java richiede 2 cose essenziali: i servlet (specie di applet lato server) + un server come Tomcat specializzato per l'esecuzione di programmi Java. Questo server tiene la JVM sempre pronta in memoria per cui l'attivazione di un servlet e' veloce.
Livello 2 (PHP) - Ora a Tomcat + servlet bisogna aggiungere JSP - Java server Pages specie di PHP in Java. Tomcat puo' eseguire pagine html contenenti istruzioni in JSP. Pero' tutto questo non basta per arrivare al livello di PHP+Apache. Perche? Il problema e' che le pagine JSP non sono che servlet semplificati. Cioe' siamo ancora al livello dei cgi-bin. Invece un modulo PHP dentro Apache scala molto meglio in quanto ottimizza la risposta alle richieste contemporanee ricevute. (Per esempio: mentre pagine JSP continuerebbero ad aprire collegamenti con un data base, il modulo PHP apre un certo numero di collegamenti e li riusa). La soluzione Java e' di usare un framework come STRUTS o qualcosa di simile. Struts facilita la scrittura di applicazioni che scalano facilmente suddividendo le classi in 3 categorie Model View e Controller. L'applicazione Struts usa di solito Java Beans per la parte Model, servlet per la parte Controller e JSP per la parte View. A questo livello esistono varie librerie di comandi JSP gia' pronti a cominciare dalla JSTL(Java Server Pages Standard Library). Come per PHP, a questo livello e' possibile realizzare anche servizi web secondo gli standard W3C (XML+SOAP+WSDL) anche se non scalano molto bene. Una ricetta possibile e' usare Axis che viene installato come servlet di Tomcat e ci permette di creare client e server di un servizio Web definito dalla semplice interfaccia.
Livello 3 (Enterprise) - Per questo livello la Sun ha messo su la versione Enterprise J2EE di Java (da confrontare con la versione J2SE Standard). Inoltre a realizzare la parte Model (detta anche businness) si passa dai Java Beans agli EJB (Enterprise Java Beans). Al contenitore di servlet e JSP si aggiunge un contenitore di EJB . Si parla esplicitamente di 2 sottolivelli del livello di mezzo : il livello server web (tipo Tomcat) e il livello businness(contenitore di EJB). JBoss , lo stesso J2EE , WebSphere , JBuilder , etc forniscono tutti il supporto per questi 2 sottolivelli. Il contenitore EJB , oltre a fornire cio' che forniva STRUTS (disaccoppiamento MVC) fornisce anche servizi avanzati di supporto come transazioni(JTA,JTS), messaggeria(JMS),posta (Javamail), naming e directory (JNDI), sicurezza. Nelle piattaforme di sviluppo J2EE e' incluso anche il supporto dei servizi Web tipo W3C con strumenti che creano in maniera automatica server e client a partire dall'interfaccia.