360 likes | 537 Views
第一章 J2ME 概论. 2008-03. 本章提纲. 本章主要内容: Java 平台的划分 J2ME 概论 J2ME 集成开发环境. Java 平台的划分. Java 标准函数库 核心库( java.* ) 扩展库( javax.* ) Java 基本类型 char, boolean byte, short, int long, float, double. Java 平台的划分. 划分依据 对标准库及基本类型的支持程度 划分图. 各种 Java 平台的不同之处. J2SE 实现了所有 Java 标准规范定义的核心类库
E N D
第一章 J2ME概论 2008-03
本章提纲 • 本章主要内容: • Java平台的划分 • J2ME概论 • J2ME集成开发环境
Java平台的划分 • Java标准函数库 • 核心库(java.*) • 扩展库(javax.*) • Java基本类型 • char, boolean • byte, short, int • long, float, double
Java平台的划分 • 划分依据 • 对标准库及基本类型的支持程度 • 划分图
各种Java平台的不同之处 • J2SE • 实现了所有Java标准规范定义的核心类库 • 支持所有Java基本类型 • 定位在客户端(client-side)程序的应用上
J2EE • J2EE • 实现了所有Java标准规范定义的核心类库 • 支持所有Java基本类型 • 增加了许多支持企业内部使用的核心类库(javax.servlet.*类库,javax.ejb.*) • 定位在服务端(server-side)程序的应用上
J2ME • J2ME • 实现了部分Java标准规范定义的核心类库 • CLDC只支持java.lang.*、java.util.*、java.io.*等类库 • 支持部分Java基本类型 • CLDC1.0不支持float、double浮点数类型 • CLDC1.1支持float、double浮点数类型 • 增加了一些支持嵌入式系统的扩充类库 • javax.microedition.io.*类库 • 定位在嵌入式系统的应用上
J2ME概论 J2ME的起源和发展历程 Java编程语言最初是为消费电子设备编程设计的嵌入式语言,但其发展却偏离了初衷,成为一种开发基于服务器应用的平台技术。它也是基于JDK 1.1,其运行环境与Personal Java应用环境很相似,但它不像Personal Java是为特定设备定义的特定Java子集,而是允许用户针对特定的设备使用所需要的Java技术,你不需要在你的设备中嵌入任何用不到的东西。
J2ME概论 J2ME的起源和发展历程 Java 2平台微型版(J2ME) 它定义了一组针对嵌入式设备和消费电子设备的API和运行环境,这些设备包括无线手持设备、PDA、电视机顶盒以及其他缺乏足够的资源去支持J2SE的设备。
J2ME Platform Optional packages 厂商选择性实现 Profile 针对特殊硬件制定的高级API Configuration 定义硬件功能与低级API
Configuration • 嵌入式设备分类 • 资源相对无限的设备 • 资源、运算功能、电力、联机速度、屏幕等资源有限的设备 • Configuration是一套规范,它为具有类似属性的某一类设备定义了J2ME平台应该具有的基本功能: • 硬件所必须具备的能力 • Java核心库具有的功能
Configuration • J2ME相应规范(Configuration) • CLDC:Connected Limited Device Configuration • CDC: Connected Device Configuration • CDC与CLDC范围
J2ME虚拟机 KVM是“Kilo Virtual Machine”的缩写。它是符合Java虚拟机规范的真正虚拟机,KVM专门为资源受到限制的小型设备设计,它们的内存只有几百千字节。 最初CVM是“Compact Virtual Machine”的缩写,然而Sun公司的工程师意识到商家可能混淆“Compact”的发音和KVM中的“K”,因此现在C不代表任何意思。该虚拟机用于较多的消费者和嵌入式设备,例如CDC设备。在安全性、弱引用、JNI(Java本地接口)和RMI(远程方法调用)方面,CVM支持J2SE的几乎全部功能
Profile • Profile目标 • 更加明确地区分各种嵌入式设备之上的Java程序该如何开发,以及它们应具有哪些功能 • Profile定义了: • 各种嵌入式设备上的用户界面该如何呈现 • 程序该如何和用户或设备产生互动 • 为Configuration之中的类增加新的方法,或是让方法抛出新的异常 • 定义了特定种类嵌入式设备的最小配备需求
Profile • Profile皆构架在特定Configuration之上: Optional Packages For CDC & CLDC Optional Packages For CLDC Profiles for CDC Profiles for CLDC CDC CLDC
Profile • 构架在CDC之上的Profile: • Foundation Profile • Personal Basis Profile • Personal Profile Specification • Foundation Profile 1.1 • Personal Basis Profile 1.1 • Personal Profile Specification 1.1
Profile • 构架在CLDC之上的Profile: • Mobile Information Device Profile 1.0(MIDP 1.0) • Mobile Information Device Profile 2.0(MIDP 2.0) • Information Module Profile • Information Module Profile 2.0
Optional Packages • 厂商选择性实现 • 通常是一些本身具有独立价值的API,厂商可以依据自己的要求,选择性地实现其中某些Opitonal Packages规范 • Optional Packages举例 • Java API for Bluetooth • Wireless Messaging API • Mobile Media API • 可选包也是构架在特定Configuration之上的
各种平台Java程序开发 • 无论开发的是企业所使用的Java程序,嵌入式设备上执行的Java程序,浏览器上执行的Applet,或者是在PC上执行的程序,都必须安装J2SE,软后再安装各种版本的核心类库以及额外的扩充类库.对于程序员而言,这些版本的关系如图所示:
J2SE平台作用 • J2SE平台作用 • J2SE提供的编译器:编译不同平台的JAVA程序 • J2SE提供的虚拟机:在PC上先行仿真这些程序的执行 • 平台差异导致的问题 • Java编译器不会检查程序是否符合各种平台上所支持的核心类库与Java基本类型,Java编译器只管程序代码是否符合Java程序语言的语法 • 例如:在Smart Cart平台上的程序里用了boolean或byte以外的Java基本类型,编译器仍然可以编译出Class文件
Sun Microsystems的解决方法 • 在各种不同的开发包中有些会附有检查器(checker)或者审核器(preverifier),这两个工具可以帮助程序员在将程序放到目标平台之前先做好检查和预审核的工作
预先审核器 • 预先审核器的目的 • 找出class文件之中不合目标平台的部分,并提醒开发者这些地方可能无法在目标平台上执行 • 减轻目标平台上虚拟机器的负担
问题 • 沿用传统的问题 • 审核动作放在PC上执行,速度可以忍受,可是一旦放到Palm或手机这些CPU较慢,内存也比较少的机器上面就显得十分吃力了 • 利用预先审核器的解决方案 • 在程序员产生能够让某些特定平台上执行的Class文件之前,程序员必须先在PC上使用预先审核器做一些前置的审核工作,预先审核器会在Class文件之中加入一些特殊标记或符号,从而大幅减少在目标平台上做审核的时间。
利用预先审核器 • 利用了预先审核器后的执行步骤: 执行Byte Code审核器的工作变少了。程序加载到开始执行时间减少
MIDP应用程序的部署 • 何谓MIDP应用程序? • 指的是遵循Mobile Information Device Profile规范所开发的应用程序 • MIDP应用程序构成 • 应用程序主体(JAR文件) • 应用程序描述文件(JAD文件) • 何谓MIDP应用程序部署? • 完成MIDP应用程序后,让程序能够在用户设备上执行的行为
MIDP应用程序部署方式 • OTA(Over The Air)经由无线通信网络将MIDP应用程序下载到设备上 • 非OTA。例如数据线,红外线,蓝牙等等
OTA部署步骤 • OTA部署步骤 • 手机连上网络 • 下载描述文档 • 针对描述档中所记录的MIDlet suite资料作确认工作(如版本确认) • 使用者选择要下载的程序下载并安装 • 手机执行下载的程序
非OTA部署步骤 • 非OTA部署(数据线)步骤
J2ME应用程序执行环境 • 什么是执行环境? • J2ME应用程序在执行时期所能获得的资源,如API • J2ME应用程序分类 • 分类标准:J2ME应用程序所调用的API • 标准应用程序(只调用标准API的应用程序) • 不易移植的应用程序(加入厂商专属API的应用程序)
J2ME集成开发环境(IDE) J2ME开发工具 Eclipse Eclipse是一个开发源代码的、基于java的可扩展开发平台。 JBuilder Eclipse是一个开发源代码的、基于java的可扩展开发平台。Eclipse本身只是一个框架和一组响应的服务,并不能够开发什么程序。 NetBeans NetBeans是一套完全以Java撰写而成、并且开放原始码的开发工具。
J2ME集成开发环境(IDE) Eclipse开发环境的搭建 使用Eclipse开发J2ME程序,目前只能使用EclipseME插件。如果读者有足够强的功力,可以自行开发插件进行J2ME程序的开发。使用EclipseME作为Eclipsej插件,可以极大地帮助开发者开发J2ME程序。但是EclipseME不提供模拟器,读者需要自己将模拟器集成到Eclipse中,本书将主要使用WTK作为集成的模拟器。
J2ME集成开发环境(IDE) JBuilder开发环境的搭建 JBuilder是非常理想的J2ME开发环境,提供了强大的功能,并且自带了WTK。安装完成JBuilder后,就可以直接进行J2ME的开发。本书使用的JBuilder为2005版,称之为JBuilder2005,自带的WTK为2.1版,而目前最新的WTK为2.2版,2.2版和2.1版的主要区别就是2.2版增加了支持JSR-184规范的API(3D Graphics API),以及提供了新的模拟器。