Optional require(s) NonNull

Martijn Verburg martijnverburg at gmail.com
Wed Oct 31 01:51:37 PDT 2012

I will just add that Brian et al have not been locking themselves in a
tower. The EG has helped run a number of Lambdas hackdays with us (London
JUG) where we threw these types of choices at ~40 different developers of
varying experience each time.

Several feature/API changes came out as a direct response to those sessions
and I certainly walked away with an appreciation of how difficult the
balance of choices are.

More of these sessions are going to be run going forwards in London and
with other JUGs and groups worldwide. Granted this doesn't cover the 9
million, but hopefully it starts to cover the wider dev base.

Want to run one? Ping me off list or join adoptajsr.java.net :-)


On Wednesday, 31 October 2012, Brian Goetz wrote:

> I understand how you could feel that way.  Let me offer a different
> perspective.
> There are, if you believe our marketing department, on the order of 9-10
> million Java developers.  Developers being what they are, that means there
> are probably 9-10 million opinions.  There are some who think we are
> evolving Java too fast; others think too slow.  We can't possibly satisfy
> them all.  Of course Oracle's own business requirements influence the
> decisions we make, but my business unit's stated #1 priority is "Keep Java
> #1."  (This may sound like marketing crap, but think about it this way:
> Oracle employs over 10,000 Java developers and maintains many millions of
> lines of Java code.  If Java were to become less vibrant, the value of our
> codebase decreases, the value of our human capital decreases, it becomes
> harder to hire good programmers, people would buy less Java middleware, and
> we lose big.  It is in our greedy corporate financial interest for Java to
> remain #1.)  That means it is part of my job description to identify
> directions for the language and core li!
>  braries that will make that happen.  I have a sign over my desk that says
> "Don't Break Java", to remind me of the consequences of what I do.
> It is very easy to confuse "there are a lot of people who think this way"
> with "the community in general thinks this way."  If, for example, only 5%
> of the Java developer base feels a certain way, and only .1% of them bother
> to say something about it, that's still 500 people clamoring for something
> that 95% of the developer base doesn't care about.  (Which is about the
> size of the population of lambda-dev, by the way.)  When we hear their
> request, consider it carefully, and deem it to not be in the best interest
> of the Java community *as a whole*, that's good stewardship.  But if that
> .1% of 5% is vocal enough, it is easy for that to look like "Sun/Oracle
> doesn't care about what the community thinks."
> This particular example is a fine one; the set of people who are familiar
> with Optional in languages other than Java is probably smaller than a few
> percent of the Java developer base.   Claiming that this vocal minority
> speaks for "something the larger community wants to change" is ludicrous.
>  This is something a small but highly vocal fraction wants to change.  And,
> we did spend a great deal more time on this issue than we had budgeted for,
> simply because there was a vocal request from the community to consider an
> alternate viewpoint, which we did.  But in the end, it is our job to
> separate the interests of the vocal minorities / self-proclaimed elite from
> the interests of the greater community as a whole.
> Is our judgement potentially flawed?  Of course.  We're human, and we
> don't know everything.  But to claim that we're only making the decisions
> based on what is important to us is just sour grapes.  Granted, what is
> important to our business interest is a factor -- how could it not be?  But
> what is important to the vitality of the Java community is a huge factor.
>  (As are a number of other things that the community doesn't realize it
> cares about, such as the maintainability of the specification and
> implementation, or negative interactions between a currently proposed
> feature and future features under consideration.)  We have taken lots of
> input from the community, and a lot of it has affected and improved what we
> do.  The community was in fact very involved in Lambda from the beginning
> -- there were thousands of messages on the lambda-dev list before we
> started writing any code.  Some were worthless, but we read them anyway.
>  Some contained ideas that were great for other la!
>  nguages or communities but not for Java.  Many offered competing visions
> of what Java could be, perhaps all of which were valid, but not all of
> which could be satisfied.  Prior to the creation of Project Lambda, there
> were several competing and conflicting proposals in the community for how
> to add closures to Java.  In the end, it was my job to integrate all of
> this into a coherent vision.  I am sure I made some mistakes, and I will
> own up to them when they become clear to me.  But I'm proud of where Lambda
> is now, which is the product of thousands of interactions with individuals
> inside and outside of Oracle and many small decisions.  It is not possible
> that they will all be popular.  And it is very easy for a vocal minority to
> masquerade as the voice of the community.
> On Oct 30, 2012, at 3:26 PM, Gregg Wonderly wrote:
> >
> > On Oct 30, 2012, at 12:24 PM, Brian Goetz <brian.goetz at oracle.com<javascript:;>>
> wrote:
> >
> >> So, let's keep our input on the subject to that which is within the
> design center of the current implementation, rather than trying to convince
> us to change the design center.
> >
> > Over the years, there has been several things about Java which the
> larger community has wanted to change.  Practically this kind of response
> has been a common theme in how the community has been treated.
> >
> > In JDK 2.x, Sun engineers added all kinds of new stuff which completely
> broke all kinds of things and made quite a disaster out of about 2 years of
> Java experience.  I know of several companies who looked at JDK1.8 as a
> remarkable step forward and tried to develop projects in JDK 2.x, expecting
> it to only get better.  The end result was that they wasted time and real
> money on something that would never work out beneficial to them.  Sun
> seemed to have learned about this given the subsequent statements at
> JavaOne and elsewhere about how that debacle would never happen again.
>  Stability was going to be a design center.  It seemed like Sun might be
> listening, but I found that not to be the case for all engineers at Sun as
> I tried to get various Sun led JSRs to focus on things which I needed Java
> to do well.
> >
> > I find it particularly strange that throughout the years, Java
> engineering from Sun and now Oracle seems to be focused on just what is
> desirable to them.  I understand, given the position of where this
> development is at now, and what these discussions are pressing, that
> perhaps there is a huge gap such as you describe, between your design
> center, and what the community, at large, is asking.  It begs the question
> though, why does this gap exist?  Why didn't the community end up involved
> early enough to perhaps be more influential on the design center?
> >
> > What seem ideal to me, is that Java actually would do more of what the
> developers want, and less of what Oracle engineers think that it should do.
>  Why, for more than a decade, that has been such a foreign concept is
> beyond me.  But, once again, we seem to be seeing evidence that Oracle is
> not a custodian or a participant, but rather the dictator of where things
> will go.
> >
> > Seeing lots of different JVM based languages being developed, with
> similar functionality, but with a couple of new features tacked on, seems
> to indicate to me that many different people have given up on getting Java
> fixed to take care of issues important to them as well.
> >
> > Gregg Wonderly

More information about the lambda-dev mailing list