二 J2ME 架构:
Java自1995年发明以来以发生了很大的变化,从最早的为基于溜览器中运行的Applet的编程,到Servlet/EJB的Server编程,再到现在的MIDlet为无线信息设备的编程。它已发展成为为开发者提供一端到端编程开发的平台,即我们常说的 J2SE/J2EE/J2ME,Java的三个平台(fig1)。由于无线编程有其完全不同于传统编程的特殊性,比如:运行设备的多样性,设备处理能力不如服务器和微机,用户界面的差异性等。另外在加上无线技术的飞速发展,使得J2ME的体系架构有者完全不同于J2SE/J2EE的特点。
图1: Java 的三个平台
J2ME的架构是把我们传统的Java架构:硬件/OS/JVM/APIs/应用加一变化,变成了:硬件/OS/Configuration/Progile/应用。之所以采用这样的架构是由我们上面所谈到的J2ME的特殊性有关。
图2: J2ME的架构
J2ME/CLDC/MIDP作为J2ME的一个版本,它是专为无线移动通讯设备说设计的,在下面我们简单介绍它的体系架构。从下图中我们可以看到:
图3: CLDC/MIDP架构
在CLDC之上有两类API:
-MIDP APIs: 这些APIs正是MIDP v.0规范所要定义的APIs.
- OEM-specific APIs: MIDP规范所涉及的无线通讯设备多种多样,因此它不可能 涉及所有设备 的需求。因此这一类的APIs是由OEM厂商提供以便访问特定设备的特定功能。但基于这些APIs的应用可能不能在其它的MIDs设备上运行。
MID应用的种类:
-MIDP: 一个MIDP应用或称为MIDet,它必需只使用MIDP和CLDC规范中所定义的APIs。该类应用能在应是在MID设备上最常见的应用。
-OEM-specific: 一个OEM-specific的应用会使用一些不在MIDP中定义的PIs(OEM-specific classes) 。这些应用不能在不同的MIDs设备上运行。
-Native: 一个本地应用使指用非Java语言编写的直接运行于设备操作系统之上的应用。在MIDP规范中不涉及OEM-specific和Native的应用。
三 MID v2.0规范所涉及的范围:
我们都知道无线信息设备(MIDs〕的功能多种多样。但MIDP规范并不是要对这些设备的所有功能都要加以定义,并提供APIs编程。相反MIDP v1.0和MIDP v2.0的专家组同意只针对有通用并且成功实施的功能的需求制订相应的APIs。在MIDP v1.0中这些功能包括:
- 应用的下载
- 应用的生命周期
- 端到端的传输(http)
- 网络联结
- 数据库存储
- 计时器
- 用户界面
通过用户对MIDP v1.0的使用经验和反馈,MIDP v2.0的专家组在MIDP v1.0 APIs的基础上又新加了下面的 APIs:
- 应用的下载和计费
- 端到端的安全传输(https)
- 应用的数字签名和域的安全模式
- MIDlet的push注册(server push model)
- 声音
基于上面所讲的同样的原因,一些功能是不会在MIDP的定义范围内,这些功能包括:
- 系统层的APIs: MIDP APIs的重点是针对应用的开发者,而不是系统开发。因此一些底层的涉及系统接口的APIs,比如无线信息设备的电源管理,语音的编码模块就属于系统层的APIs而不在MIDP所讨论的范围内。
- 底层的安全:MIDP规范不涉及底层的安全的功能,它只使用CLDC所提供的底层的安全机制。
关于MIDP v2.0的新APIs在本文中我们不加以介绍。
四 MIDP v2.0的安全机制:
我们知道Java语言作为以种网络编程语言,它具有很多特点来满足网络编程的需求,其中最为人们所津津乐道的是它的遍写一次到处运行,以及它的安全性。特别是它的安全性,从它的发明道现在的7年的时间已经为无数的事实所证明。Java语言的安全性,安全机制也有它发展的过程,下面我们简单介绍以下Java的安全机制。
Java1.0的沙箱机制:
fig3: Java1.0安全的沙箱机制
上图所描述的是Java1.0的沙箱机制,它最早是为在溜览器中运行的Applet所设计。因Applet的运行代码是通过网络传输到用户的机器中,为了防止恶意代码,该机制把用户应用简单分为本地应用和网络应用(applet)。对网络应用它只能放问一些安全的 APIs从而保证安全性。但该机制过于简单,无法很好满足开发者的需求。
Java1.1的可信任代码的安全机制:
fig4: 可信任代码的安全机制
该安全机制只是在Java1.0沙箱安全机制的基础上,引入一种新的网络应用,及可信任的网络应用,但并未对所访问的资源进行很好的划分。大家从图中可看出,应用要吗受沙箱的约束,只能访问有限资源,要么就能访问所有资源。
Java1.2/2的域安全机制:
Java1.2/2的域安全机制
该安全机制通过配置文件对Java的应用以及访问的资源进行配置,从而实现了一种非常细化的安全机制。
MIDP安全机制及其发展:
MIDP1.0规范在制订时由于当时的无线网络尚处于发展阶段,因此在考虑MIDP v1.0的安全机制时没有太多考虑应用在网络传输过程中安全性的设置,而是把重点放在无线应用在设备上的运行过程中的安全性上。因此MIDP1.0规范通过沙箱的安全机制来提供MIDlet suite运行时的安全性,该机制保证MIDlet所能调用的APIs不能访问设备的敏感信息和功能。在MIDP2.0安全机制的制订过程中,专家组采纳了用户对MIDP v1.0安全机制所提出的意见:即1.0版本的安全性太“强”使得很多的无线设备的功能
不能通过MIDP的编程来加以使用。比如说手机中地址本的访问等。如果要把这些敏感功能的APIs开放让用户的应用访问,就必须引入一种新的安全机制。该机制就是我们前面所描述的Java1.2/2的域的安全机制。在MIDP v2.0中对不被信任的MIDlet则只能运行于该沙箱安全机制中。任何一种MIDP v2.0的实现,必需支持非信任的MIDlet的在MIDs设备上的运行。
MIDP2.0引入了信任的MIDlet的新概念,对于信任的MIDlet它能使用一些敏感的和被限制使用的APIs.当无线信息设备检测到一MIDlet sute是可信任时,则它对APIs的访问由相应的安全域的策略定义。我们将在下面的章节中详悉介绍。当验证一MIDlet suite是否能信任时发生错误,则该MIDlet suite必需被拒绝执行。
MIDP2.0的域的安全机制:
非信任的MIDlet Suites
一非信任的MIDlet suite是指MIDlet suite的下载源和JAR文件的完整性不能被下载的设备所信任。对于非信任的MIDlet suite必需只能运行于非信任的安全域中,在该域中对受保护的APIs或功能不能访问或由设备使用者确定可以访问或不可以访问。任何一MIDP1.0兼容的MIDlet suite能在MIDP v2.0的实现上用非信任的模式运行。对于非信任的MIDlet suites它能访问它的JAR manifest和application desctiptor文件以及下面的APIs:
- javax.microedition.rms
- javax.microedition.midlet
- javax.microedition.lcdui
- javax.microedition.lcdui.game
- javax.microedition.media
- javax.microedition.media.control
非信任安全域对以下APIs或功能的访问必须由用户确定可以或不可以:
- javax.microedition.io.HttpConnection
- javax.microedition.io.HttpsConnection
可信任的 MIDlet Suite 的安全:
可信任的 MIDlet Suite 的安全是建立在保护域的机制上。每一保护域定义了该域中的 MIDlet suite 的访问权限。该保护域的定义者可以定义设备怎样确认和验证它能信任的 MIDlet suite 并把该域所允许和授权使用的受保护的APIs和功能绑定给该MIDlet suite。设备所使用的验证和信任MIDlet suite的机制的定义是分开的,这样有利于人们根据设备,网络,和商业模式的不同来进行选择。可信任的 MIDlet Suites使用X.509 PKI的签名和验证机制来确定一MIDlet suites的可信任性。
在MIDP2.0的域的安全机制中,大家主要回涉及以下概念:
保护域: 是MIDlet suite所允许的权限访问的集合
权限访问: 是指必须通过授权才能使用的 APIs 或功能
信任MIDlet Suite: 指该MIDlet suite能通过验证并其JAR文件的完整性能被保证,并能被该设备上的某一保护域所信任。
配置文件: 一配置文件中包含许多域或别名的定义。每一域由包含所赋于的权限和用户操作所构成。
配置文件的例子:
domain: O= MIDlet Underwriters, Inc. , C=US
allow: javax.microedition.io.HttpConnection
oneshot(oneshot): javax.microedition.io.CommConnection
alias: client_connections javax.microedition.io.SocketConnection, javax.microedition.io.SecureConnection,
javax.microedition.io.HttpConnection,
javax.microedition.io.HttpsConnection
domain: O=Acme Wireless, OU=Software Assurance
allow: client_connections
allow: javax.microedition.io.ServerSocketConnection, javax.microedition.io.UDPDatagramConnection
oneshot(oneshot): javax.microedition.io.CommConnection
domain: allnet
blanket(session): client_connections
oneshot: javax.microedition.io.CommConnection
五. 总结:
MIDP v2.0是为广大的开发者在无线移动通讯设备上提供的一个开放的Java平台,它具有开放性,通用性,以及比MIDP v1.0更强的安全功能。它是由全球约五十多家厂商所共同制定的,因此基于MIDP v2.0的应用在将来回有很广泛的应用前景。
附录一:MIDP v2.0 的专家组:
公司:
4thpass Inc, AGEA Corporation, Alcatel, Aplix Corporation, AromaSoft Corp, Baltimore Technologies CELLon France, Distributed Systems Technology Centre, Elata PLC, Esmertec, Espial Group Inc, France Telecom / Orange, Fujitsu Limited, German Aerospace Center (DLR), Institute of Communications and Navigation, Hitachi Ltd./Digital Media Group, In Fusio, J-PhoneEast Co. Ltd, Logica Mobile Networks, Mitsubishi Electric Corp, Mobile Scope AG, Mobilitec, Motorola, NEC Corporation, Nextel Communications Inc, Nokia, NTT DoCoMo, Inc, Omnitel Pronto Italia S.p.A, One 2 One, Openwave Systems
, Inc, Orange (UK), Palm, Philips Consumer Communications, Philips Semiconductors, Research In Motion (RIM), Samsung Electronics Co., Ltd, Sharp Labs, Siemens AG, Siemens ICM, Smart Fusion, Sony Ericsson Mobile Communications, Sun Microsystems, Inc, Symbian Ltd, Telef'nica M'viles Espa'a, Vaultus, Inc, Veloxsoft, Inc, Vodafone Global Platform & Internet Services, Vodafone Group Services Limited, Vodafone Multimedia, Zucotto Wireless,
个人:
Fabio Ciucci, Glen Cordrey, Jon Eaves, David Hook, Myank Jain, Neil Katin, Steve Ma, Ravi Reddy Wai Kit Tony Fung
http://gceclub.sun.com.cn/staticcontent/html/java/midp/index.html