×
Namespaces

Variants
Actions

诺基亚移动Java开发介绍

From Nokia Developer Wiki
Jump to: navigation, search
WP Metro Icon Chinese.png
Article Metadata

文章
green_lu 在 05 Sep 2008 创建
最后由 hamishwillee 在 31 Jul 2013 编辑


诺基亚移动Java开发介绍

作者:路戈宁

Contents

Java ME背景介绍

目前整个Java平台针对不同的设备能力,设计提供了三个版本,图1为Java平台的示意图:

  • Standard Edition (Java SE)
  • Enterprise Edition (Java EE)
  • Micro Edition (Java ME)

这三个版本的基本技术支撑是相似的,遵循一般的Java特性,诸如内存的自动垃圾回收(Automatic Garbage Collection)和跨平台的虚拟机实现等。Java Micro Edition为移动设备之类的嵌入式设备的Java开发提供了一个标准框架,此框架充分适配了嵌入式设备的内存和设备资源的限制环境。 但Java ME也和Java SE,Java EE共用一些Java类,这意味着桌面和企业环境下的Java开发技巧同样适用于移动环境下的Java开发。 Java ME平台定义了两套配置(Configuration)类库集:能力更强的CDC (Connected Device Configuration ) 和能力稍弱的CLDC(Connected Limited Device Configuration)。CLDC适配了那些较小内存和较弱虚拟机能力的移动设备。在配置之上是更有设备针对性的描述(Profile)类库集。MIDP(Mobile Information Device Profile)就是在CLDC之上增加了一些对移动设备的类库补充。

Java Platforms.PNG

图1: Java平台示意图

有关Java ME的详细介绍,可以访问Sun网站Java ME技术专区诺基亚论坛网站Java技术专区

相关技术参考文档和资料:

Java MEJava SE的一个子集,同时补充了一些与手机相关的API。充分了解Java ME和 Java SE,Java EE 的平台差异是非常重要的:

  • 出于安全考虑,Java ME应用(MIDlet)运行于沙箱(Sandbox)中,这意味着Java应用对系统资源的访问是受限制的。Java ME应用对手机本地文件,本地数据的访问会受到限制;使用某些功能特性也需要获得确认,如网络特性和发送短消息等。
  • CLDC不支持应用自定义的Java类动态载入(User-defined Class Loader)。Java ME也不提供Java类的动态卸载能力,这意味着MIDlet运行中所载入的Java类将保留于堆内存中,直至MIDlet生命周期的结束。
  • Java ME不支持Java反射(Reflection),即不支持Java应用运行时的"自审",如获取类成员,方法的信息等。此外, Java ME 也不支持对象的序列化(Serialization)操作,不支持用RMI(Remote Method Invocation)编写分布式对象。
  • Java ME 不支持 JNI (Java Native Interface) 使得Java ME应用无法调用手机的本地应用。
  • MIDlet使用自己较为简单的UI类,而不使用Java标准的Swings或AWT类。
  • Java ME的支撑环境和支撑能力差异很大,使得Java ME包含大量可选择(Optional)实现的API,这也影响了Java ME应用的兼容性。

MIDP应用介绍

我们把运行于MIDP设备上Java应用叫做MIDlet(类似Applet,Servlet)。MIDlet在MIDP移动设备上的兼容性受限于设备是否支持MIDlet所使用的可选API 。

一个标准MIDlet涉及:

  • 继承自MIDP定义的抽象基类 javax.microedition.midlet.MIDlet,此基类定义了MIDlet的整个生命周期。
  • 被打包成JAR(Java Archive)文件进行派发。
  • JAR文件中包含一个清单文件 MANIFEST.MF-
  • 包含一个应用描述文件JAD(Java Application Descriptor)。
  • 所有的类文件需要进行预校验( Preverification),这一工作在编译过程中自动实现。

管理MIDlet安装,卸载和运行的Java运行环境叫AMS(Application Management Software)。 一个MIDlet套件(MIDlet Suite)是保存在一个JAR文件中一个或多个MIDlet的集合称呼,套件机制使得套件内的MIDlet可以共享外部资源。安装到手机上的MIDlet套件被作为一个整体看待。MIDlet套件运行时,如果手机支持同时运行多个MIDlet,那么套件中所有运行的MIDlet将会共存于一个Java虚拟机中,因此多个MIDlet就可以共享虚拟机中所载入的Java类实例和资源。如此,不同MIDlet的数据共享得以实现,注意使用Java的同步(Synchronization)操作进行相关的数据保护。 一个MIDlet不能启动另外一个MIDlet,一个MIDlet套件也不能启动另外一个MIDlet套件。不同MIDlet套件中的MIDlet不能共享资源。MIDlet可以通过RMS(Record Management System)实现数据的永久存储,永久数据可以被所有的MIDlet所访问。

MIDP应用的安全机制主要包括:

  • Java应用安全性分类:MIDlet从安全角度被分为两类,信任的和未获信任的。经过签名获信任的MIDlet可以被安装到手机中信任的安全域下,并允许应用不经用户确认而调用敏感API。
  • 安全域(Domain):相关的四个安全域包括:未获信任(Untrusted)域,信任的第三方开发者(Trusted 3rd Party)域, 运营商(Operator)域和设备制造商(Manufacturer)域。
  • 许可(Permission):通过许可分类可以控制应用对敏感API的调用。许可被分为四类:Denied (不允许),One-shot (每次询问),Session (第一次询问)和 Blanket (总是允许)。每个安全域都对相关许可进行了定义。MIDlet在JAD文件中声明应用需要的许可。
  • 签名(Signing):MIDlet的签名基于PKI(X.509 Public-Key Infrastructure)机制。诺基亚推荐通过Java Verified测试认证计划进行MIDlet签名。更多信息请访问http://www.developer.nokia.com/Distribute/Packaging_and_signing.xhtml 诺基亚论坛应用测试专区] 。

MIDP应用的一般开发流程

  • 项目分析和设计
包括应用的需求分析,功能设计,以及开发环境的选择。
  • 搭建项目开发环境
基于IDE搭建项目的开发环境。
  • 编写源文件
按照项目流程编写或导入Java源代码。
  • 编译和预校验源文件
编译源文件生成类文件,在Java ME工具中,类的预校验过程在编译过程中得以完成。
  • 创建JAR和JAD文件
创建应用的JAR和JAD文件。
  • 应用测试
在模拟器上运行调试应用。
  • 应用签名(可选)
根据需求对应用进行签名。
  • 应用派发
可以通过USB,蓝牙,红外等方式将应用安装到手机上,对于诺基亚手机,需要安装名为"诺基亚PC套件"的PC软件。另外也可以利用OTA(Over the Air)技术无线空下载应用到手机上。

诺基亚移动Java开发环境

诺基亚推荐使用以下软件构建Java应用开发环境:

注意事项:

  • 诺基亚Series 40平台面向市场规模庞大的Java™移动终端,而S60平台则主要面向基于Symbian OS的智能手机。了解诺基亚开发者平台的详细信息,请访问诺基亚论坛网站平台专区
    • 参考技术文档:
  • 诺基亚的Java平台SDK(Platform SDK)包括不同的版本(Editions)和特征包(Feature Packs),支持基于平台的Java应用开发;而诺基亚Java设备SDK(Device SDK)则支持特定诺基亚手机的Java开发,SDK包含一些附加的体现手机特性的Java API。
  • 对于Eclipse,安装Series 40 SDK和 S60 SDK的路径要和Eclipse的安装路径相同。
  • 诺基亚将不再继续支持先前的诺基亚Java IDE工具-Carbide.j,转而全面支持Eclipse和 NetBeans IDE。
  • 可以访问诺基亚论坛网站的设备规范专区具体了解诺基亚手机的Java特性。

相关的诺基亚Java开发资源

了解更多诺基亚移动开发技术请访问

This page was last modified on 31 July 2013, at 10:50.
430 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×