Optional require(s) NonNull

Gregg Wonderly gregg at wonderly.org
Tue Oct 30 14:36:34 PDT 2012

On Oct 30, 2012, at 2:44 PM, Paul Benedict <pbenedict at apache.org> wrote:

> Gregg,
> I am not sure of the kind of response you wish to evoke....
> The JDK is not a democratic development effort; it's lead by hand-picked engineers who have their ears open to the community. At the end of the day, the engineer's are responsible for making the "best" decision -- not mailing list subscribers like you and me. I don't see how your complaint is specific to this development community; I bet you can find people saying the same negative things about CodeHaus, SourceForge, and Apache.

Yes, Paul, you've summed up my perspective.  Those code forges and project homes, are communities, and developers there can be contacted.  They can say no, and we all know that.  Java, from my perspective is different.  The JCP, initially was an attempt to try and fix this for Java, so that everyone could work together to try and get Java to a point of allowing the community of developers to have a chance of getting useful features into the platform.  For me, it was a form of Sun saying "We don't really know everything that needs to happen, so we'd like to let people help us make those decisions".   At this point, we know the JCP has become non-functional, and really doesn't provide a community of development which might help Java to become something even more useful.   There is an attempt to reboot the JCP, but I am not sure there is real hope.

Practically, I think this is a real issue, and I think it's driven by the culture that is behind why Sun could not create a profitable market around Java.  They just refused to listen to what was being said to them.  I was on the SDAC and we told Sun lots of things that they could do differently.   Every year, at meetings, they seemed to list, but the next year, we found they had done nothing but what they were already doing and wanted to do even though there were better choices.

People like James Gosling lamented to the SDAC participants about how hard it was to get the direction to change.  People like Jonathan came around and things looked brighter, and he actually fired one of the people who was a chief inhibitor of progress when Java was opened sourced.  There are still several floating around (and I am NOT pointing at Brian as THE problem) Oracle.

I think it's detrimental to the progress of Java to continually compromise to Sun/Oracle engineering instead of spending extra time and effort to do what would ultimately be a better solution.  Does that mean that everything has to go to the extreme, absolutely not.

What is important to me, is the way that the message of "we are done listening" is conveyed.  If people don't think there is any benefit in participating, they will all go away.  They will reinvent the wheel to try and fix the problem they proceed, and we see huge loses of development contribution to software overall because people are off wasting their time trying to make something better when just some ability to participate in an existing project could of allowed a much better result.

We all really do need to work together to make great software possible, in a shorter time frame.

Java is an extremely large software system.  Having to reinvent it is just silly.  JVM based languages are less work, but still one has to ask if the JVM can do it, why can't we work toward a bigger goal with Java, instead of putting software developers in a position to need to learn new semantics and new toolsets just to get some new features which would be possible in Java itself.

Maybe I'm just a little be tainted by my experiences from the past, but I continue to find fewer and fewer reasons to be interested in Java given all of the things which are changing, and in my opinion not for the better.  I've invested a lot of time in the Java community, and a I've written lots of Java software, that has performed well for me.  I've spent lots of energy going around telling people that Java should be their first choice for lots of projects to get portability.  But ultimately I haven't been successful with that energy, in general, because people in the open source world and those who've used various C/C++ open source platforms just don't see the value because they also have things which Java just won't ever be able to do, because the JCP doesn't allow it to happen.

Something needs to change because there is even more need for the Java platform to be flexible, and extensible, and "long lived".   Making short cut decisions and creating limited functionality which will result in other, similar things needing to be completely reinvented, instead of extending what's been already done, is not where we should be going.

It is good for Java to be consistent, but not having an attitude that phased development is good can limit the possibilities for the future.  We have lots of examples in Java where this was done already, including Generics, but also NIO and NIO2 as well as authentication work done as late as Java 1.4, which was needed in Java 1.3 and then when delivered provide nothing really useful, because engineers imagined single identity applications, instead of multiuser environments.

I could go on and on, but it's probably just not worth any real effort…  Sorry for the intrusion into your world…


More information about the lambda-dev mailing list