当前位置: 首页 > 图灵资讯 > 技术篇> J2ME (Java 2 Micro Edition) 简介

J2ME (Java 2 Micro Edition) 简介

来源:图灵教育
时间:2024-02-22 14:33:21

  ■前言 如果你去httpp,如果你去httpp://www.javasoft.com 在网站上查询Java 2 Micro Edition 十八九的数据会被很多技术术语搞糊涂。什么 KVM ,CLDC是什么? 、CDC 、MIDP ,Personal也出现在后面 Java 、Embedded Java和JES 等名词。虽然叫Java 小版本,但它的世界真的不小,让我们满肚子「看山不是山,看水不是水」的疑惑。的确,在我刚开始接触的时候 Java 2 Micro Edition 当我觉得这个东西越看越摸不着头绪。因此,在本章中,我放弃了技术细节,希望从一个巨大的角度带你去看 Java 2 Micro Edition 的世界。希望看完这一章,能让大家体验一下「山是山,水是水」,一切突然开朗的感觉。

  首先,我们必须首先对Java 2 Micro Edition 整个Java 了解技术中的定位。 ■Java不同版本的各种版本 程序的开发 正如前面提到的,各种不同的Java 版本,其支持的核心类别函式库的完整性和支持 Java 这两件事的基本类型是不同的,也就是说,无论你开发的是企业使用的Java Java执行在嵌入式装置上的程序和Java Applet执行在浏览器上 ,或是在PC 上面执行的应用程序。你必须先在电脑上安装它 J2SE ,然后安装各种版本的核心类别函数库和额外的扩展类别函数库,以成功地开发各种不同目的的Java 程序。J2SE Java提供 编译器(javac.exe)它可以帮助我们在不同的平台上编译Java 而J2SE是程序 Java提供 虚拟机器(java.exe)它可以帮助我们在PC 先测试这些程序执行结果是否正确。另外,Java 编译器不会帮助您检查您的程序是否符合各种平台支持的核心类别函数库 Java 基本型别。例如,虽然我们之前说过,Smart Card 版本不支持boolean 、byte Java以外 基本类型,平台只支持java.lang.*但是当我们写核心类别的时候, Smart Card 即使在程序码中使用boolean,平台上的程序也会被使用 或byte Java以外 基本型别,或者使用java.lang.*编译器仍然可以像往常一样帮助您编译其他核心类别的类别。这个时候,大家一定开始有疑惑。 --如果将这些程序放在Smarttt中,如果将这些程序放在Smarttt中 Card 上面执行的时候,出了问题怎么办? ?这个时候,大家一定开始有疑惑。

  --如果将这些程序放在Smarttt中,如果将这些程序放在Smarttt中 Card 上面执行的时候,出了问题怎么办? ? Smarttt不会造成Smart吗? Card 执行上述虚拟机器时是否有错误? ? 针对可能出现的潜在问题,Sun Microsystems 在不同版本的开发套件中,有些会附着在检查器上 (checker)或者提前审核器 (preverifier),在将程序放入目标平台之前,这两个工具可以帮助您做好检查和预审。检查员将帮助您找出类别文件中不符合目标平台规格的部分,并提醒您,这些地方可能无法在目标平台上执行。因此,在检查员的帮助下,您大致可以确定您的程序能够满足目标平台的要求并顺利执行。 Java Card 检查器附在开发套件中。 一些平台的开发套件配备了预审核器。除了检查器,预审核器还有一项额外的工作,即减轻目标平台上虚拟机器的负担。在传统中,解释预审核器的额外工作 Java 在程序中,任何进入执行环境的类别档案都是为了安全考虑 (无论是来自本机还是远端机器,这类文件都是来自本机 ),必须先通过Byteee Code 审核器(Byte code verifier)验证防止程序在传输过程中恶意修改 Java 程序在执行过程中对系统有不良影响。经过审核,这类文件可以开始被J 实施虚拟机器。经过审核,这类文件可以开始J 虚拟机器执行。如果这个审计动作是一般的 PC 上执行,速度还是可以接受的,但是一旦放进去,比如 Palm 或者像手机这样的CPU 机器上比较慢,记忆体也比较少,显得很吃力。为了节省宝贵 CPU 操作时间(既能省电又能加速程序执行 ),因此,在程序设计师生成可以在特定平台上执行的类别文件之前,程序设计师必须首先 PC 使用预审核器进行一些预审核工作,预审核器将在类别文件中添加一些特殊的标记或符号。这样,当这些程序在目标平台上执行时,在目标平台上进行审核的时间可以大大降低,从而加快程序的启动和执行速度。所以在J2ME 之下的程序(Spotlet 、MIDlet),由于提前审核,Bytete的执行步骤变成了Byte Code 因此,从程序载入到执行之间的时间缩短了审核器的工作。 CLDC标准实施和MIDP 提前审核器附在参考实作中。 ■Java 版本的演进 相信熟悉Java 进化历史的人或多或少都听说过,Java 技术一开始并不叫 Java ,但叫OAK ,而且最早是为嵌入式系统设计的产品。

  后来由于网络网络的发展,OAK 由于商标已注册,许多特性适合在网络上使用(如可移植性、编译程序代码非常小),因此 OAK 改名为Java ,从那时起,因缘会地成为网络上闪亮的超级巨星,并且随着时间的推移越来越成熟,也慢慢产生了许多非原始预期的相关应用。虽然 Java 很多企业级软件已经用过了,但其实骨子里还是很适合嵌入式系统的。 尽管从Java 1.0 发表之後,Java 广泛应用于桌面应用程序和Applet 但是,从Java开发, 1.1 一开始,Java又回到了它的老路——也就是嵌入式系统的应用,当时Sun Microsystems Embededededed发表 Java 与Personal Java(也有人简称PJava)这两个规格。其中Embededededededed Java 设计是为了资源有限,没有显示设备的嵌入式装置; Personal Java 它是为消费电子设备设计的,可以与网络网络连接,并且有显示系统(如彩色LCD)。然后Java 版本演变为Java2 ,此时,为了明显区分各种Java 因此,J2EEEE的应用被划分 、J2SE 、以及 J2ME 三种版本。然后Java 版本演变为Java2 ,此时,为了明显区分各种Java 因此,J2EEEE的应用被划分 、J2SE 、以及 J2ME 三个版本。我们之前已经详细描述了这三个版本的各种特征,这里就不赘述了。但请记住,因为 Java 2将Java 应用程序分为三个部分,使其分为三个部分 Java 不再像Java那样发展编程语言 1.1像树枝一样扩散,对大家都有帮助。

  Java 各种应用??清晰,不会造成未来发展越来越失控的混乱局面。额外提到的是,后来Personal Java 发展到1.2 在版本中,也使用了一些Java 2 与安全相关的平台设计。 ■Java 2 Micro Edition 概观 J2ME 在设计其规格时,遵循规格「为不同的设备创建一个单一的开发系统是没有意义的」这一基本原则。於是 J2ME 所有嵌入式装置一般分为两种类型 :一种是嵌入式装置,具有有有限的计算功能和有限的电源(例如,PDA 、手机);另一种是嵌入式装置,操作能力相对较好,电源相对充足 (比如空调冷却器、冰箱、电视机上盒 (set-top box))。Java是因为这两种类型的嵌入式装置 引入一个名为Configuration 的概念,然后在Connecteded中定义上述计算功能有限、功率有限的嵌入式装置 Limited Device Configuration(CLDC)规范;另一种装置规范为 Connected Device Configuration(CDC)规格。也就是说, J2ME Configuration首先使用所有嵌入式装置 概念分为两种抽象类型。 事实上,你可以在这里使用Configuration 作为J2ME 对于两种嵌入式装置的规格,这些规格定义了这些装置至少应符合计算能力、供电能力、记忆体大小等规格,同时,还设置了一组在这些设备上执行的设备 Java 这些规范中定义的类别函数库是程序可以使用的类别函数库 Java 标准核心类函式库的子集合和扩展类函式库与该类型装置的特性一致。例如CLDC 就规范而言,可支持的核心类别函式库是java.lang.*、java.io.*、java.util.*,支持的扩展类别函式库是java.microedition.io.*。例如CLDC 就规范而言,可支持的核心类别函式库是java.lang.*、java.io.*、java.util.*,支持的扩展类别函式库是java.microedition.io.*。区分两个主要的Configuration 之後,J2ME 然后定义Profile的概念。Profile Configuration中的架构 上述规格。Profile的概念是为了更清楚地区分Java 如何开发程序以及它们应该具备什么功能。所以Profile 与特定嵌入式装置非常相关的扩展类别函式库被定义为 Java 如何在各种嵌入式设备上呈现程序的用户介面,定义为Profile 里头。Profile 扩展类别函式库的定义是基于底层Configuration 建立内部定义的核心类别函式库。

  ■Java 应用于嵌入式系统 因为Java 最初的设计理念是针对嵌入式系统,所以在嵌入式系统中使用它真的是鱼得水。在这个Linux 时空交汇点开始兴起,网上出现了一篇关于嵌入式的文章 Linux 与Java 通过相互合作创造双赢局面的相关报道,这是由 LinuxDevices.com 的专栏作家 Randy Rorden 出版的白皮书,名为「 Java 与嵌入式 Linux 合作」。 在本文中,作者对嵌入式Linux和Java进行了评论 个别优势提出了他的看法和Java-Linux 平台构思。有兴趣的读者可以到以下网站参考相关新闻和资料。 1. Java 与嵌入式 Linux 合作白皮书 http://www.ctech.com.tw/d-news/news/linux/89090208.asp 2. Java 嵌入式Linux 合作 https://www.tulingxueyuan.cn/d/file/p/20240222/h5mmnbp1qpw 3. 即将到来的Java-Linux 结合 https://www.tulingxueyuan.cn/d/file/p/20240222/hkogdheufbc ■为何使用Java? 撰写PDA 上面的应用程序 由于预计未来行动通信时代的到来,除了实现行动通信的主要工具外,通信相关行业的前景是可以预期的 -- 除了越来越精致的手机,越来越多的制造商投资PDA 生产与开发。本来PDA PalmOS是PalmOS的主要平台 、WindowsCE 以及EPOC ,我不知道从前什么时候,很多公司开始投资embedededededed linux 研发包括国内资策会自行开发的研发 @ViS 操作系统,互惠科技也有自己的嵌入式操作系统,更不用说大陆制造商和韩国制造商了。本来PDA PalmOS是PalmOS的主要平台 、WindowsCE 以及EPOC ,我不知道从前什么时候,很多公司开始投资embedededededed linux 研发包括国内资策会自行开发的研发 @ViS 操作系统,互惠科技也有自己的嵌入式操作系统,更不用说大陆制造商和韩国制造商了。 喔喔!与这些操作平台的数量相比,这些操作平台的数量 PC 我真的不知道有多复杂。当然,对普通用户的影响相对较小,但对于程序开发人员来说,看到这么多不同的程序开发平台真的令人望而却步。假如每个平台都有自己的程序写法和函式库,那么光看上面的平台就要学习至少五种程序写法。当然,专注于一个平台是件好事。但是程序设计师不禁要说 :“如果我们写的软件可以在这些平台上执行,而不需要修改原始代码,那不是更完美吗?” 当然,对于程序开发者来说,这样的投资回报率是最大的。 对于程序设计师来说,在这么多平台上开发程序确实是一个巨大的挑战。如果我们想把所有的时间和精力都花在软件的可用性上,我们就没有太多的时间写各种平台的程序。为了解决这个问题,一般来说,程序设计师会选择一个可以跨平台的Framework 至少达到source code level 跨平台(例入QT 能做到)。然而,在本文中,我们想介绍的是更终极的解决方案 –Java ,使用Java 的”write once, run anywhere“我们可以真正实现程序,只要我们写一次,我们就可以在任何平台上执行它(当然,前提是我们必须有PDA) 制造商也应该实际制造这个平台的Java Virtual Machine 才行)。使用Java 来做PDA 当然,上述程序也有其缺点,最广为人知的可能是执行效率问题, Java 在执行速度问题上一直受到批评。

  然而,作者认为,随着技术的发展,PDA将会更快、更省电 专用CPU 因此,效率问题实际上是可以忽略的。更何况,当 Sun J2ME的设计 试图加速Java的时候,也用了很多方法 在PDA 上述执行速度(如预审)。 ■总结 看完这一章,你对整个Java进行了评论 2 Micro Edition 有一个大致的了解吗? 在进入下一章之前,请务必找出本章中提到的专有名词。如果您想对各种技术规格有更详细的了解,请参考下表中列出的网页。 Consumer & Embedded Technologies http://java.sun.com/products/consumer-embedded/ Consumer & Embedded Technology Center http://developer.java.sun.com/developer/products/j2me/ Java 2 Micro Edition http://www.javasoft.com/j2me/ JDC J2ME Tech Tips http://developer.java.sun.com/developer/J2METechTips/ CLDC & KVM http://www.javasoft.com/products/cldc/ C & E Center Wireless Technologies http://developer.java.sun.com/developer/products/j2me/wireless.html MIDP http://www.javasoft.com/products/midp/ Embedded Java http://www.javasoft.com/products/embeddedjava/ Personal Java http://java.sun.com/products/personaljava/ JavaPhone http://java.sun.com/products/javaphone/ Java Embedded Server https://www.tulingxueyuan.cn/d/file/p/20240222/vqm4dfuymll C & E Center Java Embedded ServerTechnology http://developer.java.sun.com/developer/products/j2me/embedserv.html JavaTV http://www.javasoft.com/products/javatv/ C & E Center Digital Interactive Television http://developer.java.sun.com/developer/products/j2me/tv.html Java Card http://java.sun.com/products/javacard/ C & E Center JavaCardTechnology http://developer.java.sun.com/developer/products/j2me/smartcard.html Motorola 官方Java 网站 https://www.tulingxueyuan.cn/d/file/p/20240222/toyap0p5tar JINI http://www.sun.com/jini/ C & E Center Downloads & Specifications http://developer.java.sun.com/developer/products/j2me/downloads.html Spotless System Page http://www.sun.com/research/spotless/