java 之未来
2011-12-30 17:42
127 查看
转载于51cto
Java之父自己也清楚的表述了这个观点:“我们看中的并非Java语言,而是JVM。事实上我们可以让所有语言一起工作。”
以后的企业级项目和Web项目需要怎样的语言?一般而言,有下面几点:
◆可伸缩性
◆可移植性
◆并行编程
◆高性能的
◆DSL(领域特定语言)的实现
他们可能想要:
◆动态的
◆静态的
◆强类型的
◆函数式的
◆富有表达力的
◆面向对象的
◆简洁的
◆容易理解的
◆容易学习的(在有Java或其他语言开发经验的基础上)
◆深刻的
◆快捷的
◆模块化的
◆灵活的
◆有强大的类库
◆有好用的框架
◆有合适的IDE
◆有活跃的社区
某些语言能够满足上述条件中的很多条,但是很明显,没有任何一种语言能够满足所有的条件!同时,同一个项目的不同层面的需求也是不同的。现在全世界最流行的微博服务Twitter,表层是Ruby on Rails,底层是Scala,而Twitter团队进行这样的选择正是因为考虑到不同层面的业务需求。
在预言中他描述了同一个项目中可能会需要不同语言的三个层:
◆稳定层(stable layer)–不包含大量的应用程序功能,可以使用静态语言构建
◆动态层(dynamic layer)- 包含大量的应用程序功能,使用动态语言构建
◆领域层(domain layer)- 包含大量的应用程序功能,使用DSL构建
不过话又说回来了,既然混合语言编程这么好,为什么一直以来都没怎么流行呢?答案很简单,和我们与国际友人之间有沟通问题的原因是一样的:一段Ruby代码要如何明白一段Java代码说了些什么呢?对于高级语言来说,要互相理解对方的功能,进而进行交互,是一件很困难的事情。如果无法交互,又要如何一起来完成同一个项目呢?
沟通问题是一个很大的障碍。然而,这个障碍的清除早就有了一个成功的案例:那就是微软的.NET平台。在微软官方文档的描述中,这种“沟通”被命名为“跨语言互操作性”,或者“语言互用性”。在.NET平台上,这个问题的解决方案是公共语言规范 (CLS)。事实上,不得不说微软在这方面做的要远远超过解决“沟通问题”的这个层面:它的目的是能够让多种语言可以自由共享和扩展彼此的库。不过,在过去的很长一段时间内,.NET平台上的主要公民只有两个:C#和VB.NET,其他公民则大多半死不活,这使得这个互操作性的意义大打折扣。
综上所述,软件项目的未来在于混合语言编程。此前景的舞台将在未来数年内搭建成熟,而聚光灯的焦点就是一个百家争鸣的JVM。基于JVM的混合语言编程的发展趋势,为Java开发者们提供指引。想一想看,当你的老板或项目经理决定要尝试Groovy或是Scala进行部分开发的时候,如果你能够立即站出来为他进行一些解惑或指点,那么你又何愁饭碗随着Java语言的老去而消逝呢?
Java之父自己也清楚的表述了这个观点:“我们看中的并非Java语言,而是JVM。事实上我们可以让所有语言一起工作。”
以后的企业级项目和Web项目需要怎样的语言?一般而言,有下面几点:
◆可伸缩性
◆可移植性
◆并行编程
◆高性能的
◆DSL(领域特定语言)的实现
他们可能想要:
◆动态的
◆静态的
◆强类型的
◆函数式的
◆富有表达力的
◆面向对象的
◆简洁的
◆容易理解的
◆容易学习的(在有Java或其他语言开发经验的基础上)
◆深刻的
◆快捷的
◆模块化的
◆灵活的
◆有强大的类库
◆有好用的框架
◆有合适的IDE
◆有活跃的社区
某些语言能够满足上述条件中的很多条,但是很明显,没有任何一种语言能够满足所有的条件!同时,同一个项目的不同层面的需求也是不同的。现在全世界最流行的微博服务Twitter,表层是Ruby on Rails,底层是Scala,而Twitter团队进行这样的选择正是因为考虑到不同层面的业务需求。
在预言中他描述了同一个项目中可能会需要不同语言的三个层:
◆稳定层(stable layer)–不包含大量的应用程序功能,可以使用静态语言构建
◆动态层(dynamic layer)- 包含大量的应用程序功能,使用动态语言构建
◆领域层(domain layer)- 包含大量的应用程序功能,使用DSL构建
不过话又说回来了,既然混合语言编程这么好,为什么一直以来都没怎么流行呢?答案很简单,和我们与国际友人之间有沟通问题的原因是一样的:一段Ruby代码要如何明白一段Java代码说了些什么呢?对于高级语言来说,要互相理解对方的功能,进而进行交互,是一件很困难的事情。如果无法交互,又要如何一起来完成同一个项目呢?
沟通问题是一个很大的障碍。然而,这个障碍的清除早就有了一个成功的案例:那就是微软的.NET平台。在微软官方文档的描述中,这种“沟通”被命名为“跨语言互操作性”,或者“语言互用性”。在.NET平台上,这个问题的解决方案是公共语言规范 (CLS)。事实上,不得不说微软在这方面做的要远远超过解决“沟通问题”的这个层面:它的目的是能够让多种语言可以自由共享和扩展彼此的库。不过,在过去的很长一段时间内,.NET平台上的主要公民只有两个:C#和VB.NET,其他公民则大多半死不活,这使得这个互操作性的意义大打折扣。
综上所述,软件项目的未来在于混合语言编程。此前景的舞台将在未来数年内搭建成熟,而聚光灯的焦点就是一个百家争鸣的JVM。基于JVM的混合语言编程的发展趋势,为Java开发者们提供指引。想一想看,当你的老板或项目经理决定要尝试Groovy或是Scala进行部分开发的时候,如果你能够立即站出来为他进行一些解惑或指点,那么你又何愁饭碗随着Java语言的老去而消逝呢?
相关文章推荐
- [Java二十周年]我的十多年经验与未来分析
- 甲骨文CEO:未来几年将大量投资Java
- 甲骨文在JavaOne大会中阐述Java未来发展蓝图
- Java Web 服务在未来一年内的发展
- idea 警告:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
- 企业级Java的未来如何?
- Java程序员们读什么书决定了对未来职业方向的选择
- Java与.NET谁是未来
- android,harmony,java的未来
- 面向未来,Python也许会成为c/c++,Java的强大竞争者
- Java 8的重要新特性以及未来版本的发展规划
- Android在未来对Java 8语言功能的支持
- [java]奢谈未来的java语言。。。
- 前瞻:Java能否畅行未来?
- JAVA与.Net,谁是未来(转载)
- Java技术未来十年发展
- java未来
- Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
- 一位JAVA程序员的七夕情书——致未来的另一半
- Java 8的重要新特性以及未来版本的发展规划