近年来出现了许多 JVM 语言,包括 Javascript、Python、Ruby 等(完整列表在这里:JVM 语言列表)。我的问题是:为什么 Sun 没有像 Microsoft 的 .NET 那样为 JVM 提供一整套语言?使用新版本的 JVM,他们可以对动态语言或类型系统进行任何必要的调整,并为至少几种语言发布编译器。这将立即为一大堆语言提供对 Java 已经存在的大型类库的访问权限。
4 回答
Sun(现在的 Oracle)实际上并不需要自己做很多事情来创建更多的 JVM 语言——因为这个角色在很大程度上已经被开源社区和/或更广泛的 Java 生态系统所占据。
考虑:
- 现代、日益流行的开源 JVM 语言,如Scala、Groovy和Clojure
- 由Apache Software Foundation等组织创建或赞助的库,可供所有 JVM 语言使用
- Eclipse Foundation和其他机构的 IDE / 开发工具
- 由 Java 的主要企业支持者创建的各种工具和企业产品,包括 IBM、Red Hat、Google 等...
- 通过OpenJDK 项目将 Java 语言和平台本身开发为开源产品
因此,将 Java 视为一个拥有众多参与者的开放生态系统更为合适,而不是由单个公司控制的平台。
财务说明了一切:
MSFT - 市值 173B,净收入 17B
JAVA——市值2B,净收入4亿
我看到两个问题:Sun 是否会更改 JVM 以支持动态语言(这会很简洁,尽管一些动态语言已经设法在当前 VM 上运行,可能会以性能为代价);以及为什么 Sun 没有正式开发其他语言。
我希望他们会做第一个,但我不认为需要第二个。斯科特的回答非常好。此外,Java 已经出现了相当长的一段时间,而微软不得不启动他们的 CLR/.NET 平台,因此他们需要尽最大努力说服开发人员……而且他们负担得起!
所以我不确定 Sun 是否需要为 JVM 推出替代语言,独立开发人员有足够的精力在没有帮助的情况下这样做。
此外,JavaFX 脚本语言可以被视为这样(即 JVM 的官方语言),并且似乎 BeanShell 可能会在 JSR 中采用。
如果您正在寻找适用于 JVM 的 Visual Basic,恐怕该项目已被取消 :-)
说真的,在专注于 Java 语言多年之后,Sun 现在直接支持 Jython 和 JRuby 背后的开发人员,并且正在更改 JVM 和他们的 IDE 以更好地支持这些语言。Java 6 现在还包括 Rhino JavaScript 运行时。
你说得对,这些不是 Sun 从头开始开发的语言,我认为这是一件好事。Java 生态系统在社区以及许多其他依赖 Java 的公司(如 IBM 和甲骨文)中有着悠久的创新历史。
我真的不知道 Sun 会通过创建全新的语言来解决哪个问题来支持。我什至不确定 JavaFX 是否最好通过拥有一种全新的语言来服务。我理解为什么 MS 必须在 .NET 上支持 Visual Basic,但幸运的是 Sun 不必这样做。