Welcome to the mess

In JSP 2.0 Thoughts: What a mess, Russell points what JSP has become with the last evolution. I disagree on one point: "When Sun jumped to JSP 2.0, they missed a chance to break backwards compatiblity and improve the page language". They can't improve the page language, it's Java (pathetic pedantic argument)! Everything else is a kludge. Back in JSP 1.0, there was an attribute in the page directive: language. I cite the specification here:

  • language

    The scripting language used in scriptlets, declarations, and expressions in the JSP file and any included files. In JSP 1.0, the only allowed value is java.

And here is the version 2.0:

  • language

    Defines the scripting language to be used in the scriptlets, expression scriptlets, and declarations within the body of the translation unit (the JSP page and any files included using the include directive below).

    In JSP 2.0, the only defined and required scripting language value for this attribute is java.
    This specification only describes the semantics of scripts for when the value of the language attribute is java.
    When java is the value of the scripting language, the Java Programming Language source code fragments used within the translation unit are required to conform to the Java Programming Language Specification in the way indicated in Chapter JSP.9.
    All scripting languages must provide some implicit objects that a JSP page author can use in declarations, scriptlets, and expressions. The specific objects that can be used are defined in Section JSP.1.8.3, “Implicit Objects”.”
    All scripting languages must support the Java Runtime Environment (JRE). All scripting languages must expose the Java technology object model to the script environment, especially implicit variables, JavaBeans component properties, and public methods.
    Future versions of the JSP specification may define additional values for the language attribute and all such values are reserved.
    It is a fatal translation error for a directive with a non-java language attribute to appear after the first scripting element has been encountered.
    Default is java.

Such an evolution. The new specification still blocks PHP5 which doesn't support the JRE (or I don't understand "to support" the right way), but allows Groovy or Jython for instance. So, the Expression Language has not been designated as a valid language for scriptlets, they've just added another pile of monstruosity on this thing. Putting JSP on a resume doesn't mean much now.