1.1 J2ME基本概述
1.1.1 Java概述
Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的统称。经过多年的发展,Java已经成为一个全面成熟的面向对象应用程序开发平台,使用广泛。
Java分为3个体系:J2SE、J2EE和J2ME。
J2SE,即Java2 Platform Standard Edition,Java平台标准版。它是允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。J2SE 包含了支持Java Web服务开发的类,并为J2EE提供基础,主要用于传统且成熟的桌面系统。
J2EE,即Java2 Platform Enterprise Edition,Java平台企业版。企业版本的Java平台帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java2应用程序。J2EE是在J2SE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(Service-Oriented Architecture,SOA)和Web 2.0应用程序。
J2ME,即Java2 Platform Micro Edition,Java平台微型版。J2ME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。J2ME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议,以及对可以动态下载的联网和离线应用程序的丰富支持。基于J2ME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
Java的版本结构如图1-1所示。
图1-1 Java的版本结构
1.1.2 J2ME的体系结构
J2ME根据其技术架构分为简表层(Profiles)、配置层(Configurations)和Java虚拟机(Java Virtual Machines,JVM)3层,然后在每一层中再细分。J2ME体系的一般结构是由Configurations定义的Java虚拟机运行于设备的宿主操作系统(Host Operating System)之上,构成整个平台的基础。Configurations提供了基本的语言特性,Profiles提供针对设备的特殊功能API和扩展类库。应用程序的运行环境需要一个Configuration和至少一个Profile,多个Profile可以共存,也可以叠加。J2ME的分层结构如图1-2所示。
图1-2 J2ME 的分层结构
Java虚拟机层针对设备操作系统定制的Java虚拟机的实现,支持特定的J2ME配置,是J2ME运行的核心。
Configurations层的分类是根据计算能力的不同来划分的,同类设备的计算能力相近。Configurations是一个规范,定义了这类设备的共同Java平台,定义与设备无关的Java虚拟机和核心库,是平台相容性的基础。Configurations定义了一个基本的J2ME运行环境,满足该设备的Java虚拟机功能的最小子集和针对该族设备的Java类库的最小集合,主要针对的是系统级的特性。
Profiles层的分类是根据设备功能划分的,同类功能的设备的其他各种硬件条件和需求也相近。Profiles是一组API,在某一个Configuration的基础上扩展了针对设备特定功能的API,使得标准能够完全适应特殊的设备,彻底发挥设备的功能。简表Profiles是构建在配置层Configurations之上的一层类库,提供Configurations层中所缺失的功能以支持特定的设备,主要提供了应用程序级的接口
注意:一个设备可以支持多个Profile。
1.1.3 J2ME规范
在国际上,有一个由Sun主导的标准化组织JCP(Java Community Process),该组织根据领域的不同,分为3个大的工作方向,即J2EE、J2SE和J2ME。而J2ME领域的标准的制定者,包括业界知名的运营商,如Vodafone、Orange、中国移动等;终端制造商,如Nokia、Motorola、Sumsung等;提供Java虚拟机的厂商,如IBM、Aplix、Esmertec等;以及一些感兴趣的公司团体。
JCP中的每个规范被称为JSR(Java Specification Request)。各个JSR分别从不同的角度对Java虚拟机的能力进行了规范,并对应一个数字编号,如JSR75规定了Java应用如何通过虚拟机提供的接口来访问终端操作系统的PIM数据和文件系统。此外,还包括针对蓝牙、多媒体、短信、彩信等的规范。而这些规范的发布、更新和维护由JCP来统一管理,确保了让业界不同角色的厂商能够共同参与定义J2ME平台的能力,共同推进Java技术向前发展。
JTWI(Java Technology for the Wireless Industry,JSR185)正是为了完成“建立一个标准来保证J2ME应用程序的跨平台性”这个目的而出现的。
JTWI对如下的一些方面进行了规范,实现JTWI的设备必须遵守这些规范。
(1)规定了标准应用程序的大小,设备必须支持64KB大小的应用程序和5KB大小的JAD文件。持久性存储的大小为30KB,heap空间从MIDP 2.0中的128KB提高到256KB。
(2)记事功能,可以使用PushRegistry的registerAlarm()方法来实现。
(3)JSR185对设备的屏幕尺寸建议为125×125/12bit。设备必须支持JPEG格式的图片。HTTP1.1必须被支持。
(4)JSR185是基于WMA的,因此设备必须具备发送和接受短消息的能力,JSR185还规定,应用程序在准备发送短消息的时候,当提供了TextField和TextBox组件时,应该可以给用户弹出本机的电话本以供选择。
(5)对移动多媒体进行支持,必须实现对MIDI和单音的支持。
表1-1中列举了一些在J2ME发展史上比较重要的JSR及其功能描述。
表1-1 J2ME规范及其功能描述
1.1.4 手机平台开发
随着手机的迅速普及和不断更新,人们对于手机的要求已不单单是通信,还有很多增值服务及娱乐功能,所以手机平台上的软件开发已经成为IT产业中增长最快的部分之一。
手机已经与现代生活方式紧紧地结合在一起。它们是人们最普遍携带的个人用品中仅次于钥匙和钱包的东西。你可以随时看到一个人在任何地点低头摆弄自己的手机,巨大的使用量使得手机平台上的软件开发成为一个非常具有潜力的行业,尤其是手机游戏的开发。那么由于手机平台具有自己独特的性质,它也为手机游戏开发提出了独特的要求。
1.手机游戏的优势
(1)规模小、周期短:由于手机平台硬件设备上的限制,所以手机游戏通常不需要大量的人力、物力,三五个人的团队即可,而且开发周期很多,如果有较好的构思和创意,可能一周甚至几天就可以完成一个手机游戏的开发。
(2)网络支持:随着手机的不断发展,手机对于网络的支持已经比较成熟,因此对于一些联网游戏的开发也提供了很大的空间。
(3)庞大的用户群:以目前的手机市场规模来看,已经是人手一机,而且因为手机随身携带方便,已经逐渐取代MP3、MP4、电子书及游戏机。
2.手机游戏的限制
(1)内存空间有限:尽管手机在不断地发展,无论是硬件平台还是各种各样的智能系统都不能改变手机在内存及硬件空间上无法与普通计算机比拟的现状,所以在进行手机游戏开发时要注意应用程序的大小。
(2)屏幕大小:现在的手机已经在尽可能地节省空间,扩大屏幕,例如全触屏的实现,但是为了保持它随身携带的方便,屏幕没有办法无限大,这样在进行游戏开发时画面大小与美工排版都是开发者需要考虑的问题。
(3)耗电:手机功能的不断完善是对手机电池的一种考验,在进行游戏开发时除了考虑到手机性能之外,还要考虑耗电的问题,这个问题可能更多的时候要从美工的角度来考虑。
3.成功的手机游戏应具有的特征
(1)可中断性:当用户在玩游戏时,突然有电话进来,这时正在进行的游戏就会中止,这就要求游戏程序必须能够自动暂停游戏的执行,而且保存玩家的进度。
(2)短时间的游戏:因为手机游戏往往是在一些短的时间间隙来进行的,例如候车、等人,所以设计的游戏要在一个相对较短的时间内给玩家一个过关的游戏体验。
(3)小型化:手机游戏一定要小型化,适合在手机平台上玩,避免游戏加载时间过长,避免元素过多,避免界面混乱。
(4)易于学习:既然手机游戏面向的是普通消费者而不是计算机高手,那么他们不可能深入地学习游戏技巧,更不可能像网络游戏一样会有一本专门的游戏攻略,所以游戏必须是一下载就可以玩的。