New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Ryan Slobojan on Dec 11, 2007
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
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
4 comments
Watch Thread Reply