This week, Heroku announced some incremental support to the Java support they announced last year at DreamForce . Some of our users have asked us what this announcement means for the Java cloud ecosystem and how it compares with the CloudBees PaaS. Let me shed some light on this...
But first of all, let me say that Heroku’s support of Java helps reinforce the message that the future of Java lies in the cloud. Heroku has been widely successful with their Ruby cloud offering and, after being acquired by Salesforce.com (CRM), their move into Java territory comes as no surprise.
An important part of Heroku’s announcement was that they were partnering with Atlassian Bamboo in order to provide complete coverage of the Java application lifecycle. This full-lifecycle coverage validates CloudBees’ vision: CloudBees has been providing a production-ready Java PaaS that covers the complete application lifecycle for almost two years now. Of course, we do that with Jenkins , the world's most popular continuous integration (CI) server that is already integrated with popular Atlassian products like JIRA. There's a reason Salesforce uses Jenkins internally - because it is a superior solution.
Java is not Ruby. Java is not PHP. Java has its own ecosystem, its own best practices and its own requirements. Java code needs to be built, and Java developers are extensive users of continuous integration to improve speed, quality, and time-to-market. Not providing Java developers with the tools they need is simply negating what Java developers are about.
Consequently, we are glad Heroku has validated some of the things CloudBees recognized long ago about cloud-based Java development, we'll now have to see just how well they can walk the talk.
Full Life Cycle Coverage in the Cloud
As described above, Heroku’s pre-deployment features are provided by Bamboo. While a step in the right direction, this offer is currently only available if you setup your own Bamboo server - including your own build machines: you can’t use Bamboo’s SaaS offering. You then have to manually link your Bamboo instance to your Heroku account, and manually configure each of your jobs/ applications .
At CloudBees, no setup is required: once you’ve created your account, you can directly use CloudBees Git/Subversion repositories (or the ones of your choice, including GitHub or your own on-premise repositories) with our fully-managed SaaS version of Jenkins. You get unlimited cloud-based build elasticity and can deploy continuously to our production PaaS (or in any test or staging area). For example, when configuring a job to deploy to the PaaS, a single click is needed:
No SSH key or error-prone actions are required. Furthermore, CloudBees gives you the opportunity to store your binary artifacts on a Maven repository, which is what any Java developer would expect.
Heroku also claims that, “enterprise developers can get a complete Java solution in a single package, provisioned with a single click.” While Heroku indeed provides a way to deploy a specific binary application on their platform with a click, it can’t deploy a complete Java solution - again, Java apps are more than binaries or script files.
At CloudBees, our recently launched ClickStart offering enables the deployment of a truly complete Java solution in a click: from source code repository, build and tests, application(s), database(s) and pre-populated data. You can use pre-defined ClickStart templates, but also build your own custom templates (private to your company - to quickly get started on a new project - or public - to promote a solution/framework on the market). If you haven’t tried it, just create a CloudBees account and click on the “ClickStart” link at the top of the navigation bar:
Heroku’s full-lifecycle Java offering is only available to Enterprise customers (it is not available to “normal” Heroku users) willing to fill in a contact form in order to be contacted and pay $1,000/month per application deployed. The absence of a true on-demand, pay as you go cloud offering is puzzling. At CloudBees, we think Java developers should be able to benefit from the true “cloud treatment” that Ruby developers are otherwise getting from Heroku. While CloudBees offers additional customized deployment offerings (other AWS regions, other cloud providers, dedicated servers, custom server setups, etc.) those are all available as part of a normal, on-demand CloudBees account. Coming from the Java world, I suspect more than a few of the nine million Java developers in the world are going to feel like the "enterprise" features Heroku wants $1,000/month/app for are just "normal" for them.
Last but not least, when you are deploying your applications onto a PaaS, you are not just “deploying code" - you are actually relying on the PaaS provider to help you when “something” goes wrong, including when the problem lies in your application (which you’ll typically know only after a thorough investigation from the PaaS provider). We like Ruby a lot and use it ourselves, but we also know that supporting production Java applications at scale with the idiosyncrasies and specifics of its runtime calls requires deep technical and operational expertise. Consequently, it is up for debate how much help from a PHP or Ruby vendor you’ll really get when your Java transaction monitor starts going funny while launching a new offering. CloudBees’ team is composed of a renowned team of Java experts who have worked on leading middleware products such as JBoss, Glassfish, Weblogic and Websphere: FUBU .
Call to Action
If you want to enjoy true one-click application building, testing and deployment, why don’t you register for CloudBees (it is free), and test one of our ClickStarts? You’ll have a complete Java or Scala or Lift app using a variety of frameworks, with source code, build, test and database deployed in a matter of minutes.
On the other hand, if you already have some of your Java applications deployed at Heroku and, yet, want to enjoy true, full life cycle coverage as a hosted service, you can also subscribe to CloudBees DEV@cloud Jenkins service and install the Heroku Jenkins plugin on CloudBees. We make it possible to build and test at CloudBees, yet deploy on other PaaS providers such as Heroku. This is part of our belief that PaaS providers should work toward reducing lock-in as much as possible and instead compete on value.
Sacha Labourey is the former CTO of JBoss, Inc. He was also co-general manager of middleware after the acquisition of JBoss by Red Hat. He ultimately left Red Hat in April 2009 and founded CloudBees in April 2010.
Follow Sacha on Twitter.