JavaServer Pages (JSP) is a server-side programming technology that enables the creation of dynamic web pages and applications. This is accomplished by embedding Java code into HTML, XML, DHTML, or other document types. When a client such as a web browser makes a request to the Java application container, which is typically a web server, the static page is converted behind the scenes, and displayed as dynamic content to the viewer. It has been speculated that JSP was released to compete with PHP, a commonly used open-source programming language.
While JSP is sometimes associated with Active Server Pages (ASP), these are actually two different technologies. The biggest difference is that ASP is developed by Microsoft®, and largely considered as a framework. This is due to its ability to support a wide variety of programming languages enabled by Microsoft's® Component Object Model (COM). Created by Sun Microsystems®, JSP is considered an object-orientated programming language.
JavaServer Pages technology allows Java code and select predefined actions to be inserted into static web page content. This code is compiled at runtime for each request made to the page. The server, Java code and/or any custom programming that may have been implemented, is controlled by a pre-installed software application known as a virtual machine (VM). This VM integrates with a host operating system. The most common VM used to run JSP applications is Java Virtual Machine™ (JVM).
From a technical aspect, JSP can be viewed as a high-level abstraction of Java servlets, because they essentially run on top of them. JavaServer Pages are usually compiled by a Java compiler. This compiler either generates servlets in the form of Java code, or byte code that can be directly executed. Since they are capable of being interpreted as soon as requests are made, the time it takes to convert a static page to dynamic content is often greatly reduced.
Many programmers prefer JSP because it simplifies development by allowing the insertion of Java code directly into standard text files. It is also an independent, cross-platform, portable language that falls in line with the Java motto of 'write once, run anywhere.' Boasting the ability to separate content from the foundation of the page, the language allows programmers to create new code independent of the existing work. JSP is largely considered to be a robust and efficient technology for both the server and client side aspects of programming.