jugmsk Митап #8 JUG.MSK (11.09.2014 — 11.09.2014)

Прагматика Java Memory Model

img

Спецификация Java Memory Model в JLS пытается быть предельно сжатой и полной. Поскольку JMM пытается объять очень большой пласт явлений, её формализм весьма громоздок, что обернулось потерей понимабельности модели простыми смертными.

Понять хотя бы наполовину, что написано в спецификации Java Memory Model (далее — JMM), получается раза с третьего. Понять, почему записано именно так, по спецификации вообще невозможно, и приходится обращаться к дополнительным источникам, которые пытаются как-то формализм JMM переосмыслить, дополнить, и привести примеры.

В этом докладе мы

  • попытаемся проследить за логикой построения модели;

  • поговорим о том, каких прагматических результатов модель пыталась добиться;

  • посмотрим, с какими ограничениями злого внешнего мира при этом пришлось столкнуться;

  • увидим, как JMM пытается балансировать между требованиями девелоперов и требованиями разработчиков рантаймов и железа.

Плюс к этому, посмотрим, куда копает и будет копать <a href="http://openjdk.java.net/jeps/188">апдейт</a> JMM в JDK 9.