Diferença entre CGI e Servlet

CGI vs Servlet

CGI (Common Gateway Interface) é a primeira tentativa de fornecer aos usuários conteúdo dinâmico. Ele permite que os usuários executem um programa que reside no servidor para processar dados e até acessar bancos de dados para produzir o conteúdo relevante. Como esses são programas, eles são gravados no sistema operacional nativo e armazenados em um diretório específico. Um servlet é uma implementação de Java que visa fornecer o mesmo serviço que o CGI, mas, em vez de programas compilados no sistema operacional nativo, ele é compilado no bytecode Java, que é executado na máquina virtual Java. Embora os programas Java possam ser compilados no código nativo, eles ainda preferem compilar no bytecode Java.

A primeira vantagem dos servlets sobre o CGI está na independência da plataforma. Os servlets podem ser executados em qualquer sistema operacional enquanto a JVM estiver instalada, o que significa que você não teria nenhum problema, mesmo se optar por mudar de sistema operacional. Com o CGI, alternar sistema operacional é um processo difícil e trabalhoso, pois você precisa recompilar os programas no novo sistema operacional.

Como você está executando programas independentes em CGI, eles criam seu próprio processo quando são executados, algo que não acontece com os servlets, pois eles apenas compartilham o espaço de memória da JVM. Isso pode levar a problemas relacionados à sobrecarga, especialmente quando você aumenta o número de usuários exponencialmente. Ele também cria problemas de vulnerabilidade, pois o programa não é controlado de forma alguma quando é executado no servidor.

Posteriormente, o método mais comum ao usar CGI é via scripts. Isso reduz o tempo necessário na criação de programas e geralmente é mais seguro. Com o CGI, você pode executar scripts imediatamente, enquanto servlets, você precisará converter o script em Java e compilá-lo em um servlet, o que adiciona um pouco ao tempo de carregamento.

Resumo:
1.CGI geralmente são executáveis ​​que são nativos do sistema operacional do servidor, embora os servlets também possam ser compilados no sistema operacional nativo, eles podem ser compilados no bytecode Java, que é executado em uma JVM
2.Os programas CGI dependem da plataforma, enquanto os servlets são independentes da plataforma
3.Os programas CGI são executados como processos separados no computador, enquanto os servlets são executados na JVM.
4.CGI pode ser mais vulnerável a ataques do que servlets
5.CGI pode processar scripts diretamente enquanto precisa ser traduzido e compilado antes de poder ser executado como um servlet