Come il linguaggio Java stesso, le servlet sono state progettate per ottenere la massima portabilità e sono accettate da tutte le piattaforme che offrono un supporto Java e che funzionano con tutti i principali server Web.
Le servlet Java, stando alla definizione offerta dalla divisione Java Software di Sun Microsystems, sono un Optional Package per java. Ciò significa che le servlet sono ufficialmente riconosciute da Sun e fanno parte del linguaggio Java, anche se non nel nucleo fondamentale dell'API Java; esse, invece, sono comprese nella piattaforma J2EE.
Per agevolare il lavoro di sviluppo delle servlet, Sun ha reso disponibili le classi delle API separatemente da qualunque motore Web. I pacchetti javax.servlet e javax.servlet.http sono gli elementi costitutivi di questa Servlet API. L'ultima versione di queste classi può essere prelevata dalla pagina http://java.sun.com/products/servlet/download.html.
Tutti i server Web che offrono supporto per le servlet devono utilizzare classi internamente (anche se potrebbero utilizzare un'implementazione alternativa), pertanto questi file JAR si trovano in genere anche in qualche punto della distribuzione del proprio server Web nel caso in cui offra supporto per le servlet.
Oltre alle classi delle servlet, è necessario un esecutore di servlet, tecnicamente chiamato servlet container o anche servlet engine, in modo da poter verificare e mettere in opera le proprie servlet.
La scelta del servlet container dipende in parte dal server o dai server Web in esecuzione.
Esistono tre generi di Servlet container: autonomi, aggiuntivi e incorporabili
Sevlet container autonomi
Un servlet container autonomo è un server che include un supporto nativo per le servlet. Questo container ha il vantaggio di far funzionare ogni cosa fin dal principio, presentando però lo svantaggio che è necessario attendere una nuova release del server Web per ottenere il supporto per servlet più aggiornate. Un altro svantaggio è che i produttori del server in genere supportano solo la JVM da essi fornita.
Tra i server Web che offrono supporto autonomo ci sono quelli inclusi nell'elenco che segue:
- Tomcat Server di Apache, l'implementazione di riferimento ufficiale per il modo in cui il servlet container deve fornire supporto per le servlet. E' scritto interamente in Java ed è disponibile gratuitamente con licenza open source. Questo server può operare in modo autonomo o come come componente aggiuntivo, offrendo il supporto per i servlet ad Apache o altri server. Può persino essere impiegato come container incorporato.
Insieme a Tomcat, Apache sviluppa l'implementazione standard dei pacchetti javax.servlet e javax.servlet.http.
Si veda il sitohttp://jakarta.apache.org.
- iPlanet (Netscape) Web Server Enterprise Edition forse il server Web più famoso tra quelli commerciali che offrono supporto servlet integrato. Maggiori dettagli al sito http://www.iplanet.com
- WebSite Professional di O'Reilly, con funzionalità simili a iPlanet Enterprise Server ma un prezzo inferiore. http://website.oreilly.com.
- Zeus Web Server, un server Web che alcuni considerano il più veloce tra quelli disponibili. http://www.zeus.co.uk.
- Resin di Caucho, un container open source che vanta ottime prestazioni. Può funzionare in modalità autonoma o come componente aggiuntiva per molti server. http://www.caucho.com.
- LiteWebServer di Gefion Software, un piccolo servlet container (poco piu' di 100k) concepito per essere impiegato laddove le dimensioni sono importanti, come l'inclusione nelle versioni dimostrative delle applicazioni.http://www.gefionsoftware.com/LiteWebserver
- Jigsaw Server del World Wide Web Consortium, open source e scritto interamente in java. http://www.w3.org/Jigsaw.
- Java Web Server di Sun, il server che ha dato inizio a tutto. Questo server è stato il primo ad implementare le servlet e ha agito come effettiva implementazione di riferimento per le Servlet API 2.0. E' scritto interamente in Java (tranne due librerie di codice nativo che ne migliorano le funzionalità ma non necessarie). Sun ha sospeso lo sviluppo del server, preferendo concentrarsi sui pacchetti iPlanet/Netscape come parte dell'alleanza Sun-Netscape. http://java.sun.com/products.
I server di applicazioni sono un'area di svilupppo in crescita. Essi offrono supporto sul lato server per lo sviluppo di applicazioni a livello di impresa. La maggior parte delle applicazioni Java supportando le servlet e tutto il resto della specifica J2EE(Java 2 Enterprise Edition). Tra questi server troviamo quelli elencati di seguito.
- WebLogic Application Server di BEA System, uno dei primi e più famosi application server basati su Java. http://www.beasys.com/products/weblogic.
- Orion Application Server, sofisticato ma dal prezzo relativamente contenuto, scritto interamente in Java. http://www.orionserver.com.
- Enhydra Application Server, open source prodotto da Lutris. http://www.enydra.com.
- Borland Application Server 4, che rivolge particolare attenzione a CORBA. http://www.borland.com/oppserver.
- WebSphere Application Server di IBM, di alto profilo basato in parte sul codice di Apache. http://www.ibm.com/software/webservers.
- Application Server di Oracle, un server concepito per l'integrazione con i database Oracle. http://www.oracle.com/appserver.
- iPlanet Application Server, il fratello maggiore compatibile J2EE di iPlanet Web Server Enterprise Edition. htpp://www.iplanet.com/products/infrastructure/app_servers/nas.
- GemStone/J Application Server, un server Java di una società nota in precedenza per il suo server Smalltalk. http://www.gemstone.com/products/j.
- JRun Server di Allaire, un semplice servlet container cresciuto fino a diventare un container avanzato che offre molte tecnologie J2EE, tra cui EJB, JTA e JMS. http://www.allaire.com/products/jrun.
- Silverstream Application Server, un server completamente compatibile con J2EE, anch'esso concepito come servlet container. http://www.silverstream.com.
Servlet container aggiuntivi
Un servlet container aggiuntivo funziona come plug-in per un server: aggiunge il supporto per servlet a un server che in origine non è stato concepito per esse o a u server con un'implementazione servlet di basso profilo o obsoleta.
Sono stati scritti servlet container aggiuntivi per molti server, tra cui Apache, iPlanet, FasTrack Server e Enterprise Server, Microsoft Internet Information Server e Personal Web Server, O'Reilly WebSite, Lotus Domino Go Webserver, StarNine WebSTAR e AppleShare IP della Apple. Alcuni tra questi sono elencati di seguito.
- ServletExec di New Atlanta, un plug-in concepito per offrire supporto per i servlet a tutti i server Web più diffusi per tutti i principali sistemi operativi. Include un debugger gratuito. http://www.servletexec.com.
- JRun di Allaire disponibile come plug-in per offrire supporto per servlet a tutti i server Web più diffusi per tutti i principali sistemi operativi. http://www.allaire.com/products/jrun.
- Il modulo JServ del progetto Java-Apache, un servlet container open source disponibile gratuitamente che offre supporto per i servlet al diffussisimo server Apache. Lo sviluppo di JServ è stato completato e Tomcat Server ha sostituito JServ. http://www.java.apache.org.
Servlet container incorporabili
Un container incorporabile è in genere una piattaforma leggera per il deployment delle servlet che può essere incorporata in un'altra applicazione. A questo punto l'applicazione diventa il server vero e proprio.
Tra i servlet container incorporabili vi sono quelli elencati di seguito.
- Tomcat Server di Apache, sebbene in genere esso venga utilizzato come server autonomo o aggiuntivo, esso può essere incorporato in un'altra applicazione se necessario. Open source.
- Nexus Web Server, un esecutore di servlet disponibile gratuitamente che implenta la maggior parte delle Servlet API e che può essere facilmente incorporato nelle applicazioni Java. http://www.uk.hpl.hp.com/people/ak/java/nexus.