Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Ryan Slobojan on Dec 11, 2007 11:00 PM
Recently, Alex Blewitt described the Java Community Process (JCP) as dead, likening it to a headless chicken which "doesn't realise it yet and it's still running around, but it's already dead". This touched off a debate over the usefulness of the JCP and how much it will play a role in Java's future.
In his blog post, Alex Blewitt identified several concerns about Java and the JCP:
Blewitt also stated:
JCP is not about community; it's about Control. Read through any of the JSRs and there's a section on "Why isn't this addressed by existing systems". Reading through them is an exercise in marketing; there's invariably no real reasons there, but rather 'We can do it better/different/smaller/faster'. What really happens in these situations is that the spec leads have zero interest in building upon what's already there; they want to get in their own version of a codebase (whether real or proposed) and the arguments are essentially 'Because we didn't write it'. The so-called 'expert groups' are nothing more than a peer review process of the developers (normally the submitters of the JSR), and have zero impact on the code that actually gets developed. (Normally, the submitters of the JSR will supply the sole developers of the code rather than enlisting the help of the expert group, so that they can own all the IP of the process.) In other words, it's the sanctioned blessing of doing whatever you want to do
Others commented that Google should lead Java development, or that Java would soon be replaced by a true parallel language. However, some worried that modularity invited fragmentation of the platform.
On the same day as the above post, Jean-Marie Dautelle, co-lead of JSR 275 (Measures and Units), solicited feedback and questions from the community for the JCP:
Dautelle's question also drew a long response from Stephen Colebourne, JSR 310 (Date and Time API) co-lead. Colebourne asked:
This question leads into broader questions of governance in Java. Java is now opens source, yet we still have no real clarification on how that works or affects the JCP.
In particular, who is the 'architect' overseeing the development of Java, and its future direction? Is it a named person in Sun? A hidden magical process? Or hit and hope?
Colebourne wondered who decides what language changes go into Java 7, how core library changes occur, and why the JSR 277 module management system is being handled like it is - he also raised several issues:
- Sun ignores the JCP legal agreements it signs (ie. wrt Apache Harmony). This destroys all trust.
- The JCP still exists to rubber stamp proposals from its big company members. Basically, a company submits code they already have, and the 'Expert Group' really exists to peer review it.
- Neither the JCP or Sun are giving any sense of direction to Java. There should be a clear sense of where Java is headed and what it is trying to be - a five to ten year vision.
- The JCP is not eliminating duplicate JSRs (see OSGi). Worse, it is allowing the worse option to succeed.
- Individuals have too small a say. They tend to provide the innovation and disruption that keeps the big companies honest.
Colebourne also proposed several solutions such as an architecture group which would publish a five to ten year vision for Java, a larger and more autonomous JCP Executive Committee, payment for JSR members, and a proper TCK for Apache Harmony. Another option which is presented is the elimination of the JCP, and the redefinition of Java as an OSGi-based modular VM built on top of a kernel - vendors could then mix-and-match as they pleased, and the market would decide on a winner. Patrick Wright disagreed with several points, pointing out that in the Apache-Sun Harmony debate only Apache has publicized their side of the story. Wright also questioned how valuable a five to ten year vision was given the rapid pace of language development.
Peter Kriens also weighed in on the debate, agreeing with Colebourne about the analysis but disagreeing with the solutions. Kriens also raised a new question - what is more relevant, an implementation or a specification? Kriens points out that a specification allows multiple implementations that target different requirements, it allows neutrality by balancing the needs of multiple organizations, the slow standardization process allows for real time to think about solutions, and problems with intellectual property rights tend to be easier to handle. Dalibor Topic responded that both JCP and OSGi are too controlled by large companies, and that specifications are encumbered by proprietary components - however, they are both worth having. Kriens responded that large company backing was important for a specification to succeed, and tha tall members of OSGi are treated equally, whereas Sun has a disproportionate amount of control over the JCP.
What are your thoughts?
I don't think its a bad thing. JCP made sense when java was proprietary. Now there is OpenJDK - a whole new set of dynamics has to come into play. On the language front I would like to see lots of innovation (some first class support for languages other then java), Consumer JRE seems to have legs. Java 6 has Rhino in it ! Isn't Javascript meant to be the Next Big Language???
I think in the world of OpenSource and open community the role of standard should be changed quite drastically. Anyone who think that they have good idea can just spawn their own project and do pretty much what ever they like with it. The checks and balances will be the adoption i.e. if your doing the right things and solving real problems then most likely you'll see that reflected in higher adoption.
I strongly believe that the market should decide. However, for markets to work well you need liquidity. In our world, liquidity is seriously hampered due the many (half finished) plugin frameworks. It is hard to use someone else's modules if that module uses a different module system. Such friction in the market creates unnecessary complexity, monopolies and oligopolies which will all work against a free markets. A small VM a la Harmony with a widely supported module system will create a market of components that can then compete freely. Let the best win. This has been the model in my head for almost ten years, and I still believe that that is the way to go today.Software is already hard enough, we should not be hindered by unnecessary complexities. I get tears in my eyes when I look at CPAN (Perl repository) and think we could have a better repository if we got our act together as an industry. One of the reasons Sun is not adopting OSGi is because they realize how frictionless the market would become when there was a widely adopted module system for Java? Or is that too Machiavellian? I know I am suspect ... but don't you think that standardizing on OSGi, as the most complete, mature and thoroughly specified module system for Java, would help create a component market so that we can compete without the shepherd grazing with the sheep? Kind regards, Peter Kriens
See my response on Who needs standard anyway
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
4 comments
Watch Thread Reply