CloudFoundry: Java, Ruby or Node.js?
I happened to know about the new project CloudFoundry by VMWare
If I want to deploy an application on CloudFoundry.com, which language is the best choice?
Just like Google App Engine, obviously, Python is the most mature one开发者_StackOverflow while Go is the most inmature.
How about CloudFoundry?
The open source software CloudFoundry is written in Ruby, but the advertisement always puts Java before Ruby. like "Run your Spring, Rails, Node.js and Scala applications. " See the following pic:
Does that mean the support for Java is better than Ruby?
I think you're reading too much into things regarding the order of the languages. Like most other questions asking "which language should I choose," the answer has more to do with the kind of app you're building and the amount of expertise you have in the various languages than which language is "the best."
As an ex App Engine team member, now part of the Cloud Foundry team, I concur with Andrew: use the language and framework you prefer, the best tool for the job, Cloud Foundry treats them all equally.
The App Engine team needs to creates language specific bindings for underlying Google services, and usually do Python first, then Java, then Go, so you have a time lag between when a feature is introduced in Python, to when it trickles down to the other languages (although it got much better recently as the product matures).
Cloud Foundry exposes services to the various language/frameworks using these framework's existing service interfaces, it just automates the service provisioning and binding (the connection/config parameters are not hardcoded in a property file anymore, they are provided by Cloud Foundry at runtime, in a way that is framework specific). For example, when RabbitMQ was introduced in Cloud Foundry, we didn't need to create a new API for the service in each language, we just leverage the existing AMPQ client libs for each language/framework.
The comparison to GAE is not appropriate here. One of the differences between GAE and CF is that in CF there are no specific APIs to use. If you are writing an RoR app, you just write the app and then deploy it. Same thing if you are writing a Spring or Grails app.
My understanding is that with the core integrations provided and maintained by VMware, they are meant to be treated equally. Of course, CF is still in beta and differences in support levels between platforms may exist, but this is probably a bug, and not a feature.
So, I think Brandon Tilley is largely correct in that you should be thinking about the language/platform that is most appropriate for your app, rather than what is appropriate for CF.
It really isn't going to matter, use what you're familiar with. The key to the application will be the architecture that you setup, not really the language or stack you use on top.
Then of course, the other answer is still what most answers that are open ended result in, "it depends!" :)
I think Java and Spring would be the best choice. I'd do that before Ruby or node.js. Spring Source was purchased by VMWare a while back (one year ago? two years?), so it makes sense.
精彩评论