最近几年,基于JVM平台在编程语言方面发生了巨大的变化。比如动态语言(如:Javascript,Jruby,Jython,Groovy)和函数式与面向对象兼具的Scala等。我很高兴我们现在有很多选择,到目前为止,我不认为某个单一语言可以像之前的Java一样独占JVM。 在某种程度上,JVM上出现多种语言共存是件好事,一个工具不可能适用所有需求。我们不能指望Java在GUI方面足够好;就像C语言一样,Java从来都不是为了开发动态Web应用而设计的,但我们还是尝试使用JSP、JSF和大量的框架来对抗PHP、Rails和Python在Web上的生产力。好在Java对平台细节和内存管理的抽象层次足够高。这些基于JVM的新语言在各自的领域内也随之可以更进一步的抽象。
在不远的未来我们将会看到,我们的项目中,并行进程用Clojure编写,展示层使用Jruby/Rails,中间层是Java。每个应用层都将使用不同的编程语言实施,然而,接口对每一层的开发者都是透明的。这是个大事,客户端和服务器将使用不同的运行时和编程语言,在之前的Java平台上前所未有。 这对于Java开发者意味这什么呢? ◆对于Web开发者而言,你将要学习很多与Struts、JSF、JSP不同的东西,我们的开发不再是model1、model2和MVC。 ◆对于非Web开发者而言,你所写的代码可读性将更强,并且可以采用上面所提到的任何一种语言来打造适合你项目的DSL;而且,你无需担心偶尔的复杂性以及框架会影响到你的项目。 Java平台开发者的生活(或履历)将会改变,他们将兴奋于现在不只一种编程语言可以使用,而不是只有框架。我从来不认为Java语言将走向灭亡,不是因为现存的大量API库是使用Java编写的,而是因为地球上知道Java的程序员太多了。工具支持Java、本地JVM支持Java(译者注:指运行在JVM上的基础软件)。Java会像C语言一样,你能做的任何事都将被潜在的支持,成为一个基础平台。 后记:本文是作者对Java平台混合编程的变化趋势给的一些体会和观点。事实上,混合编程在我们身边已经有所应用并被广泛认可。让每种语言发挥在自己擅长的领域,更直接的解决问题是当前软件开发应对日趋复杂的项目需求的一个方向。 |