title: Do effectively immutable objects make sense?
body: <p>In the book <a href="http://jcip.net/" rel="nofollow">Java Concurrency In Practice</a> it explains the advantages of "effectively immutable" objects versus mutable objects concurrency-wise.  But it does not explain what advantage "effectively immutables" objects would offer over <em>really</em> immutable objects.</p>
  
  <p>And I don't get it: can't you <em>always</em> build a really immutable object at the moment you'd decide to publish safely an "effectively immutable" object? <em>(instead of doing your "safe publication" you'd build a really immutable object and that's it)</em></p>
  
  <p>When I'm designing classes I fail to see cases where I couldn't always build a truly immutable object (using delegation if needed etc. to build other wrapped objects, themselves truly immmutable of course) at the moment I'd decide to "safely publish".</p>
  
  <p>So are "effectively immutable" object and their "safe publication" just a case of bad design or poor APIs?</p>
  
  <p>Where would you be forced to use an effectively immutable object and be forced to safely publish it where you couldn't build a much superior really immutable object?</p>