Earlier quoted context omitted.
Strictly speaking, the Java Memory Model derives from the data-race-free model of the early '90s. Java was the first programming language to explicitly incorporate it as part of the specification, but the main derivation actually comes from the C++ memory model, which built into it the basic atomic memory model that most derivatives rely on--Java doesn't have the weaker atomics support that C++ added, just sequential…
Uh, this is not the history I recall at all. Why is Hanz Boehm referring to memory model fixes and the JMM in the C++11 spec (Java started tackling this problem in 2004, see Goetz) if Java copied C++?
Basically, it goes:
* Original data-race-free model (early 90s)
* Java 5 memory model (~2004-5) [first incorporated into the programming language, as I'm aware]
* C++0x memory model (finalized 2007-2008, IIRC) [added atomics]
* Compilers build their internal intrinsics on top of C++0x, sans consume
* Everyone else adopts either the C++ memory model as is, or without consume
(Sibling comment notes that Java 9 backports the atomics from C++).