Java CGI与Servlets

CGI和Java servlet之间的主要区别是什么?

Servlet在一个进程中运行(具有附加function的HTTP服务器,称为Servlet容器),只要该进程存在,它们就会存在。

CGI表示每次有客户端请求时,HTTP服务器都会创建新的进程实例来提供此请求。 这是性能杀手。 此外,由于每个请求都有新进程,这意味着CGI无法聚合来自内存中的多个请求的数据,因为Servlet可以,并且必须求助于外部持久存储(文件或数据库)。 这也是性能杀手。

最大的不同是CGI在十年前死亡。

Servlet是标准的,Java CGI从未真正实现过。

Java servlet在某种容器(Tomcat,JBoss,Glassfish,Jetty等)中运行,这些容器需要运行才能提供请求。

CGI通常会为每个请求生成一个新进程(考虑启动JVM有点贵)并不是Java的最佳解决方案。

至少,在servlet容器中使用Java servlet应该可以提供更好的性能。 在Java中使用任何类型的CGI很可能必须为每个请求生成新的Java进程,这不太理想。 在Web服务器端使用Java时,使用Servlet确实是最好的方法。

Interesting Posts