一些嵌入式设备开发者认为Java技术在应用中就其功能来说是不完善的:太慢、太不可预测或是太大。这里有一些可供选择的方法可实现Java技术,并能有效地解决这些问题。
据Sun Microsystems公司估计,现在已有70多万个开发者在使用Java技术。尽管Java平台在公司或企业应用中已有许多成功的事例,但对其在嵌入式设备开发中的应用话还鲜有公开的论述。为了更客观地认清当前的情形,让我们从两个方面对Java技术做一评述:规范和实现。现有的Java平台“规范”并没有问题,但是现有的很多“实现”(特别是针对PersonalJava和EmbeddedJava)对于大多数嵌入式设备并不可行。
适于Internet的Java
Java平台于1995年面市,作为一种编程语言和运行环境,它特别适用于与Internet相关的应用。Sun Microsystems倡导“网络就是计算机”,他们已经意识到强大的微处理器正逐渐应用于许多消费类和嵌入式设备,这些设备会越来越多的与网络相连。网络连接从工作站和PC开始,随后迅速波及打印机、扫描仪、复印机及其它办公设备。最近,个人数字助理、机顶盒、双向寻呼机、智能电话,甚至数字手表等带有微处理器的新式设备也连到了数字网络。在Java之前,网络基本被视为储存和提供相对静态的信息的大型系统,也许用“网络就是虚拟磁盘驱动器”来描述可能更贴切一些。现在,Java技术为联网的计算设备提供了一种有效的方法,用于存储和分布动态和可扩展的功能性,从而扩展了网络的实用性。
Java结构包含有几个截然不同但又相互关联的技术,其中每一个在Sun的规范中都有详细说明。这些技术包括Java编程语言、Java虚拟机(JVM)和Java API(见图1)。下面我们将集中在JVM及一些实现方面的问题,这些问题可能会影响Java技术对嵌入式应用的适用性。
图1:Java体系包括若干个截然不同但又相互关联的技术。
跟所有的虚拟机器一样,JVM也定义了一个抽象的计算机。其规范定义了每一个JVM必须具有的功能。但是对于每一种应用的设计者,它都会给予几乎无限制的自由。例如,每一个JVM都可以使用任何技术去执行Java字节代码。事实上,JVM可以软件或硬件的形式实现,或两者不同程度的混合。这种灵活性意在使JVM可在各种计算机和嵌入式设备上实现。
在最上层,JVM的主要目的是装载Java类文件并执行它们(见图2)。在执行期间,JVM实现在两个方面会影响Java技术对特定应用的适用性:用于执行字节代码的方法;系统资源(主要是内存)管理。