Les caractères spéciaux commencent par
& et terminent par
; ... en SGML (1986) et ses successeurs (HTML, XML, XHTML), voire même peut-être dès le GML (1979), donc rien à voir avec le Java.
D'après la documentation W3C :
Note. In SGML, it is possible to eliminate the final ";" after a character reference in some cases (e.g., at a line break or immediately before a tag). In other circumstances it may not be eliminated (e.g., in the middle of a word). We strongly suggest using the ";" in all cases to avoid problems with user agents that require this character to be present.
En se rappelant quand
en SGML sous-entend
mais pas en HTML et suivants, je pense que l'on ne peux pas être plus clair sur le sujet

...