>The whole RT thing is a key clue. The RT library was pre-EL.
Yes it was. Though more correctly the EL interpreter library internal to JSTL was pre EL understood by the container
The change in servlet 2.4/JSP2.0 was that EL expressions became runtime expressions.
So now everything uses the RT version of the code.
Prior to this there were two parallel libraries for JSTL
EL - Tags attributes were defined as taking "
String". These string expressions were evaluated as EL within JSTL
RT - Tags attributes were defined as taking runtime expressions for those who wanted to use <%= expr %> with their JSTL tags.
As of JSP2.0 EL expressions were understood by the container - in effect they BECAME runtime expressions.
Because this changed the Tag definitions significantly, the introduced the new URI for the tag library - which was effectively the old RT version rebranded.
So the org.apache.taglibs.standard.tag.rt.core package in the generated code is perfectly legitimate.
ALL the tags are now evaluated as runtime expressions.
It's just that we don't often look at the servlet code generated for a JSP.