站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题追根溯源——J2ME的起源和发展历程

追根溯源——J2ME的起源和发展历程

摘要: 追根溯源——J2ME的起源和发展历程

Java编程语言最初是为消费电子设备编程设计的嵌入式语言,但其发展却偏离了初衷,成为一种开发基于服务器应用的平台技术。因此,从某种意义上说,今天的J2ME实际上是Java技术向“根”的回归。

<table width=620 align=center><tr><td class=a14> 这一切都起源于20世纪90年代初期的Green Project和Oak编程语言,这种语言后来被重新命名为Java。从那以后,Java出现了许多版本和变种,包括JDK 1.0和1.1、EmbeddedJava、PersonalJava、Java Card以及现在Java 2平台的不同版本。

J2ME并不是Sun公司在手持设备和嵌入式设备领域的第一次冒险。它实际上是Sun公司早期为小设备开发的一系列平台的“后裔 ”,这些平台包括20世纪90年代初期Green Project的部分成果Oak、1996年推出的Java Card、1997年推出的PersonalJava、1998年推出的EmbeddedJava,以及1999年推出的Spotless System和KVM。今天,J2ME平台满足针对高端和低端电子设备的开发需求。需要注意的是,Java Card尽管与J2ME有关联,但却并不是它的组成部分。

源自Green Project的Oak

Java技术的第一个雏形是Oak,这是Sun公司为消费电子设备编程而开发的一个面向对象的、与机器无关的编程语言。Oak允许你编写出无需修改就能在不同设备上运行的软件,这也是“编写一次,到处运行”的首次实现。Oak受到很多种语言的影响,包括C、Objective C、C++,以及Smalltalk和Simula68,它是一种专为在资源有限的设备上开发应用的解释性编程语言。

Green Project不仅创建了Oak,同时还创建了一种操作系统、一种图形用户界面和一种名为Star7(*7)的手持设备,但它们过于超前,得不到广泛的认可,因此在PersonalJava出现之前,我们再也没有看到Sun公司把Java技术的应用瞄准消费电子设备。

PersonalJava

Sun公司再一次推出的针对电子设备的Java技术是PersonalJava应用环境,它是专为有网络连接和用户界面的电子设备设计的,诸如机顶盒、基于Web的设备、PDA等。

PersonalJava应用环境主要基于JDK 1.1 API,但同时也有一些包是来自JDK 1.2。PersonalJava要求完全支持Java语言规范和Java虚拟机规范,版本1.2a是最新的PersonalJava规范版本,它也很可能是一个终结版本。

PersonalJava应用环境包括一个优化的Java类库和一个名为Truffle的图形化工具箱选件,该选件帮助开发者创建基于触摸屏的用户界面。为了尽可能地减少对内存的需求,PersonalJava规范定义了两种包:一种是所有PersonalJava实现都必须支持的“强制包”;另一种是“可选包”。与JDK相比,PersonalJava应用环境不支持Swing用户界面API,而是提供了一个精简的AWT API,以及一些与AWT和Timer处理有关的特定PersonalJava API。表1列出了PersonalJava规范所支持的各种包。

完整的PersonalJava应用环境包括一个软件开发工具箱和优化的类库、一个参考实现和仿真环境以及一些实用程序和工具,包括applet Viewer、JavaCheck实用程序等,它们帮助开发人员确认应用能够符合PersonalJava规范的要求。

目前,PersonalJava技术已经不再独立存在,而是并入Personal Profile,成为J2ME的一部分。

EmbeddedJava

EmbeddedJava应用环境是针对诸如汽车、过程控制设备等功能专一且内存受限的嵌入设备提出的。它也是基于JDK 1.1,其运行环境与PersonalJava应用环境很相似,但它不像PersonalJava是为特定设备定义的特定Java子集,而是允许用户针对特定的设备使用所需要的Java技术,你不需要在你的设备中嵌入任何用不到的东西。EmbeddedJava规范的最新版本是1.1。

EmbeddedJava规范允许获得许可的厂商非常灵活地选择它想在其设备中支持的Java特性,表2列出了EmbeddedJava规范支持的包。

清注意,EmbeddedJava规范已经走到了其生命的尽头,Sun公司将很快终止对它的支持。如果你正在使用EmbeddedJava应用环境,你应该赶快转移到适合你需求的J2ME配置和概要上去,通常的方式是从EmbeddedJava转移到某些基于CDC的概要上去。

Java Card

Java Card是对J2ME的补充。它是Java在智能卡中的应用,典型的Java Card设备拥有8位或16位处理器,1M~5MHz的运行频率,1.2KB的RAM和32KB的ROM。

Java Card规范包括一个精心挑选的Java语言子集,它不支持大的原始数据类型,如长整型、双精度型、浮点型、字符串型,动态的类载入、多线程以及其他一些Java技术特性。

当前的Java Card是2.2版,它由三部分内容组成:

● Java Card虚拟机规范(Java Card VM) 它为智能卡定义了一组Java语言子集和虚拟机;

● Java Card运行环境规范(Java Card RE) 它为智能卡定义了运行行为;

● Java Card API 规范 它为智能卡定义了核心和扩展的Java包和类。

此外,Java Card开发工具提供了一个Java Card RE和Java Card VM的参考实现以及其他一些工具,以帮助你实现基于小程序(applets)的Java Card技术。

常见的Java Card技术应用包括数字身份证、安全的银行储蓄卡和用在移动电话中存储电话和用户账号信息的SIM卡等。虽然Java Card是为智能卡设计的,但它也可以用于其他许多领域,例如在1998年的Java o­ne大会上展示的Java戒指(Java Ring,又名 Java-Powered iButton)就只是Java Card的另外一种型态,Dallas Semiconductor公司将它制作成钮扣形状,并将它镶嵌在戒指之上。

Spotless System 与 KVM

K虚拟机(KVM)是Sun公司的一项代号为“Spotless System”研究工程的成果。该项目将Java技术移植到资源更为受限的设备上,其环境与PersonalJava应用环境不同,但在某些方面类似于Java Card运行环境。

Spotless System项目的目标是“建立尽可能小的完整JVM,以支持针对小应用的完整字节码指令集、类装载、标准的非图形类库和基本类文件”。该小组最关心的是可移植性和代码大小,而不是执行速度。为了测试该成果,该小组将其移植到Palm中。该系统包括如下组件: KVM、核心Java类库子集、基于特定设备的数据库和用户界面API,以及用于把类文件从桌面机移植到Palm上的实用程序。 该成果一经公布,即在JCP中获得好评,如今它已成为CLDC的一部分。

J2ME:应运而生

到20世纪90年代末,嵌入式设备和手持设备市场已经趋于成熟,日本推出的i-Mode Java手机迅速发展。与此同时,Java在服务器端的应用开发也迅猛发展,Java语言的平台独立性、安全性等特点开始得到充分发挥,市场份额迅速提高。在这种情况下,以前的Java产品管理方式已经不能适应迅速发展的市场,为此,Sun公司在1999年下半年决定将Java兵分三路,推出了针对不同的应用开发者和不同的运行环境:

● Java 2平台标准版(J2SE) 它是一组针对传统桌面应用的API和运行环境;

● Java 2平台企业版(J2EE) 它是J2SE的扩展集,主要用于在服务器端开发可伸缩、可迁移、以数据库为核心的企业应用;

● Java 2平台微型版(J2ME) 它定义了一组针对嵌入式设备和消费电子设备的API和运行环境,这些设备包括无线手持设备、PDA、电视机顶盒以及其他缺乏足够的资源去支持J2SE的设备。

把Java 2平台分成三种版本使得它能够更好地满足不同目标领域中开发者的需求,同时也使Java技术在保持其“编写一次,到处运行”精神的同时在不同领域得到继续发展。(游安弼编译)

</td></tr></table>
↑返回目录
前一篇: 基于MIDP1.0实现组合按键
后一篇: J2ME编程实践之联网开发