In any J2EE web applications servlets are an integral part. The server side component of a servlets gives a powerful mechanism for developing server side web applications. It provides an important role in the explosion of Internet, its reusability, performance and scalability. Web developers can create fast and efficient server side programs or applications by using servlets. By using servlets web developers can run these applications in any servlet enabled web servers.
The main advantages of using servlets over CGI are, the CGI programs are run outside the web server so a new process should be started before the execution of a CGI programs. At a time the CGI programs handle only one request. After the execution of a CGI program they return the result in the web server and exit. But in the case of servlets it can handle multiple requests simultaneously. Servlets generate dynamic content or create dynamic web pages that is easy to write and faster to run within a web servers. Servlets can access any J2SE and J2EE APIs and it can take the full advantage and capabilities of the java programming language. Servlets are component based, platform independent method for create in the web based applications, without the performance limitations of CGI programs.
The advantages of servlets are discussed below.
Servlets are highly portable crosswise operating systems and server implementations because the servlets are written in java and follow well known standardized APIs. Servlets are writing once, run anywhere (WORA) program, because we can develop a servlet on Windows machine running the tomcat server or any other server and later we can deploy that servlet simply on any other operating system like Unix. Servlets are extremely portable so we can run in any platform. So we can call servlets are platform independent one. Servlets are written entirely in java.
We can handle several things with the servlets which were difficult or sometimes impossible to do with CGI. For example the CGI programs can’t talk directly to the web server but the servlets can directly talk to the web server. Servlets can share data among each other, they make the database connection pools easy to implement. By using the session tracking mechanism servlets can maintain the session which helps them to maintain information from request to request. Servlets can do many things which are difficult to implement in the CGI programs.
The servlets invocation is highly efficient as compared to CGI programs. The servlet remains in the server’s memory as a single object instance, when the servlet get loaded in the server. The servlets are highly scalable because multiple concurrent requests are handled by separate threads. That is we can handle N number of threads by using a single servlet class
As servlets are written in java, servlets inherit the strong type safety of java language. In java automatic garbage collection mechanism and a lack of pointers protect the servlets from memory management problems. In servlets we can easily handle the errors due to the exception handling mechanism. If any exception occurs then it will throw an exception by using the throw statement.
Servlets are tightly integrated with the server. Servlet can use the server to translate the file paths, perform logging, check authorization, and MIME type mapping etc.
The servlet API is designed in such a way that it can be easily extensible. As it stands today, the servlet API support Http Servlets, but in later date it can be extended for another type of servlets. Java Servlets are developed in java which is robust, well-designed and object oriented language which can be extended or polymorphed into new objects. So the java servlets take all these advantages and can be extended from existing class to provide the ideal solutions. So servlets are more extensible and reliable.
There are number of free web servers available for personal use or for commercial purpose. Web servers are relatively expensive. So by using the free available web servers you can add servlet support to it.
Servlets are server side components, so it inherits the security provided by the web server. Servlets are also benefited with Java Security Manager.
Servlets are faster than CGI programs because each scripts in CGI produces a new process and these processes takes a lot of time for execution. But in case of servlets it creates only new thread. Due to interpreted nature of java, programs written in java are slow. But the java servlets runs very fast. These are due to the way servlets run on web server. For any program initialization takes significant amount of time. But in case of servlets initialization takes place first time it receives a request and remains in memory till times out or server shut downs. After servlet is loaded, to handle a new request it simply creates a new thread and runs service method of servlet. In comparison to traditional CGI scripts which creates a new process to serve the request.