CloudFoundry:Java、Ruby 还是 Node.js?
我碰巧知道 VMWare 的新项目 CloudFoundry
如果我想在 CloudFoundry.com 上部署应用程序,哪种语言是最佳选择?
就像Google App Engine一样,显然Python是最成熟的,而Go是最不成熟的。
CloudFoundry 怎么样?
开源软件CloudFoundry是用Ruby编写的,但广告上总是把Java放在Ruby之前。比如“运行你的 Spring、Rails、Node.js 和 Scala 应用程序。”请参见下图:
这是否意味着对 Java 的支持比 Ruby 更好?
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 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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我认为Java和Spring将是最好的选择。我会在 Ruby 或 Node.js 之前这样做。 Spring Source 不久前被 VMWare 收购了(一年前?两年前?),所以这是有道理的。
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.
我认为您对有关语言顺序的事情读得太多了。与大多数其他询问“我应该选择哪种语言”的问题一样,答案更多地与您正在构建的应用程序类型以及您在各种语言中拥有的专业知识有关,而不是哪种语言是“最好的”。
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."
作为一名前 App Engine 团队成员,现在是 Cloud Foundry 团队的一员,我同意 Andrew 的观点:使用您喜欢的语言和框架,这是完成工作的最佳工具,Cloud Foundry 对它们一视同仁。
App Engine 团队需要为底层 Google 服务创建特定于语言的绑定,并且通常首先执行 Python,然后是 Java,然后是 Go,因此在 Python 中引入某个功能到它渗透到另一个功能之间存在时间滞后语言(尽管随着产品的成熟,它最近变得更好)。
Cloud Foundry 使用这些框架的现有服务接口向各种语言/框架公开服务,它只是自动执行服务配置和绑定(连接/配置参数不再硬编码在属性文件中,它们由 Cloud Foundry 在运行时提供,在一种特定于框架的方式)。例如,当 Cloud Foundry 中引入 RabbitMQ 时,我们不需要为每种语言的服务创建新的 API,我们只需利用每种语言/框架的现有 AMPQ 客户端库。
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.
此处与 GAE 的比较并不合适。 GAE 和 CF 之间的区别之一是 CF 中没有可供使用的特定 API。如果您正在编写 RoR 应用程序,则只需编写该应用程序,然后部署它。如果您正在编写 Spring 或 Grails 应用程序,情况也是如此。
我的理解是,对于 VMware 提供和维护的核心集成,它们应该受到平等对待。当然,CF 仍处于测试阶段,平台之间的支持级别可能存在差异,但这可能是一个错误,而不是一个功能。
因此,我认为 Brandon Tilley 在很大程度上是正确的,您应该考虑最适合您的应用程序的语言/平台,而不是最适合 CF 的语言/平台。
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!" :)