Java虚拟机探索

从广义上讲,Clojure,JRuby,Groovy等运行于Java虚拟机上的语言及其相关的程序都属于Java技术体系的一员。如果仅从传统意义上来看,Sun官方所定义的Java技术体系包括了以下几个组成部分:

Java程序设计语言

各种硬件平台上的Java虚拟机

Class文件格式

Java API类库

来自商业机构和开源社区的第三方Java类库

模块化是解决应用系统与技术平台越来越复杂,越来越庞大而产生的一系列问题的一个重要途径。无论是开发人员还是产品的最终用户,都不希望为了系统中的一小块功能而不得不下载,安装,部署及维护整套庞大的系统。最近几年CSGi技术的迅速发展正说明了通过模块化实现按需部署,降低复杂性和维护成本的需求。

当单一的Java语言已经无法满足当前软件的复杂需求时,越来越多基于Java虚拟机的语言被应用到软件项目中。Java平台上的多语言混合编程正成为主流,每种语言都可以针对自己擅长的方面更好地解决问题。例如,在一个项目之中,并行处理用Clojure语言编写,展示层用JRuby/Rails,中间层用Java,每个应用层都将使用不同的编程语言来万厚层,而且,接口对每一层的开发者都是透明的,各种语言之间的交互不存在任何困难,就像使用自己语言的原生API一样方便,因为它们最终都运行在一个虚拟机之上。

JDK1.5引入了Java.util.concurrent包实现了一个粗粒度的并发框架,而在JDK1.7中引入了java.util.concurrent.forkjoin包,fork/join模式是处理并发编程的一种经典方法,能够轻松地利用多个CPU核心提供的计算资源来协作完成一个复杂的计算任务。通过利用Fork/Join模式我们能够更加顺畅地过度到多核的时代。

在JDK外围,也出现了专为满足并行计算需求的计算框架,如Apache的Hadoop Map/Reduce,这是一个简单易懂的并行框架,能够运行在由上千个商用机器组成的大型集群上,并能以一种可靠的容错方式并行处理上TB级别的数据集。

标签