CGI vs Servlet
CGI (Common Gateway Interface) je prvním pokusem poskytnout uživatelům dynamický obsah. Umožňuje uživatelům spouštět program, který se nachází na serveru, aby zpracovával data a dokonce přístup k databázím za účelem vytváření relevantního obsahu. Protože se jedná o programy, jsou zapsány v nativním operačním systému a poté uloženy v konkrétním adresáři. Servlet je implementace Java, jejímž cílem je poskytovat stejnou službu jako CGI, ale namísto programů kompilovaných v nativním operačním systému se kompiluje do Java bajtkódu, který se pak spouští ve virtuálním stroji Java. Programy Java lze sice zkompilovat do nativního kódu, stále však dávají přednost kompilaci v bajtkódu Java.
První výhodou servletů oproti CGI je nezávislost na platformě. Servlety mohou běžet na jakémkoli operačním systému, pokud je nainstalován JVM, což znamená, že byste neměli mít žádný problém, i když se rozhodnete přepínat operační systémy. S CGI je přepínání operačního systému obtížným a pracným procesem, protože byste museli překompilovat programy v novém operačním systému.
Protože v CGI spouštíte nezávislé programy, vytvářejí při spuštění své vlastní procesy, což se nestane se servlety, protože sdílejí pouze paměťový prostor JVM. To může vést k problémům spojeným s režijními náklady, zejména pokud exponenciálně zvýšíte počet uživatelů. Vytváří také problémy se zranitelností, protože program není po spuštění na serveru nijak ovládán.
Pozdější metodou při použití CGI je skript. To zkracuje čas potřebný k vytváření programů a je obecně bezpečnější. S CGI můžete spouštět skripty okamžitě, zatímco servlety, budete muset přeložit skript do Java a zkompilovat jej do servletu, který trochu přidá čas načítání.
Souhrn:
1.CGI jsou obvykle spustitelné soubory, které jsou nativní pro operační systém serveru, ačkoli servlety lze také zkompilovat do nativního OS, lze jej zkompilovat do bajtkódu Java, který se pak spouští na JVM
2.CGI programy jsou závislé na platformě, zatímco servlety jsou nezávislé na platformě
3.CGI programy běží v počítači jako samostatné procesy, zatímco servlety běží na JVM
4.CGI může být zranitelnější vůči útokům než servlety
5.CGI může přímo zpracovávat skripty, zatímco je třeba jej přeložit a zkompilovat, aby mohl být spuštěn jako servlet