Newer posts are loading.
You are at the newest post.
Click here to check if anything new just came in.

July 24 2011

What's happening at OSCON Java ?

This year at OSCON we're highlighting Java. Edd Dumbill and I talk about his Seven reasons you should use Java again Radar post and the upcoming sessions at OSCON Java.

The post received quite a few comments and we share our thoughts on them as well as the the OSCON Java program in the associated podcast.

OSCON Java 2011, being held July 25-27 in Portland, Ore., is focused on open source technologies that make up the Java ecosystem. (This event is co-located with OSCON.)

Save 20% on registration with the code OS11RAD


July 13 2011

Who leads the Java parade?

Since Oracle's acquisition of Sun, we've been wondering who will lead the Java community. What sort of leadership is needed, and who will fill the shoes that, for better or for worse, Sun has occupied since Java was first released?

First, does the Java community need a leader? Significant portions of it are doing just fine without any "leadership," most notably the people working on big data. Their attitude seems to be "have JVM, will do great stuff, don't bother me with the politics." And granted, the politics of the Java world over the past decade have been worse than tiresome. But everyone in the Java community relies on a JVM, languages, and libraries, and none of the smaller players have the capability of maintaining and developing these themselves. What happens to the community if the JVM stagnates?

Oracle's community problem

Oracle's problem has been simple: while they've made occasional overtures and peace offerings to the Java community, they've also been, well, abusive. One need look no further than the departure of the Apache Software Foundation and Doug Lea from the JCP when it became clear that Oracle viewed the community process merely as a means to rubber-stamp their decisions. (Doug still contributes to OpenJDK, though through a stand-alone process that is then integrated into releases.) It is certainly true that Oracle is a very large company that has never had to worry much about community relations. I doubt Oracle developers expect much say in the future of the Oracle database platform. It's possible that this is just a cross-cultural faux-pas; I don't think it's Oracle's intention to kick sand into their developers' faces. I suspect it never occurred to Oracle's highest levels of management that the community would care.

In a nutshell, that's Oracle's biggest challenge. Can they win the community over, and convince participants they are at least trying to engage? Much of the creativity in the Java world has come from the community members. The current explosion of JVM languages certainly didn't originate at Sun or at Oracle, nor did most of the web frameworks in the Java space, nor did the thriving Hadoop ecosystem. At some point, developers may decide it's just not worth the hassle to be in an ecosystem where they're not respected as partners. There are alternatives: C#/Mono, the renaissance of the JavaScript space. It would be easy for enterprise developers to move to these alternatives. It would be more difficult (but not impossible) for large projects such as Hadoop or Cassandra to move. Oracle can't be displaced because they own the JVM, but I don't think they can assume the Java community won't just go elsewhere.

The puzzle of Google and Java

Google's attitude toward the Java community has been puzzling to me, though no doubt not to Googlers. Google is one of the biggest beneficiaries of the Sun diaspora, having picked up Josh Bloch several years ago, James Gosling very recently, Tim Bray and many others along the way. They've also consistently been the most creative and innovative users of the Java platform: regardless of whether you like GWT (and I don't), compiling Java to JavaScript is a brilliant and gutsy idea. App Engine's platform-as-a-service support for Java was unparalleled until Amazon announced Elastic BeanStalk. And the crown jewel, Android, is clearly the most interesting thing in the Java world today. Java ME's best hope for the future is to survive as a second-class citizen on Windows Phone 7. (I also see a sad future for a proud but fading mobile handset vendor, but that's another story.) But Google has never shown any interest in taking a leadership role. Their attitude towards most of their Java projects can be summarized as "We invented it; we use it; we like it; if you want to try it, go ahead; we don't particularly care whether it succeeds on a larger stage."

Google supports an active user group program (GTUGs), but as you would expect, they cover the whole range of Google technologies, not Java as such. And, like most technology user groups, GTUGs are largely inward facing; they don't create a lot of news on their own. Google's presence in the Java community at large is surprisingly low key.

I've been puzzled by this attitude, though perhaps it isn't strange. Google is a very large company that's interested in many things, from medical records to self-driving cars. But they know exactly where their money is coming from, and that's their advertising business. Projects that are related to selling advertising get marketing effort; projects that protect their ability to sell advertising in the future get marketing effort (I've argued that that's the motivation behind Android, and it's certainly somewhere in the background behind Chrome); but projects that are merely internal tools that they release to the public get short shrift. App Engine? Google is interested in providing tools to help developers build applications, but I don't think they see App Engine as a moneymaker; they're willing to let Amazon be the leader in cloud services. Contentious Java community relations? For Google, that's a distraction. Google's own Java developers are all the community it needs. Google has the resources to maintain its own JVM, should it come to that. That's probably a reasonable corporate policy, but it does not do the Java community any good.

OSCON Java 2011, being held July 25-27 in Portland, Ore., is focused on open source technologies that make up the Java ecosystem. (This event is co-located with OSCON.)

Save 20% on registration with the code OS11RAD

VMware's role in the Java world

VMware probably acquired more talent from the Sun diaspora than any single company. And they've also made some interesting purchases over the years: SpringSource gave them a viable alternative platform to Java EE, with the Groovy language thrown into the bargain. They have made some very important moves with their open cloud platform, CloudFoundry: an open-source platform as a service (PAAS) framework that features a wealth of open source frameworks, including Spring, Rails, Sinatra, Node.js, and Grails and other JVM-based technologies. Again, Java is so important to the enterprise computing space that building a cloud platform around Spring is a no-brainer. But outside of the Spring community, VMware has played their cards close to their chest. Am I the only person who has had trouble figuring out where they're going or what they're doing?

VMware's aims are not unlike Google's. They have more to be gained from the success of their properties — Spring and Grails are much more than tools for internal use. But they're very focused on larger corporate goals, as they try to move from domination of the virtualization world to domination of cloud computing. Their latest purchases show that they see the cloud as providing corporate applications to end users. With the addition of Socialcast to their portfolio, it's clear they see that cloud computing is essentially social, and that thriving companies must have a social component. All this is well and good, but it's a strategy that can succeed with or without Java. While they have a definite interest in seeing Java's Open Source community prosper, as far as I know they haven't shown any interest in the community as a whole. They've bought companies formed around open source projects, but they haven't, at least up until Cloud Foundry, started any projects of their own. And while Cloud Foundry provides a great platform for running Java applications in the cloud, it isn't itself a Java project: it's written largely in Ruby on Rails and Erlang.

So while VMware has an important role in the Java community, they're not a Java company as such. Indeed, they're using what they see as the best tool for the job. That's certainly a good practice, and perhaps the hard lesson we've learned after a decade or so of language wars. VMware has talent and some wisdom — but as a company, I don't think there's a desire to be a community leader.

What do we want from a Java community leader?

JavaPerhaps we should be asking the bigger questions: What do we want from a community leader? Is that role necessary at all, or is it just a holdover from Sun's often inept attempts to deal with the movement they created? I've already mentioned maintenance of the JVM, and the job of pushing it (and the language) into the future. We've debated new language features long enough; at some point, someone had to own the job of implementing Java 7, with closures or without. Oracle has taken on that task, and succeeded. I think they've made some hard decisions, and good ones: deferring closures until Java 8, while keeping the invokedynamic bytecode instruction that makes it easier to implement dynamic languages in the JVM. Bringing Java 7 to closure (if not bringing closures to Java 7) is a significant achievement, and something that could have wandered on for years under Sun's leadership.

But is that all we want? Sun's tenure as leader of the Java community was stormy, with Sun probably not getting enough credit for keeping the fractious participants together. As I said many times, the JCP was the "least dysfunctional standards group out there." But that came at a cost. In my admittedly idiosyncratic reading, the train-wreck that was EJB 2 came from Sun's inability to say "no" to powerful vendors, who wanted certain kinds of features. If you remember JINI (and you probably don't), Sun's marketing told a bizarre story about Jini-enabled Internet refrigerators, rather than treating it as an enterprise technology that would compete with J2EE. As a result, JINI died a slow death. The history of Java is littered with initiatives (Java Media; Java Communications; even JavaFX, in which Oracle has taken a renewed interest) that Sun hyped briefly because it fit their strategy du jour, then dropped.

I'm not asking for Oracle, Google, or VMware to re-start any of these dead technologies. That's probably water over the dam, though should it happen, I'd be cheering. But being a technology leader doesn't just mean declaring yourself a leader and standing in front of the parade. You have to understand where the parade is going and lead. And that's a deeper role than just pushing the Java language and the JVM into the future. It requires understanding what developments are important, and valuing those developments for what they are even if it conflicts with your own story. It requires pushing back against other JCP organizations that "need" arcane features at the cost of sane design. And it requires doing so without appearing to abuse the good will of the millions of developers working with, and on, Java. Are any of the companies in the Java community willing to exercise this kind of technical leadership? Are there any organizations willing to think about what features the Java platform really needs, and bring those ideas to fruition? That's what we need for leadership in the Java community. It's time for the real leader to stand up.



Related:


July 07 2011

Seven reasons you should use Java again

O'Reilly is celebrating the release of Java 7, and our inaugural OSCON Java conference: July 25-27 in Portland, Ore.

Java's back, baby. Of course, lots of us never stopped using Java in the first place, or perhaps we weren't allowed to. But where platform selection was elective, especially among startups and web developers, alternative platforms have offered more agility and expressiveness over the last 10 years. The likes of PHP and Ruby on Rails enable developers to do a whole lot more with less.

Times change, and 16 years on, this ain't your father's Java. Here's seven reasons you should take another look at Java.

1. You can actually hire engineers

Not to be sniffed at when your Node.js Ninjas and Rails Rockstars get headhunted into the latest impossibly well-funded startup.

2. IDEs take the pain away

Eclipse and NetBeans are astonishingly powerful tools, and can mask some of the admitted horror that is Java API soup. Bend like a reed, admit you can't know everything, and float downstream on the good ship autocomplete.

3. Language support

You don't have to write Java to use Java. You can get all the benefits of the portable JVM runtime but scribble away in the familiar environs of Ruby or Python. It can be faster too. And that's not to mention the newer languages aimed at modern programming such as Scala, Groovy or Clojure.

OSCON Java 2011
To celebrate the release of Java 7, the first 77 people registering today for OSCON Java with code JAVA7 will get the pass at a discounted price of $700 (applicable to OSCON Java package only).

Register now with code JAVA7

4. Android

Who can resist the little green robot? Google made a sensible choice when they chose the Java language to power what's becoming the world's dominant mobile phone platform. So, maybe Oracle has a billion-dollar beef with this, but programmers — new and seasoned alike — are picking up Java as mobile becomes the future of consumer software.

5. Everybody else does

Java's ecosystem is a goldmine. Pretty much everything you want to do, there's a library for it. Actually, there's probably an Apache project for it. Very often the lowest impedance way to speak to the rest of the world is via a Java API.

6. It changes slowly

We're celebrating the release of Java 7 right now. It's been two years in the making, and frankly, there's not a whole lot that's changed for most people. If you can take your finger off the refresh button at Hacker News for more than an hour, any software that lives longer than a year becomes a real pain to maintain when the underlying platform keeps changing. Yes, looking at you, Rails.

7. You'll end up using it anyway

At a certain point you'll need performance, predictability and a ready supply of engineers. Scaling, deploying and programming to the cloud are places where Java excels. Twitter found this out, and will be talking about it at OSCON Java.


There's still time left to register for OSCON Java. See you in Portland, 25-27 July!



Related:


A rough guide to JVM languages

O'Reilly is celebrating the release of Java 7, and our inaugural OSCON Java conference: July 25-27 in Portland, Ore.

The possibility of using alternative languages on the JVM has always been an appealing side story to Java. Jython and JRuby were early pioneers in implementing a dynamic language on top of a statically typed VM. Now that Java 7 directly includes support in the JVM for dynamic languages, the coexistence is official.

Pick any of the languages here and you can expect the support of the robust JVM threading and garbage collection, plus access to a broad array of application libraries.

Up and coming

Scala

The pragmatist among JVM languages, Scala is a general-purpose programming language. It was conceived and is generally viewed as a "better Java," and of all alternative JVM languages has the best acceptance in an enterprise setting.

Scala combines the familiar feel of object-oriented Java with strong language support for concurrency, XML and functional programming features: many of the tools that contemporary complex and scalable systems require. Scala also takes a lot of the awkwardness out of Java code, through features such as type inference and traits.

object HelloWorld {
    def main(args: Array[String]) {
      println("Hello, World!")
    }
  }

Scala-related content at OSCON Java:

OSCON Java 2011
To celebrate the release of Java 7, the first 77 people registering today for OSCON Java with code JAVA7 will get the pass at a discounted price of $700 (applicable to OSCON Java package only).

Register now with code JAVA7

Clojure

Clojure is a functional programming language based on Lisp. Through careful design, Clojure is simpler to read and use than Lisp, and it interacts cleanly with the Java world. Its functional nature makes programs very concise and composable.

In common with Scala, Clojure is designed with concurrency in mind. Its variables are immutable, and the use of software transactional memory and agents help manage shared mutable state in a more sustainable way than locking.

The experience of Clojure's inventor Rich Hickey is reason enough alone to give it a whirl. I once happily spent an hour listening to him describe the design and implementation of sequences in the language.

A "Lisp that could," Clojure is finding increasing (and surprising, to most observers) traction and acceptance. One contributing factor to this is an advanced build and package management infrastructure in leiningen and Clojars. Salesforce-owned hosted platform provider Heroku recently added Clojure as its third supported environment, following Ruby and Node/JavaScript.

A small but important omission from the Clojure ecosystem is a port of the book The Little Schemer.

(println "Hello, World!")

Clojure-related content at OSCON Java:



Tried and tested


Groovy

A mashup of ideas from Python, Ruby and Smalltalk, Groovy gained early traction in the world of JVM languages, reaching its stable release in December 2007. Having been around a while, Groovy strongly acknowledges the Java world into which it was born, and is a good choice for Java developers wishing to use a more agile and dynamic language.

One of Groovy's jewels is Grails, a high-productivity web development environment inspired by Ruby on Rails. The Groovy world has also spawned Gradle, a modern project automation system for Java and JVM languages, providing an alternative to the established Ant and Maven projects.

println "Hello, World!"

Groovy-related content at OSCON Java:

Rhino

Another veteran of the JVM language scene, Rhino is an implementation of the JavaScript programming language in Java. Part of the Mozilla project, it is typically used by developers to add user scriptability to their applications using JavaScript, though it is also used in situations where a system is predominantly implemented in JavaScript.

First released in 1999, Rhino has been around the block a few times. As a JavaScript engine, it is facing increasing competition from the C++-based V8, but retains the immense advantage of Java interoperability.

print('Hello, World!');

Remastered classics

Jython

A port of the Python language to the JVM, Jython offers some advantages over and above using Python, including Java's multi-threading and the ability to statically compile into Java classes. As a Python terse object-oriented language, programmers can quickly prototype in Jython, creating hybrid Java-Jython systems. Jython also offers developers an alternative to Rhino's JavaScript for embedding scriptability in their applications.

Jython also lets web developers bring popular Django web application framework into a Java setting.

print "Hello, World!"

JRuby

The Java implementation of Ruby is no second-class citizen. JRuby has been recorded as better performing than Ruby 1.8, and strives for C-Ruby compatibility. Users of JRuby can benefit from using the Ruby on Rails web framework, or add Ruby scriptability to their applications.

One appealing aspect of building a system in JRuby or Jython is that it gives developers the option of reimplementing performance-critical code in Java without having to switch platforms as a project matures. Twitter's migration from Ruby to the JVM is a case in point.

puts "Hello, World!"

JRuby-related content at OSCON Java:

The Wild West

The JVM remains a fertile ground for language experimentation, as several of the languages featured in OSCON's Emerging Languages track demonstrate, including Seph and Gosu. As a platform, the JVM bootstraps language inventors and experimenters today much as lex and yacc did two decades ago. At OSCON Java, aspiring language creators should pop along to Charles Nutter's JVM Bytecode for Dummies.


There's still time left to register for OSCON Java. See you in Portland, 25-27 July!



Related:


Seven Java projects that changed the world

O'Reilly is celebrating the release of Java 7, and our inaugural OSCON Java conference: July 25-27 in Portland, Ore.

Java's open source ecosystem is strong and healthy, one of the primary reasons for our creation of OSCON Java. Over the last decade, several projects have traveled beyond mere adoption and had effects dominating the Java world, into software development in general, and some even further into the daily lives of users.

JUnit

Ported to Java by Kent Beck and Erich Gamma from Beck's work in unit testing in Smalltalk, JUnit has been largely responsible for popularizing test-driven development over the last decade. Many implementations have been created, in .NET, C, Python, Perl and just about every language in popular use.

Eclipse

As Java and its APIs matured in the early 2000s, the Eclipse IDE provided a way for programmers to be productive and negotiate the growing Java ecosystem. Eclipse was also the first major project to use the SWT UI toolkit, providing important competition to Sun's Swing and showing that Java programs can provide a rich native interface. Eclipse has evolved toward a goal of being a universal IDE, and it now provides a rich foundation for platform vendors to integrate with.

Spring

The Spring Framework has played an important role in enabling Java developers to be productive, managing a balance between simplicity and features. Spring gives Java developers a set of services providing commonly used application functionality such as data access and transaction management. As a competitor to Sun's Enterprise Java Beans system, Spring enabled an alternative and simpler path for Java applications, as well as ensuring a healthy competition of ideas in the way Java applications are constructed.

OSCON Java 2011
To celebrate the release of Java 7, the first 77 people registering today for OSCON Java with code JAVA7 will get the pass at a discounted price of $700 (applicable to OSCON Java package only).

Register now with code JAVA7



Solr


The Solr server, and the Lucene search engine it encapsulates, has been for many years a simple and practical solution to providing search capabilities to web and enterprise applications. Solr's genius is in providing HTTP access to the powerful and fast Lucene search library, enabling it to become a part of any system, regardless of whether it is implemented in Java or not. More than any other project, Solr has ensured that good search is a checkbox item for modern web applications.

Hudson and Jenkins

Originally developed as Hudson, and now also as Jenkins, this continuous integration tool is a key part of a Java development setup. Jenkins provides automated build and testing of a software project, continuing in the footsteps of JUnit in enabling agile development on the Java platform. While both Hudson and Jenkins persist for now as forks of each other, it doesn't detract from the work of Kohsuke Kawaguchi in creating a world-class continuous integration platform and so enhancing the quality of much Java development.

Hadoop

This Java implementation of the famous MapReduce model is the powerhouse that has enabled most "big data" systems. By lowering the cost of extracting value from large data sets, Hadoop has made practical the personalization and advertising businesses of Facebook and Yahoo, and many other companies. In the same way that Linux enabled large websites to be built on cheap hardware, Hadoop enables large-scale distributed computing by handling failure at the software level. Both Hadoop and the above-mentioned Lucene are the product of the work of Doug Cutting.

Android

Controversy is never that far from Java, whether the custodian be Sun or Oracle. Google's choice to use Java as the programming language for its massively popular Android mobile operating system has led to a renewed interest in the language from whole new communities of software developers. Android programs undergo a further step to convert JVM bytecode to Dalvik bytecode — Dalvik being a virtual machine optimized for mobile devices. Google has been able to leverage Eclipse to provide software developers with a mature development environment for creating Android applications.

Oracle and Google are currently engaged in a lawsuit over a claim that Android infringes on multiple patents held by Oracle. The results of that suit notwithstanding, Android has done much to recruit developers and perpetuate the use of Java in client-side software development.


There's still time left to register for OSCON Java. See you in Portland, 25-27 July!



Related:


June 10 2011

Why data and Java deserved OSCON sub-conferences

In this inaugural OSCON 2011 sneak peek podcast, Edd Dumbill and I talk about the history and evolution of OSCON (now in its 13th year) and our reasons for moving data and Java into their own sub-conferences.

Specific topics addressed in the 16-minute podcast include:

We'll be posting bi-weekly podcasts with teasers and highlights as we approach OSCON (July 25-29 in Portland, Ore.)

Podcast production by Rich Goyette Audio.

OSCON 2011 — Join today's open source innovators, builders, and pioneers July 25-29 as they gather at the Oregon Convention Center in Portland, Ore.

Save 20% on registration with the code OS11RAD
Older posts are this way If this message doesn't go away, click anywhere on the page to continue loading posts.
Could not load more posts
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
Just a second, loading more posts...
You've reached the end.

Don't be the product, buy the product!

Schweinderl