文章来源:《J2ME无线设备程序设计(第二版)》 作者:Roger Riggs,Jim Van Peursem,Mark P
4.2.1 架构概述
典型的CLDC设备的大体架构如图4.1所示。CLDC实现的中心是一个Java™ Virtual Machine,此虚拟机除了本章后面讨论的特殊之处,是遵循Java™ Virtual Machine Specification和Java Language Specification的。在典型情况下,虚拟机运行于一个宿主操作系统之上,宿主操作系统为虚拟机提供管理底层硬件的必要能力。如同在第3.4.3节解释过的,CLDC Specification只对宿主操作系统的能力作最低程度的假设。
位于虚拟机上层的是Java类库。这些类库被大致分为两类:
1. 由CLDC定义的类库(CLDC Libraries);
2. 由profile(如MIDP)定义的类库和可选包。
由CLDC定义的类库在第5章讨论。由profile定义的类库不在CLDC Specification的范畴之内。MIDP支持的类库在第8到第20章讨论。
图4.1 CLDC目标设备的大体架构
4.2.2 Java应用程序的概念
CLDC并不针对任何特定设备类别。许多CLDC目标设备都拥有高级的图形用户界面,但也有一些设备只能通过字符界面操作,甚至还有一些设备根本就没有任何可视的用户界面或显示屏。为了适应这种设备间的巨大差异,CLDC Specification特意将应用程序模型定义得非常简单。
在CLDC Specification中,术语“Java应用程序”指的是一组Java类文件,其中包含一个独一无二的main方法作为应用程序的启动入口点。按照Java™ Virtual Machine Specification(JVMS)第5.2节和第2.17.1小节的定义,这个main方法必须声明为public、static和void,如下所示:
public static void main(String[] args)
遵循CLDC的虚拟机将通过调用这个main方法来启动一个Java应用程序。
MIDP等J2ME profile可以定义其他应用程序模型来扩展或取代CLDC Specification中定义的基本应用程序模型。
4.2.3 应用程序安全性
Java 2 Platform, Standard Edition中投入到安全性方面的代码量远远超过了CLDC要求的总内存容量。因此,在定义CLDC应用程序的安全模型的时候,有必要作一些简化。基本上,CLDC的安全模型可以分为3个层次:
Ÿ 底层安全性(Low-level security,也叫做虚拟机安全性)。确保在虚拟机中运行的应用程序遵循Java编程语言的语义,防止病态或敌意的类文件使设备崩溃或以任何其他方式伤害设备。
Ÿ 应用程序级的安全性(Application-level security)。指运行在设备上的Java应用程序只能访问那些设备和Java环境允许它访问的类库、系统资源和其他组件。
Ÿ 端到端的安全性(End-to-end security)。这个模型用于确保设备上发起的任何事务到为此事务提供服务的实体(如Internet上的一个服务器)的整个传输路径中来回都是安全的。可能需要用加密或其他手段来达到此目的。端到端的安全性超出了CLDC Specification的范畴。
下面我们更详细地讨论底层安全性和应用程序级的安全性。
底层安全性
底层安全性是运行在移动信息设备上的Java虚拟机的一项关键要求。虚拟机中运行的应用程序绝不能损坏设备或使设备崩溃,虚拟机正运行在这个设备上。在标准的Java虚拟机实现中,这个约束是由类文件验证器(class file verifier)保证的,类文件验证器确保类文件中存储的字节码和其他内容不会包含非法指令,不会以非法的顺序执行,并且不会包含指向无效内存或Java对象存储区域(对象堆)之外的引用。简单来说,类文件验证器的角色是确保装载进虚拟机的类文件不会以Java™ Virtual Machine Specification所不允许的任何方式执行。
CLDC Specification要求遵循CLDC标准的Java虚拟机必须能够拒绝无效的类文件,这一点后面会详细解释。这一要求由第4.2.2小节讨论的类文件验证技术来保证。
应用程序级的安全性
虽然类文件验证在保证Java平台的安全性上扮演了关键角色,但单靠类文件验证器提供的安全性是不充分的。类文件验证器只能够保证给出的程序是一个有效的Java应用程序。还有其他一些潜在的安全威胁是验证器发现不了的。比如,访问外部资源如文件系统、打印机、红外线设备、本地程序库和网络等等,都超出类文件验证器力所能及的范围。应用程序级的安全性意味着Java应用程序只能访问那些设备和Java环境允许它访问的类库、系统资源和其他组件。
在CLDC中,应用程序级的安全性通过一种被比喻成“沙箱”的封闭机制来实现。CLDC应用程序运行在一个封闭的环境中,在这个环境中,应用程序只能访问由configuration、profile、可选包定义的类库和设备支持的其他类。Java应用程序不能越出沙箱,不能访问不属于这些预定义功能的任何类库或资源。沙箱机制保证了恶意或错误的应用程序不能获得对系统资源的访问权。
说得更详细一点,CLDC沙箱模型要求:
Ÿ 类文件必须被正确验证,并保证它是有效的Java应用程序。(类文件验证将在第4.4.2小节详细讨论。)
Ÿ 在设备上下载、安装和管理Java应用程序的过程中,应用程序开发者都不能修改或跳过虚拟机标准的类装载机制。
Ÿ 应用程序开发者可以使用在CLDC、profile、可选包或厂商专用类库中定义的一组封闭的、预定义的Java API。
Ÿ 虚拟机可以访问的本地(native)函数集是封闭的,也就是说应用程序开发者新下载的任何类库中都不能包含新的本地功能,或者访问任何不能在CLDC、profile、可选包或厂商专用类库提供的Java类库中找到的本地函数。
出于安全理由,CLDC Specification还就系统类和应用程序类间的相互影响作了一些额外的要求。例如,一份CLDC实现必须确保应用程序开发者不能覆盖、修改或添加任何类到系统包如java.*、javax.microedition.*中,或profile的专用包中,也不能以任何方式修改内建的类文件查找顺序。类文件查找顺序在第4.4.3小节详细讨论。
另外,还要求CLDC应用程序只能从它自己的Java Archive(JAR)文件中装载应用程序类。这个约束保证了设备上的Java程序间不会互相干扰,也不能互相窃取数据。设备制造商和服务提供商可能会提供一些Java类作为系统程序的一部分,这个约束还保证了第三方应用程序不能访问这些类中的private和protected成分。
MIDP等J2ME profile可以在CLDC提供的安全性解决方案之上增加自己的方案。MIDP的安全性将在本书第16章和第18章讨论。
4.2.4 应用程序管理
许多小型的资源受限设备都没有文件系统或者其他任何传统机制来在设备上存储动态下载的信息。因此,不要求一份CLDC实现能够在设备上持久地存储下载自外部来源的Java应用程序。它可以仅仅装载应用程序,并在运行结束后立即丢弃这个程序。
不过,对许多潜在的CLDC设备来说,如果能重复执行同样的Java应用程序又不必一次又一次地下载它是有好处的。如果应用程序是通过无线网络下载的,这一点就显得尤为重要,因为可以免去用户昂贵的下载费用。如果一个实现了CLDC的设备能够持久地存储应用程序,我们自然会认为它也能够管理存储在设备上的应用程序。粗略来说,应用程序管理指的是这样的能力:
Ÿ 下载和安装Java应用程序。
Ÿ 查看已存储在设备上的Java应用程序。
Ÿ 选择并启动Java应用程序。
Ÿ 删除现有的Java应用程序。
CLDC系统可以允许多个Java应用程序并发执行,也可以限制系统在同一时间只允许运行一个Java应用程序,这取决于设备上的可用资源。至于是利用底层宿主操作系统的多进程能力,还是通过多个逻辑虚拟机实例来运行并发的Java应用程序,则交由各个CLDC实现去决定。
由于潜在的CLDC设备间的显著区别和功能差异,应用程序管理的细节是高度依赖于具体实现和设备特性的。应用程序管理的实质细节超出了CLDC Specification范畴。MIDP环境中的应用程序管理在第19.2节讨论。
分享到:
相关推荐
CLDC是Java ME(Micro Edition)的一部分,旨在为小型设备提供可移植性、安全性和高效运行环境。这个"CLDC-spec-1.1.1docs"压缩包包含的文档详细解释了CLDC 1.1.1版本的规范。 **CLDC 1.1.1版本关键特性** 1. **...
J2ME的核心优势在于其平台无关性,开放源码,强大的网络功能,面向对象的编程模型以及安全性。它允许开发者编写一次代码,就能在各种不同平台的手机上运行,解决了手机市场中各品牌标准不一的问题。 J2ME架构由配置...
6. **安全和权限**:了解Java ME在Symbian OS上的安全模型,以及如何处理应用程序的权限请求。 7. **应用打包和部署**:学习如何将Java ME应用打包成JAR和JAD文件,并在Symbian设备上安装和运行。 8. **调试和性能...
安全性和隐私** J2ME有安全模型来限制应用程序的权限,防止恶意软件对设备造成损害。应用程序必须经过签名验证才能访问特定的设备功能。 **学习J2ME不仅需要理解其核心概念和技术,还需要熟悉设备特性和用户需求。...
2.11和3.13部分特别强调了安全性,涵盖了证书、权限管理和代码签名,这些都是为了保护设备免受恶意软件的攻击。 ### 开发流程与工具 6.5 - 第一段:开发J2ME应用通常涉及编写源代码、编译、打包和测试。开发工具如...
- 安全性:内置安全模型确保应用程序的安全运行。 - **J2ME与J2SE之间的关系:** J2ME基于J2SE的核心功能进行了裁剪和优化,以适应资源有限的移动设备。 ##### 1.3 J2ME的体系结构 - **总体概览:** J2ME由两个...
例如,Mobile Information Device Profile (MIDP) 是CLDC上的一个标准profile,主要用于移动电话,提供用户界面、网络访问和应用程序安装等功能。 **安全机制** J2ME的安全模型是基于Java的安全模型,确保了在受限...
【J2ME程序设计_11111083】是关于Java 2 Micro Edition (J2ME) 的编程教程,它涵盖了J2ME的基础概念、开发环境、应用程序架构以及实际开发中的关键技术。J2ME是Java平台的一个版本,主要用于嵌入式设备和移动设备,...
- **2.3.2 清单文件(MANIFEST)和描述文件(JAD)**:MANIFEST文件包含了应用程序的元数据,JAD文件用于描述应用程序的信息以便下载。 - **2.3.3 应用管理软件**:用于安装、更新和卸载应用程序的工具。 - **...
J2ME提供了强大的安全模型,确保应用程序和通信的安全性。 #### 8. 供应和营销 手机游戏从开发到最终到达消费者手中的过程是非常复杂的,涉及多个组织和环节。MIDP规范中包含了关于应用程序供应的部分,描述了如何...
本教程将深入探讨J2ME的基础概念、开发环境搭建、应用程序架构以及实战应用,帮助初学者快速掌握J2ME编程。 1. J2ME概述 J2ME由Java SE(标准版)和Java EE(企业版)扩展而来,设计用于资源有限的设备。它包括一...
MIDP2.0增强了安全性,包括更严格的权限管理和加密支持。 **1.3.6 MIDP的未来方向** 随着技术的发展,MIDP也在不断演进,支持更多的多媒体功能和网络服务。 **1.4 本章小结** 本章介绍了J2ME的基本概念、体系结构...
开发J2ME应用程序通常使用集成开发环境(IDE),如Eclipse或NetBeans,它们提供了MIDP和CLDC的模拟器,便于开发者在没有物理设备的情况下进行测试。此外,还有专门的J2ME开发工具,如Sun Microsystems的Java ...
8. **模拟器与真机测试**:开发过程中,JAVA ME提供了模拟器来测试应用,但最终还需在目标设备上进行真机测试,以确保兼容性和性能。 9. **打包与部署**:开发者需要将应用打包成JAR和JAD文件,然后通过WAP服务器或...
MIDlet是J2ME中的应用程序模型,需遵循其标准。内嵌ID和License格式则是为了保证应用程序的版权和授权合法性。 #### 六、接口与安全要求 文档中详细规定了WAP网关与在线服务器之间的接口要求,以及Java无线服务...
J2ME提供了一套安全模型,限制了应用程序对设备资源的访问,防止恶意软件。例如,MIDlet Suite安全策略控制了网络连接、文件访问和设备API的使用。 总的来说,J2ME API文档是开发者进入J2ME开发世界的入门指南,它...
- **安全架构**: 提供了一个安全模型,包括权限管理、签名和安全策略,确保应用程序能够在受限的环境中安全运行。 #### Java Verified认证 - **Java Verified**: 诺基亚推出的一项认证计划,旨在确保应用程序符合...
- **CLDC安全体系结构**:CLDC通过沙箱模型保护系统资源,限制应用程序的访问权限。 #### 三、MIDP简表 - **设备需求**:定义了设备必须满足的硬件和软件最低要求。 - **MIDP的总体体系结构**:MIDP提供了一个完整...
- **安全性**:通过沙盒模型提供安全执行环境,防止恶意代码对设备造成损害。 - **可移植性**:支持多种操作系统和硬件架构,便于开发者进行多平台部署。 - **网络连接**:内置TCP/IP协议栈,支持互联网连接功能。 ...
J2ME通过类文件验证来确保代码的完整性和安全性,同时,沙箱模型限制了应用程序对系统资源的访问,从而保护了设备免受恶意软件的攻击。 ### 开发环境 为了在J2ME平台上进行开发,开发者需要建立一个完整的开发环境...