Contrary to popular belief, a
final field in Java is not the same thing as
final variable that may only be assigned to once.
The Java memory model (JMM) not only has a separate
section explaining the semantics
but also introduces two partial orders—dereference chain (
dereferences) and memory chain (
just for the sake of specifying
This presentation touches almost all aspects of the JMM and has many examples of programs which behavior a reader may find unexpected. I presented it to my colleagues at NetCracker Technology and at ZeptoLab. Vladimir Sitnikov, who is a co-author of the presentation, made a public talk in Russian.