I think you're asking a history
question so let me explain what Sun/Oracle has done...
Each version of the specification is cast in stone. Any change to
the specification requirements results in a new version of the
specification.
The specification
document may be updated using a JCP MR,
as described on our
web
site, to fix things such as typos. Such a change results in
a new "rev level" of the document, but does not change the
specification - the API signatures are exactly the same, the API
semantics are exactly the same, the API requirements are exactly
the same.
The javadocs may be updated similarly.
The javadocs sometimes also include information about the current
implementation of the API, things that are not required by the
spec but that are useful for users of the implementation to know.
These can be updated without going through the JCP.
It's not unusual to update a TCK. Tests may be added to the
exclude list. Sometimes a test is found to have implementation
dependencies or other bugs but is testing important functionality
so rather than exclude the test we supply an alternate version of
the test. Licensees may use either version of the test.
The Reference Implementations may be updated for all the usual
reasons.
All of the above applies to the current versions of the specs.
While we could update an older TCK, there's generally no reason to
do so since our TCK license requires licensees to use the current
version. (It's a bit more complicated than that.)
And we could fix typos in an older version of the spec, but
there's really no motivation to do so.
Older versions of the RI might be updated to fix security
problems.
Of course, EE4J can revisit all of these policies.
Wayne Beaton wrote on 11/ 3/17 12:13 PM: