Diferencia entre CGI y servlet

Diferencia entre CGI y servlet

CGI vs servlet

CGI (interfaz de puerta de enlace común) es el primer intento de proporcionar a los usuarios contenido dinámico. 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, están escritos 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 el CGI, pero en lugar de los programas compilados en el sistema operativo nativo, se compila en el bytecodo Java que luego se ejecuta en la máquina virtual Java. Aunque los programas Java se pueden compilar en el código nativo, aún prefieren compilar en el Bytecode de Java.

La primera ventaja de Servlets sobre CGI está en su plataforma Independence. Los servlets pueden ejecutarse en cualquier sistema operativo siempre que se instale un JVM, lo que significa que no tendrá ningún problema incluso si elige cambiar los sistemas operativos. Con CGI, la conmutación del sistema operativo es un proceso difícil y laborioso, ya que necesitaría recompilar los programas en el nuevo sistema operativo.

Dado que está ejecutando programas independientes en CGI, crean su propio proceso cuando son ejecutados, algo que no sucede con los servlets, ya que solo comparten el espacio de memoria del JVM. Esto puede generar problemas relacionados con la sobrecarga, especialmente cuando aumenta el número de usuarios exponencialmente. También crea problemas de vulnerabilidad ya que el programa no está controlado de ninguna manera una vez que se ejecuta en el servidor.

Más adelante, el método más común al usar CGI es a través de scripts. Esto reduce el tiempo necesario para crear programas y generalmente son más seguros. Con CGI, puede ejecutar scripts de inmediato, mientras que servlets, necesitaría traducir el script en Java y compilarlo en un servlet que agrega 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 se pueden compilar en el sistema operativo nativo, se puede compilar en Java Bytecode que luego se ejecuta en un 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 los servlets se ejecutan en el JVM
4.CGI puede ser más vulnerable a los ataques que los servlets
5.CGI puede procesar directamente los scripts mientras debe traducirse y compilarse antes de que se pueda ejecutar como un servlet