CGI a Servlet
CGI (Common Gateway Interface) je první pokus o poskytování dynamického obsahu uživatelům. Umožňuje uživatelům provádět program, který se nachází na serveru, aby zpracovával data a dokonce měl přístup k databázím, aby vytvořil příslušný obsah. Jelikož se jedná o programy, jsou zapsány v nativním operačním systému a uloženy do určitého adresáře. Servlet je implementace Java, která má za cíl poskytovat stejnou službu jako CGI, ale namísto programů kompilovaných v nativním operačním systému se kompiluje do Java bytecode, který je pak spuštěn ve virtuálním stroji Java. I když programy Java mohou být kompilovány do nativního kódu, stále raději kompilují v Java bytecode.
První výhoda servletů přes CGI je ve své platformě nezávislost. Servlets mohou běžet na jakémkoli operačním systému, dokud je nainstalována JVM, což znamená, že byste neměli žádný problém, i když se rozhodnete přepnout na operační systémy. U CGI je přepínání operačního systému obtížným a náročným procesem, protože byste museli překompilovat programy v novém operačním systému.
Vzhledem k tomu, že používáte nezávislé programy v CGI, vytvářejí při provádění jejich vlastní proces, něco, co se neděje u servletů, protože se sdílejí v paměti JVM. To může vést k problémům s režijními náklady, zejména pokud exponenciálně zvyšujete počet uživatelů. Také vytváří problémy s chybou zabezpečení, neboť program není po spuštění na serveru ovládán žádným způsobem.
Později se běžnější metodou při používání CGI skrze skripty. Tím se snižuje doba potřebná při vytváření programů a jsou obecně bezpečnější. S CGI můžete spouštět skripty hned, zatímco servlety byste museli přeložit skript do Java a kompilovat jej do servletu, který přidává trochu času načítání.
Souhrn: 1.CGI jsou obvykle spustitelné soubory, které jsou nativní na operačním systému serveru, ačkoli servlety mohou být také kompilovány do nativního operačního systému, který lze kompilovat do Java bytecode, který je potom spuštěn na JVM 2.CGI programy jsou závislé na platformě, zatímco servlety jsou nezávislé na platformě 3.CGI programy běží jako samostatné procesy v počítači, zatímco servlety běží na JVM 4.CGI mohou být zranitelnější vůči útokům než servlety 5.CGI může přímo zpracovávat skripty, zatímco je třeba je přeložit a kompilovat před tím, než je lze spustit jako servlet