移动应用基础技术平台分析
2009-05-25彭卫华
彭卫华
摘要:在当前的移动应用开发领域中,J2ME以其跨越平台运行、开发周期短及强大的本地执行能力逐渐成为最主要的开发平台。本文主要介绍移动应用开发基础平台J2ME技术的主要架构、相关安全机制及这两种技术结合的现状。
关键词:移动应用;跨平台;J2ME
在当前的移动应用开发领域中,J2ME以其跨平台运行、开发周期短及强大的本地执行能力逐渐成为了最主要的开发平台。J2ME与XML将很快成为移动应用的基础技术平台,在各个方面尤其在广受瞩目的移动应用安全方面促进移动应用的发展。
一、J2ME综述
J2ME为移动应用提供了一个高效灵活的开发环境,是一个具有强大网络功能的统一开放的编程平台,其JAVA语言的跨平台特点使得各种应用能够更快地开发并推广,对HTTP等高级Internet协议的支持又使其能方便快捷地实现各种网络应用。下面我们将对J2ME的体系结构及技术特点进行详细的介绍与分析。
二、J2ME与JAVA家族
自从Sun Microsystems推出Java 2 Platform的概念以后,为了适应不同级别计算机硬件的开发需要,JAVA平台形成了三个主要分支:①Java 2 Standard Edition;②Java 2 Micro Edition;③Java 2 Enterprise Edition。它们的体系结构及相互关系如图1所示。
Java 2 Standard Edition又简称为J2SE, 它是Java的标准版,它使用Java Hotspot虚拟机来提高其性能,其Java类库包含了Java语言的所有特性,针对的设备主要是台式机等设备;Java 2 Enterprise Edition又简称为J2EE,其类库存除了Java语言的所有特性外还包含针对企业计算的各种编程接口和规范。J2EE针对的设备主要是后端的Server,它也使用Java Hotspot虚拟机。
三、J2ME体系结构
J2ME是SUN 公司于1996年6月推出的针对嵌入式、消费类电子产品的开发平台,与J2SE、J2EE共同组成Java技术的三个重要的分支。J2ME是为了支持像PDA、手机等小型的嵌入式或移动设备而推出的一系列的技术和规范的总称,由JCP组织制定相关的JSR(Java Specification Request)并发布。
首先,针对消费电子和嵌入式设备的计算能力及各种硬件条件,J2ME根据最基本的一些特征把它们划分为两类:一类是运算功能与电力供应有限,只具备间断网络通讯能力的设备,如PDA(Personal Digital Assistant,个人数字助理)、手机等,这类设备一般用电池供电;另一类是运算能力及电力供应相对较佳,并且具有不间断网络连接的设备。在硬件划分的基础上,J2ME提出了Configuration和Profile两个核心概念。
1.Configuration
Configuration是针对性能相近的一类设备提出的定义其能力共性的规范。Configuration中定义了这些设备至少需要符合的运算能力、供电能力、内存大小等内容,同时也定义了一组在这些设备上执行的Java程序所能使用的类库。这些类库包含虚拟机和核心的类库,因此Configuration也可以看成支持一组通用设备的最小Java平台。J2ME定义了两个Configuration,分别对应上述的两类设备:对应第一类设备的Configuration称为CLDC(Connected Limited Device Configuration),主要针对16bit,32bit及16MHz以上的处理器,使用的虚拟机是KVM;对应第二类设备的称为CDC(Connected Device Configuration),主要针对32bit及75MHz以上的处理器,使用的虚拟机是CVM。这两个规范所定义的类库,除了Java标准核心类库的子集合之外,也加入了与该类型设备相符合的扩充类库。CLDC和CDC类库的范围与J2SE核心类库的关系如图2所示。
2.Profile
CDC和CLDC仅仅是对各类设备中最具共性的配置提供了基本的功能集合。但是,在实际应用中,不同的设备间存在着很大的差异,所以需要根据设备具体功能再进行一次划分,比如CLDC设备又分为智能手机、PDA等。因此,我们在Configuration的基础上,提出了Profile的概念。Profile作为Configuration的扩展和补充,针对每一类功能设备的特殊性定义了与设备特性相关的API。可以说有了Profile以后,才真正有了建立一个可运行J2ME应用程序的完整环境。
目前主要的Profile 有三种,其中两种是基于CLDC的MIDP(Mobile Information Device Profile,移动信息设备Profile)和PDA Profile,另一种是基于CDC的Foundation Profile。现在应用最广的是MIDP,已经有了MIDP1.0和MIDP2.0两个版本,它定义了关于移动信息设备(主要指智能手机和一部分具有无线通信功能的PDA)的图形界面、输入和时间处理、持久性存储,短消息等的API,并且考虑到了移动信息设备的屏幕和内存限制。而正在制定中的PDA Profile则定义了针对PDA的API,其屏幕、内存条件都要大于MIDP,但是网络方面的要求则显然和手机有所不同。基于CDC的Foundation Profile则提供除了用户界面以外CDC所缺少的几乎所有J2SE核心类库。
综上所述,我们可以这样描述J2ME的体系结构:整个结构分为四层,最底层是Host Operation System(设备宿主操作系统);之上运行的是由Configuration定义的Java Virtual Machine(JAVA虚拟机),构成整个平台的基础;虚拟机之上是由Configuration提供的适应于该类设备的具有最基本语言特性的扩展类库;在Configuration的基础上,再由Profile提供针对设备的特殊功能API和扩展类库。J2ME的四层结果构成一个完整的应用程序运行环境(如图3所示)。J2ME体系中需要
一个Configuration和至少一个Profile,多个Profile可以共存,也可以叠加。
三、J2ME应用程序
所有根据J2ME规范开发出来的应用程序都称为J2ME应用程序,当前应用最广的J2ME应用程序是MIDLet(MIDP应用程序)。MIDLet是基于CLDC和MIDP规范开发的应用程序,主要运行于各种移动终端(如智能手机)中。
一个MIDlet应用程序首先通过扩展javax.microedition.midlet.MIDlet类来实现程序的启动、暂停和终止。为了使程序的功能更加丰富,MIDlet应用程序通常还包括其他一些类,所有这些类能随它们的资源一起被打包进称为MIDlet套件的jar文件中。一个jar文件通常包括多个MIDlet应用程序,这些MIDlet程序之间能共享数据和资源。同一台手机上可以有多个套件同时运行。在MIDlet套件中的所有MIDlet程序都共享同一段存储空间、运行时对象栈和类的静态域。在MIDlet套件中的MIDlet程序、类和文件不能被单独地安装、更新或删除,它们必须作为一个整体来操作。封装MIDlet套件的jar文件中包含以下组件:①实现所有MIDlet程序的类文件;②MIDlet程序使用的所有资源文件,比如图标、映像文件等等;③一个描述该Jar文件的清单。
MIDP规范定义了在一个MIDlet套件中的MIDlet程序执行的环境,在该MIDlet套件中的所有MIDlet应用程序都共享这个环境,而且同一套件中的所有MIDiet程序之间可以进行交互。该环境主要包括CLDC中所定义的类库、MIDP中所定义的类库、工具类和应用程序所使用的资源等内容。
四、J2ME的安全机制
J2ME的安全机制可以从本地应用程序安全保障机制与网络安全保障机制两个方面来讨论。
1.本地应用程序安全保障机制
J2ME的本地应用程序安全保障机制主要包括两重校验机制和沙箱(Sandbox)模型两种基本技术。两重校验机制是指采用两阶段验证方法来验证类装入器中所有的类,这一字节码验证过程保证了应用程序不能访问内存空间或使用其域外的资源。两重校验机制的两阶段为:第一阶段是预校验(preverify),在编译类文件的桌面计算机或下载应用程序的服务器计算机中进行,这阶段完成大部分复杂的校验工作。完成了预校验后,最终的类文件通常包含下一阶段所需附加信息;第二阶段则是虚拟机内部的校验(verify),这一阶段将下载到用户设备上的Java类文件载入虚拟机的内存,然后运行真正意义上的校验程序。
2.网络安全保障机制
J2ME的网络安全保障主要通过相关安全协议来实现。应用传输层安全协议SSL可以在传输层建立安全的数据保护。通过建立点对点安全连接来保证网络与数据的安全性。像SSL/TLS(安全套接字层/传输层安全性,以后简称为SSL)这样的安全性协议允许应用在因特网主机之间打开安全套接字。在连接握手时,SSL利用公钥算法和数字证书在素不相识的各方之间建立信任并交换当前会话的私钥。于是,SSL通信各方使用快速的私钥算法来加密和解密通信数据。SSL协议支持认证、数据完整性和机密性。在电子商业应用程序中,基于SSL的安全HTTP (HTTPS )已经成为传输敏感数据的标准协议。
五、结论
J2ME以其特有的技术优势已成为了移动应用的主流开发平台,在移动应用开发中用J2ME提供更灵活的安全保证手段已成为了必然的趋势。