CGI i Servlet
CGI (Common Gateway Interface) prvi je pokušaj pružanja korisnicima dinamički sadržaj. To korisnicima omogućuje izvršavanje programa koji se nalazi na poslužitelju za obradu podataka, pa čak i pristup podacima kako bi se stvorio relevantan sadržaj. Budući da su to programi, oni su napisani u izvornom operacijskom sustavu i zatim pohranjeni u određenom direktoriju. Servlet je implementacija Java koja nastoji pružiti istu uslugu kao i CGI, ali umjesto programa sastavljenih u izvornom operacijskom sustavu, sastavlja se u Java bajtkod koji se zatim pokreće u Java virtualnom stroju. Iako se Java programi mogu sastaviti u izvornom kodu, oni još uvijek vole sastaviti u Java bytecode.
Prva prednost servleta nad CGI je u neovisnosti platforme. Servleti mogu raditi na bilo kojem operativnom sustavu sve dok je instaliran JVM, što znači da ne biste imali nikakvih problema čak i ako odlučite prebaciti operacijske sustave. S CGI-om, prebacivanje operativnog sustava je težak i naporan proces jer ćete morati ponovno kompajlirati programe u novom operativnom sustavu.
Budući da pokrenete nezavisne programe u CGI-u, oni stvaraju vlastiti proces kada se izvršavaju, što se ne događa s servletima jer dijele samo memorijski prostor JVM-a. To može dovesti do problema koji se odnose na pretek, osobito kada povećavate broj korisnika eksponencijalno. Ona također stvara probleme s ranjivostima jer se program ne kontrolira ni na koji način nakon što se pokrene na poslužitelju.
Kasnije, češći način upotrebe CGI-ja je putem skripti. To smanjuje vrijeme potrebno za izradu programa i općenito je sigurnije. S CGI-om, možete pokrenuti skripte odmah, a servlete, trebate prevesti skriptu u Java i sastaviti je u servlet koji dodaje malo vremena učitavanja.
Sažetak: 1.CGI obično su izvršne datoteke koje su izvorne na operacijskom sustavu poslužitelja, iako servleti mogu biti sastavljeni i na izvorni OS koji se mogu sastaviti na Java bajtkodak koji se zatim izvodi na JVM 2.CGI programi su ovisni o platformi, a servleti su neovisni o platformi 3.CGI programi se izvode kao zasebni procesi na računalu dok servleti rade na JVM-u 4.CGI može biti podložniji napadima od servleta 5.CGI može izravno obraditi skripte dok je potrebno prevesti i sastaviti prije nego što se može pokrenuti kao servlet