<p dir="ltr">Hi Kirk,</p>
<p dir="ltr">Your comments seem to be one of the more loudly opposed ones.  So we know what problems @Contended and Fences are trying to fix.  Do you have any actionable alternatives to suggest? I&#39;m sure everyone would agree that if these things could somehow fit into java better, then we&#39;d all prefer that over JVMese approach.  But nothing has been put forth by the folks opposing this.  Simply wishing for something or saying &quot;let&#39;s think about it&quot; won&#39;t help - who is going to think about it and then do something?</p>

<p dir="ltr">At the end of the day, there will probably always be some things that can be expressed better by peeling away the layers of abstraction from Java proper.  I think it&#39;s unreasonable and unrealistic to think that java will provide access to low-level details of the underlying hardware - this is at odds with the design of the language.  However, the JVM is fast enough that a lot of people are using it to build high performance software.  In that space, it&#39;s always nice to eek out that extra level of perf, even if you&#39;re now stepping out of the &quot;safe&quot; zone.  I personally don&#39;t see anything wrong with letting people make the decision to go there - it&#39;s not an accidental venture, and they make the leap with all the warning labels in their face.  What I don&#39;t think java should solve is a people problem - if developers plunge into this space without thinking it through and doing analysis, that&#39;s their problem, frankly; nobody forced their hand.</p>

<p dir="ltr">If the philosophy is to dumb down the platform to prevent people shooting themselves, then we should also get rid of a bunch of existing constructs/knobs in the JVM.  There are plenty of Hotspot cmdline flags that can be considered low-level and could be played around with by people not understanding them that can have worse problems than @Contended.</p>

<p dir="ltr">It&#39;s also interesting that in the C# space, which has had unsafe options almost from the get go, I have never heard anyone complain about it.  In fact, Mono even went further with providing SIMD intrinsics in their library and that&#39;s only been praised (from what I&#39;ve seen).</p>

<p dir="ltr">Cheers</p>
<p dir="ltr">Sent from my phone</p>
<div class="gmail_quote">On Dec 5, 2012 10:51 AM, &quot;Kirk Pepperdine&quot; &lt;<a href="mailto:kirk@kodewerk.com">kirk@kodewerk.com</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Aleksey,<br>
<br>
<br>
On 2012-12-05, at 2:56 PM, Aleksey Shipilev &lt;<a href="mailto:aleksey.shipilev@oracle.com">aleksey.shipilev@oracle.com</a>&gt; wrote:<br>
<br>
&gt; On 12/05/2012 05:20 PM, David Chase wrote:<br>
&gt;&gt; #2, a restatement of a previous complaint (that I will let slide for<br>
&gt;&gt; now, but will bring up in the future again when we have time for<br>
&gt;&gt; cleanup and reorg) is that we need to be quite careful about the<br>
&gt;&gt; distinction between the various sorts of Unsafe.<br>
&gt;<br>
&gt; Totally agree. Now to constructive side: are you up to actually clean up<br>
&gt; Unsafe? *This* makes a perfect JEP to have the open discussion about.<br>
<br>
To my knowledge, n the history of the JDK.. no public exposed API has ever been cleaned up. Once exposed it will be used and once used it will be impossible to back off of it. Thus prudence needs to be preferred over expedience. What makes you believe that you will be able to clean Unsafe in the future?<br>

<br>
&gt;<br>
&gt;&gt; There&#39;s a natural tendency to say &quot;we&#39;re on the implementation side,<br>
&gt;&gt; we know what we&#39;re doing, this organizational stuff is not a good<br>
&gt;&gt; use of our time, we have deadlines to meet&quot; -- and I hope your<br>
&gt;&gt; response is the eye-rolling &quot;yeah, right&quot;.<br>
&gt;<br>
&gt; I understand this concern, but this might as well serve as the excuse of<br>
&gt; not doing anything at all, and only &quot;exploring alternatives&quot; for years,<br>
&gt; while key developers are fleeing away from the platform (I&#39;ve almost<br>
&gt; used word &quot;vibrant&quot; here!).<br>
<br>
Do you have numbers to support this assumption that developers are fleeing. The way I see it, more and more people are understanding the advantages of the platform and are moving to adopt it. I&#39;m seeing more and more code ported from C++ to Java for reasons of maintainability etc.... This is not an excuse to not do anything but to properly resource and look into a safe solution to a known deficiency. I would like these things to be solved but I also believe there is a way to solve them in the context of how Java functions. The VM has proven time and time again that being adaptive to the run time has provided many many benefits that are not reachable by average developers.<br>

<br>
&gt;<br>
&gt; In fact, for fences, it was on the table for at least 3 years, and no<br>
&gt; better+practical approach emerged. That is why I get sincerely amused<br>
&gt; when somebody wants to have the discussion about fences again, and get<br>
&gt; double amused when exposing the intrinsics to out-of-band internal API<br>
&gt; somehow promotes to &quot;omg, that breaks Java&quot; stunts.<br>
<br>
Sorry to say this but I find this attitude both offensive and counter productive to community building.<br>
<br>
I will be giving a talk on concurrency at the Munich JUG in a few hours. We will talk about fences and I will show them how to do pointer manipulation in Java.. and how it can be used to implement wait-free, non-blocking algorithms.. I will show them how to get measurements to understand when their applications are fighting with the hardware... That said, I really wished that we had a better... safer way to achieve the same effect than exposing people to unsafe.<br>

<br>
Kind regards,<br>
Kirk Pepperdine</blockquote></div>