OK, let’s make this problem a little simpler. The question of terminology in the JVMS is harder, but we have a syntax decision to make at the source code level. So far its been proposed we replace “value class” with
inline class Foo { } In addition to liking the sound of it, I like that it is more “modifer-y” than “value”, meaning that it could conceivably be applied to other entities: inline record R(int a); inline enum Foo { A, B }; > On Apr 8, 2019, at 7:50 PM, Doug Lea <d...@cs.oswego.edu> wrote: > > On 4/8/19 6:44 PM, John Rose wrote: > >> If we move terms around so "value" gets replaced by "inline", >> and "reference" by "indirect", only the first two lines are >> affected: >> >> “inline object”, “indirect object” (also inline or indirect instance) >> “inline class”, “indirect class” (also inline or indirect type) >> > > It would be nice not to use new terms for old concepts (even if new to > Java). For alternative terminology originally stemming from similar > struggles to make such distinctions, see UML "Composition" vs > "aggregation" (also vs "association"). Wikipedia has some definitions: > https://en.wikipedia.org/wiki/Class_diagram#Aggregation > > The UML specs say more but behind wall at https://www.omg.org/spec/UML > > -Doug >