CGI vs Servlet
CGI (Common Gateway Interface) es el primer intento de proporcionar contenido dinámico a los usuarios. Permite a los usuarios ejecutar un programa que reside en el servidor para procesar datos e incluso acceder a bases de datos para producir el contenido relevante. Dado que estos son programas, se escriben en el sistema operativo nativo y luego se almacenan en un directorio específico. Un servlet es una implementación de Java que tiene como objetivo proporcionar el mismo servicio que CGI, pero en lugar de los programas compilados en el sistema operativo nativo, se compila en el código de bytes de Java que luego se ejecuta en la máquina virtual de Java. Aunque los programas Java se pueden compilar en el código nativo, aún prefieren compilar en el código de bytes de Java.
La primera ventaja de los servlets sobre CGI es su independencia de plataforma. Los Servlets pueden ejecutarse en cualquier sistema operativo siempre que se instale una JVM, lo que significa que no tendrá ningún problema, incluso si elige cambiar los sistemas operativos. Con CGI, cambiar el sistema operativo es un proceso difícil y laborioso, ya que necesitaría volver a compilar los programas en el nuevo sistema operativo..
Como está ejecutando programas independientes en CGI, crean su propio proceso cuando se ejecutan, algo que no sucede con los servlets, ya que solo comparten el espacio de memoria de la JVM. Esto puede llevar a problemas relacionados con la sobrecarga, especialmente cuando aumenta el número de usuarios de manera exponencial. También crea problemas de vulnerabilidad ya que el programa no se controla de ninguna manera una vez que se ejecuta en el servidor.
Más adelante, el método más común cuando se usa CGI es a través de scripts. Esto reduce el tiempo necesario para crear programas y, en general, es más seguro. Con CGI, puede ejecutar los scripts de inmediato, mientras que los servlets, tendría que traducir el script a Java y compilarlo en un servlet que agregue un poco al tiempo de carga..
Resumen:
1.CGI generalmente son ejecutables que son nativos del sistema operativo del servidor, aunque los servlets también pueden compilarse para el sistema operativo nativo, se pueden compilar en el bytecode de Java que luego se ejecuta en una JVM
2. Los programas CGI dependen de la plataforma, mientras que los servlets son independientes de la plataforma
3.Los programas CGI se ejecutan como procesos separados en la computadora mientras que los servlets se ejecutan en la JVM
4.CGI puede ser más vulnerable a los ataques que los servlets
5.CGI puede procesar directamente los scripts mientras se necesita traducir y compilar antes de que pueda ejecutarse como un servlet