Or, if x.x.B already has meaning (bugfix release), then rc (release candidate) notation would serve a similar purpose:
0.12.5-rc1 ==> 0.12.5 (bugfix release)
0.13-rc1 ==> 0.13 (major/minor release)
I think the difference is EVERY Java release must be a supported standard target. Xmonad has local, but no global, critical child dependencies. One would never recommend that a general user compiles bleeding edge Javac for any real work -- yet that's what some Xmonad-ers have recommended for two years.
If 0.12.3 exists, but is not considered stable, then 0.12-rc3 or 0.12b3 would seem more appropriate.