快捷搜索:

攥在手掌里的Java

我是从读王森老师的书正式开始Java的手机游戏开拓。《Java手机法度榜样入门及利用》一书让我初窥门庭,而《Java深度历险》则给我留下了深刻的印象。以是说,对付王森老师的文章,我是不陌生的。

作为一个J2ME手机开拓的铁杆宣传手,我不停都在竭尽全力的向周围有志于移动利用领域开拓的同伙们鼓吹MIDP并且保举王老师的著作。J可想而知,当我拿到王老师的新作《Java手机_PDA法度榜样设计入门》电子版时心中的欣喜和激动。可是当得知要为王老师的这部新著撰写书评的义务时,也同时认为了压力和不安。假如然的要让我来写这个器械,我很可能会把它写成一篇读书条记或是读后感,假如让我给写好的这篇器械加个期望的话,我盼望是能给更多的手机利用开拓的同伙们带来一点赞助吧!

细细的读完了这本书,掩卷长思,切实着实受益匪浅。我把《Java手机法度榜样入门及利用》比作一道java口味的清淡爽口小菜,那么>便是一道营养富厚,口味独特的嵌入式开拓的盛馔。由于这本书不只席卷了J2ME开拓的方方面面,还涉及了大年夜量Personal Java,Symbian 和Pocket PC等嵌入式平台系统的开拓常识和技巧成长背景。这本书先容了从J2ME技巧成长,对象设置设置设备摆设摆设,相关利用开拓包到数据库以及收集等等的常识和开拓技术,把握全局,事无巨糜,却被脉络清晰的组织的有条不紊,赏之悦目。文章的特色不仅在于其结构严谨,行文流通,也在于王老师将各类资料的出处采纳列表的要领列举清楚,这是其它的册本所很少能够供给的。点击互联网上的URL链接,好像念响了"芝麻开门"的咒语,一座座富厚的宝库便向我们打开了。J

全书统共分成以下几个大年夜部分来先容J2ME的常识:1.J2ME背景的先容和开拓的情况;

2.J2ME开拓的根基常识,包括生命周期,开拓对象的选择,高档用户接口API,初级用户接口API等;3.具体地先容了J2ME开拓的进阶,此中包括了Game API的开拓常识,数据库的开拓,通用的连接框架以及若何开拓与企业系统的毗连等;4.概要的先容了其他的各类不合的手机平台开拓对象设置设置设备摆设摆设流程,包括Personel Java,Pocket PC以及Symbian等等。这本书涵盖的常识面异常的广。很多在《Java手机法度榜样入门及利用》一书中不是太清楚的观点,在这里都作了澄清,我们可以更好地把它看作是一本进阶的教程。然则假如作为初学者,我建议照样应该先看看《Java手机法度榜样入门及利用》,然后再看本书大概将会有更大年夜的劳绩。

出于履历和所关注常识层面各方面的缘故原由所限,我无法像平日的书评一样从市场,从全局,从大年夜处来把握评价这本书。我只能依据自身的开拓履历,日常平凡在网上在论坛上与同伙所评论争论开拓中所存在的问题以及从我所关注本书的某些细节方面启程,来和大年夜家一路来分享这道盛宴。我就从一个手机Java的法度榜样员的角度坦率的说说这本书将能给我们带来的好处。J

1)关于此书,我曩昔在网上就浏览过它相关Game API章节的电子版。早就心憧憬之,今日终于可以一窥端倪。本书的常识布局都是相基于MIDP2.0规范的,这一点须请读者分外留神,在测试书中的实例的时刻应该应用WTK2.0 或者 WTK 2.1对象,虽然当前有些扩充的API能够实现的手机不多,然则这是未来J2ME的成长偏向,这也是作者立意深远之处。"工欲善其事,必先利其器",WTK本身便是一个很好的编译模拟打包的集成对象,然则相对付MIDP的不合版本,也给我们开拓事情带来过很多困扰。笔者曾经在论坛上碰着过这样的例子:不少的同伙的编译打包后的jad,jar文件无法在手机上安装,缘故原由就在于MIDP的版本问题。本书中阐清楚明了三种标准的开拓版本,即MIDP1.0,JTWI,MIDP2.0,并且阐明WTK2.1就能够开拓兼容与三种不合规格的利用法度榜样,还能视自己的需求调剂情况。这样,我们可以经由过程统一的WTK2.1来开拓我们的手机游戏了。

2)在海内系统而周全的先容JCP标准化组织和JSR接口规范以及相关的J2ME成长背景的册本资料不多,而本书的作者花费了很长的篇幅来先容这一背景和成长偏向。犹如各类Sun所展现的Java技巧,J2ME的每种相关的技巧都颠末由必然的步骤来拟订,这个历程便是JCP。Expert Group遵照JCP所拟订的准则来拟订各类Java规范(JSR)。还有相关的参考实现(RI)和兼容测试包(TCK)。对JSR标准等相关的背景常识的具体懂得可以更有助于我们加倍清楚的把握J2ME成长的整体布局和偏向。

3) 有很多的技巧细节,大概都是我们时所轻忽的。比如,在网上有不少的同伙都在问我,midlet小法度榜样是否所能够造访外部文件的问题,在这里也能够找到懂得答,在Midlet中只能存取来自同一个jar文件中所有非class的资本文件,当然,RMS也是资本的一种。这主如果从手机系统的安然角度来斟酌的,包括图片,文本在内jar中所有的资本文件我们都可以经由过程 java.lang.Class.getResourceAsStream()函数来造访,这些也都是书中所提到的。

4)在Midlet的生命周期状态的流程阐发中,有很多的细节也是我们日常平凡大概并没有留意到的。比如说,在法度榜样的生命周期中startApp()函数很可能不仅仅只被调用一次,而是每次从竣事状态到启动状态的时刻都邑被调用,以是我们假如有些只必要初始化一次的代码就不要放在startApp()而是在构造函数中,并且只管即便不要在startApp()做过多的初始化动作。以及它所抛出的非常的处置惩罚流程,这些都是值得留意的,这本书奉告我们,法度榜样的许多效率的前进,其根源大概就在于这些各式各样的细节问题。

5)作为开拓嵌入式利用系统软件,法度榜样的运行效率是致命的关键。本书中的许多地方都着重的说起了这一点,并且举出了例子来赞助我们来改良这方面的问题。此中当然包括了许多经典的典型,包括轮回问题的处置惩罚,在处置惩罚轮回问题中必要将一些不需要的操作步骤移出轮回体外,可以大年夜大年夜地增强法度榜样的效率。还有在String与StringBuffer应用效率的对照的时刻由于String作为一个包装好的类,在处置惩罚字符串的时刻会多出很多的开销,比拟之下简单的字符串处置惩罚可以完全的斟酌StringBuffer类来进行。当然线程也是影响法度榜样运行效率的一个关键性的要素,线程引入游戏开拓的一个很紧张的方面就在于屏幕在同时绘制一段动画的同时,界面仍旧能够响利用户的录入,也便是用户的初级事故。同时,在用户界面层中,无论是高档的界面API,照样初级的界面API,线程的应用都扮演了很紧张的角色,必须斟酌到所有UI相关的回调函数都是由同一个Thread所完成的。我们在处置惩罚多线程的利用的时刻,必然要斟酌到线程的相关特点,胆小如鼠。J

6)在论坛上有很多的开拓者为这个问题所困扰,为什么一个游戏的动画法度榜样在模拟器上体现正常然则却在某些设备上老是出问题呢?这是由于每当屏幕必要重绘的时刻(有人调用repaint()或者是系统必要),就会在消息行列步队中塞入一个重绘事故,等随处置惩罚UI的线程有光阴的时刻,就会自动从行列步队中抓取事故,然后调用paint()回调函数。因为在处置惩罚UI线程处置惩罚前,很可能很多的重绘事故被塞入行列步队中,有些KVM为了做出最佳化,每每会将很多的paint()合而为一,同时削减paint()的调用次数。以是在运算资本首要的时刻,许多重绘的事故将会被丢弃,导致屏幕看起来像是跳格。这也恰是许多人开拓的手机游戏中的动画效果为什么明明在某些的模拟器和设备中体现优越,却在某些的设备中却频繁呈现掉真,定格以及滞后等问题的根源。办理的措施便是调用完repaint()措施后,紧接着就立即调用serviceRepaints()来强制重绘,尤其是在某些动感要求极强的游戏中,然则serviceRepaints()会等到paint()完成今后才返回,以是对效能上有很大年夜的影响,这是必要仔细思量的。这也是本书所特意提到办理规划。大年夜概是"于细微处见精神" 吧,在书中的许多的细节之处,切实着实能够看到作者的治学严谨,匠心独运。

7)在本书关于游戏界面的节制的一些观点,移动的通讯设备的本身都是多种硬件加上多种操作系统的综合体,每家厂商均有各类特殊的用户界面,假如要包管MIDP利用法度榜样的跨平台性,法度榜样员必要多方面的斟酌,比如按键在屏幕上的结构,根据我们所选择的类型就有不合的体现。本文具体的阐发了MIDP系统的 midp2.0,并且加重了UI高档控件的界面结构,同时也增添了很多相关于调剂界面结构的内容。例如,记得在论坛上也有同伙问过我为什么 g.drawstring("Hello",0,0,g.BOTTOM|g.HCENTER); 代码无效。着实(0,0)坐标为字符串或图形绘出在屏幕上时中下方的位置,假如应用了这样的函数调用,屏幕上将无法看到任何的器械了,由于都画到了屏幕之外。这些都是必要在涉猎本书的时刻细细的体会才能斟酌获得。

8)本书关于一些高档的MIDP开拓利用的先容,包括Game API的开拓,连接通用框架的应用,企业级利用的集成等,都是海内一致技巧册本中不多见的。本文在Game API的篇章中具体地先容了组成Game API的各类紧张的工具观点,并且给出了实际的标准典型,赞助读者加倍深入地懂得到了Game API的技巧细节。

9)本书虽然在许多的方面细致入微的阐发J2ME的方方面面,然则也有其疏漏之处,此中对照紧张的便是在于中翰墨符的显示问题了。这也是在相关技巧论坛上评论争论的一个焦点问题。此中手机里面的字符串基础上都是采纳的UTF-8的编码法,这种编码的款式介于ASCII和unicode编码法之间,常常碰着的中文问题主要分为以下几种:

1.rms数据库读写的问题;

2.在jad中书写游戏中文名称并且显示;

3.收集传输中中文问题(kxml传输的解码);

4.部分的模拟器也不支持中文(比如Nokia 60系列模拟器)。

办理第一个问题便是使用writeUTF() 和 readUTF()函数接口,他们供给了一个由从Unicode到UTF-8的互相转化的道路。第二个问题,建议照样本武艺工用文本对象转化成UTF-8的编码写在上面,否则你用unicode码制写入中文的话,在模拟器或者实际设备上就有无法识别而导致法度榜样不能履行的危险。第三个问题在于不合的手机着实支持的默认码制也是不一样的,CLDC的系统属性"microedition.encoding"定义了设备的默认字符编码,它的值可以应用System.getProperty措施取得。我们也可以转化成相关的支持的编码机制来实际的运行我们的法度榜样。着末一个问题,主要都是集中在Nokia 60系列模拟器上,那真的没有法子了,要么只有等待他的中文版本出来了,要么可以斟酌在翰墨的部分可以应用贴图在代替。

虽然我所关注的大概仅仅只是细节末枝,各式各样不入大年夜雅之堂,然则我也盼望能够管中窥豹,赞助大年夜家能够一睹王老师在新著所带给我们的Java天下。总之,看完了这本书,使我加倍等候下一部的进阶法度榜样设计>,等候王森老师的新的大年夜作!

您可能还会对下面的文章感兴趣: