莫相离 发表于 2015-1-18 11:36:16

JAVA编程:使用Java 编写手机使用程序--Motorola ...

最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的程序对MIDlet举行调试
编写PalmOS上的Spotlet时,我们能够使用System.out.println()函式帮我们印出一些讯息以匡助调试,那幺在手机上的MIDlet呢?准绳上,我们仍是能够使用System.out.println()函式做一些输入。当摹拟器实行时,就会在命令列上输入一些讯息。
别的,在PalmOS上,有KVMutil.prc能够匡助我们记录程序所输入的讯息。那手机上呢?由于没有实践的呆板能够测试,因而这个成绩到如今还不得而知,信任Motorola到时分会有完美的办理计划吧!
在MotorolaJ2MESDK内附的申明文件当中,大要地提到了调试的成绩,外头提到,今后假如我们要举行机上调试(on-devicedebugging)的话,必需要满意几个前提:
[*]呆板自己要具有调试相干功效,并与KDWP(KvmDebugWireProtocol)兼容。由于调试时,调试工具必要使用KDWP和呆板上扳谈以获得调试信息。
[*]打造厂商自己要供应下载MIDlet得手机上以举行调试的办法。
[*]供应对MIDlet调试的工具,必需撑持手机在使用KDWP调试时所利用的传输接口(比方串行口或UDP)。

嗯,看起来可以举行调试,MIDlet程序的编写应当是很便利的事变了。

MotorolaJ2MESDK对中文的撑持
信任看过RUN!PC11月号的文章「使用Java编写PalmOS使用程序基本篇」的读者,在编写PalmOS上的Spotlet时必定会碰到中文没法一般显现的成绩。中文的成绩分红两个部分,一个是在用户接口上的中文成绩,一个是在命令列输入(使用System.out.println()函式所做的输入)上的中文成绩,请人人做个小实行,将后面我们所编写的程序改以下:
HelloMIDlet.java
importjavax.microedition.lcdui.*;
importjavax.microedition.midlet.*;

publicclassHelloMIDletextendsMIDlet
{
privateDisplayfirstDisplay;
privateFormfirstForm;
HelloMIDlet()
{
firstDisplay=Display.getDisplay(this);
firstForm=newForm("哈罗!MIDlet");
StringItemfirstStrItem=newStringItem("哈罗","米德列特");
firstForm.append(firstStrItem);
System.out.println("MIDlet启动");
}
protectedvoidstartApp()throwsMIDletStateChangeException
{
firstDisplay.setCurrent(firstForm);
}

protectedvoidpauseApp()
{
}

protectedvoiddestroyApp(booleanunconditional)
throwsMIDletStateChangeException
{
}
}
将本MIDlet编译并经由预身考核以后,我们开启摹拟器来实行此MIDlet,底下为实行了局:
用户接口输入:命令列输入http://www.csdn.net/expert/wangsen/artic013.jpghttp://www.csdn.net/expert/wangsen/artic014.jpg我们从了局发明,预设的编译指令会让用户接口一般输入中文,而命令列没法输入准确的中文。
我们从了局发明,预设的编译指令会让用户接口一般输入中文,而命令列没法输入准确的中文。

接着请将compileAll.bat当中底本的指令
javac-O-bootclasspath....lib%COMPILECLASS%
修正为
javacCencodingISO8859_1-O-bootclasspath....lib%COMPILECLASS%
以后,从头编译此MIDlet实行了局:用户接口输入:命令列输入http://www.csdn.net/expert/wangsen/artic015.jpghttp://www.csdn.net/expert/wangsen/artic016.jpg我们从了局发明,预设的编译指令会让用户接口没法一般输入中文,而命令列却能够输入准确的中文。
这个了局与PalmOS上所做的中文测试了局有所分歧。
当您编写Spotlet时,假如您利用javac。。。指令时,您会发明摹拟器上的用户接口输入是乱码,但是命令列上的输入却能够一般输入中文。可是假如您利用的是javac-encodingISO8859_1。。。指令,则CLDC内附摹拟器上的用户接口输入或是命令列上的输入全体都酿成乱码,没法一般输入中文(这个部分是由于CLDC内附摹拟器实做的成绩,形成与实践呆板的了局有差别)。
总之,假如之前您所编写的Spotlet没法在装有中文体系的实践呆板或POSE上一般输入中文,请您也依样画葫芦,在编译指令中到场-encodingISO8859_1,就能够在实践呆板或POSE上看到一般的中笔墨了。

会发生此成绩的主因,次要是由于编译好的Java类文件(bytecode)当中,一切的笔墨编码都接纳UTF8。举例来讲,当您在程序码里用到"启动"这两其中笔墨时,
"起"这个字的Big5编码为B1D2。
"动"这个字的Big5编码为B0CA。
我们会利用javacxxxx.java来编译原始码以发生类文件。实在这行指令,在繁体中文的Windows情况底下,相称于javac-encoding"Big5"xxxx.java。也就是说,当编译器读取到Big5编码局限的中笔墨时,会主动将此Big5码经由「Big5èUnicode对比表」将Big5转为Unicode,也就是说,经由查表以后,
“起”这个字的Unicode编码为555F。
“动”这个字的Unicode编码为5272。
然后再使用UTF8编码将此Unicode转为UTF8,贮存在类文件当中,因而,假如您用UltraEdit之类的笔墨编纂器检察类文件时,您会看到,
"起"这个字的UTF8编码为E5959F。
"动"这个字的UTF8编码为E58B95。

接着,当我们在程序实行时假如要将中文输入,则JVM会卖力读进UTF8码,然后将其转回Unicode,最初根据您所利用的体系情况预设的编码转回Big5,再输入至屏幕上。
但是经由测试了局,KVM仿佛只要做到把UTF8读出去,转换回Unicode以后就间接输入了。少了转回Big5的步骤,因而,操纵体系把Unicode看成Big5来处置,天然就找不到该码所对应的中笔墨了,也因而输入的是一堆?????的标记。这也是我们在PalmOS上即便装了中文体系,也没法一般显现中文的原因。
OK,既然晓得KVM只帮我们做了一半的事情,那事变就好办了,我们只需让UTF8转回以后,仍旧保有Big5的编码体例便可,因而我们利用指令javac-encodingISO8859_1xxxx.java,请编译器不要将程序码中中文Big5编码的两个byte视为一体(由于视为一体就会激发查询Big5èUnicode对比表的事情),只需将中文看成是一般的西欧字母字集便可,因而,当我们利用了上述指令,您会发明类文件当中的中文酿成,
"起"这个字的UTF8编码为C2B1C392。
"动"这个字的UTF8编码为C2B0C38A。
人人能够发明编译器把B1、D2、B0、CA一般看成一个码来处置。因而,当KVM读到此编码时,就会将他们转回B1D2和B0CA,然后KVM间接输入,就能够一般地利用中文了。

最初总结全部成绩,就笔者的揣度,CLDC内附的摹拟器再没有利用javacCencodingISO8859_1xxxx.java指令之前,会在用户接口任务令列输入乱码,这才是一般的了局,而MotorolaJ2MESDK内附摹拟器的用户接口中文之以是没成绩,极可能只是由于摹拟器操纵的差别。因而依据KVM的输入了局来看,极可能在实践的手机上,我们都必需加上-encodingISO8859_1选项才干准确输入中文吧!

在此出格感激静宜年夜学资管系的唐恺隆(kailung.tang@msa.hinet.net)同砚。由于笔者于他经由强烈热闹的会商以后,我们才干对J2ME的中文成绩有更深切的熟悉
撑持MotorolaJ2MESDK的开辟工具
在编写本文的时分,撑持MIDlet开辟的集成开辟情况(IDE)只要MotorolaJ2MESDK附带文件当中所提到的CodeWarrior罢了。信任别的厂商,如Borland,应当也会很快天时用其产物JBuilder的OpenToolsAPI来撑持MIDlet的开辟才对,更况且BorlandJBuilder今朝已有Spotlet的办理计划了。
由于笔者没法拿到CodeWarrior作测试,以是没法在此供应人人相干信息,信任假如无机会的话,会别的以专文向人人先容怎样使用CodeWarrior编写MIDlet。
MotorolaJ2MESDK附带文件在附录的部分有对使用CodeWarrior开辟MIDlet做复杂的先容,信任对初学者来讲,已相称充足了。

MotorolaJ2MESDK内含的帮助开辟工具
在MotorolaJ2MESDK当中内含三项帮助开辟工具,能够便当我们的程序开辟事情,它们分离是:

[*]J2ME摹拟器(J2MEEmulator)
让您能够在您的PC上摹拟Motorola未来会撑持J2ME的手机安装。云云一来就能够在PC上间接测试写好的程序。
[*]Bytecode考证器(BytecodeVerifier)
此考证器用来考证类文件(classfile)当中的bytecode不会对存储器做不法的存取。并确认载进假造呆板的类文件所做的一切举措皆切合Java假造呆板规格(JavaVirtualMachineSpecification)。
[*]设置编纂器(ConfigurationEditor)
让您可以创建或修正deviceprofile。

在MotorolaJ2MESDK内附的文件当中对这三个工具有具体的申明,笔者在此就不再赘述了。

总结
呼!好累人,终究到了该做总结的时分了!人人觉得MIDlet就如许停止了吗?不!MIDlet另有很多好玩的玩艺儿呢!我们将在本系列以后的文章中为人人更深切切磋MIDlet。我们下次见。

附录:典范程序
MotorolaJ2MESDK当中内附很多风趣的典范,它们位于demo/midlets/目次底下。有乐趣持续精进的读者能够由这些典范学到更多有关MIDlet的深切技能,因为这些典范的实行画面过年夜,以是在本文当中就将他们省略,请读者们自行参考申明文件。
这些典范程序有:
Bounce
com.mot.j2me.midlets.bounce.Bounce
PaddleBall
com.mot.j2me.midlets.paddleball.PaddleBall
Scribble
com.mot.j2me.midlets.scribble.Scribble
FontDemo
com.mot.j2me.midlets.tutorials.FontDemo
GraphicsDemo
com.mot.j2me.midlets.tutorials.GraphicsDemo
RecordStoreDemo
com.mot.j2me.midlets.tutorials.RecordStoreDemo
UDPTutorialApplication
com.mot.j2me.midlets.tutorials.UDPReceive
AlertTest
com.mot.j2me.midlets.tests.AlertTest
ChoiceGroupTest
com.mot.j2me.midlets.tests.ChoiceGroupTest
DateFieldTest
com.mot.j2me.midlets.tests.DateFieldTest
FormTest
com.mot.j2me.midlets.tests.FormTest
GaugeTest
com.mot.j2me.midlets.tests.GaugeTest
KeyEventsTest
com.mot.j2me.midlets.tests.KeyEventsTest
TextBoxTest
com.mot.j2me.midlets.tests.TextBoxTest
TextFieldTest
com.mot.j2me.midlets.tests.TextFieldTest
TickerTest
com.mot.j2me.midlets.tests.TickerTest

收集资本
◎网站
称号URL
Motorola官方网站http://www.motorola.com/java/
Metrowerks(CodeWarrior)http://www.Metrowerks.com
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。

admin 发表于 2015-1-21 10:48:59

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

谁可相欹 发表于 2015-1-23 14:01:20

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

乐观 发表于 2015-1-24 07:46:01

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

透明 发表于 2015-1-24 16:37:58

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

只想知道 发表于 2015-1-31 13:34:45

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

老尸 发表于 2015-2-1 16:52:01

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

仓酷云 发表于 2015-2-7 09:50:43

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

活着的死人 发表于 2015-3-6 14:17:23

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

山那边是海 发表于 2015-3-11 03:03:16

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

第二个灵魂 发表于 2015-3-13 23:09:26

是一种语言,用以产生「小应用程序(Applet(s))

再现理想 发表于 2015-3-20 21:20:21

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

变相怪杰 发表于 2015-3-21 01:55:06

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

分手快乐 发表于 2015-3-26 10:29:23

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

柔情似水 发表于 2015-3-31 09:54:04

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

简单生活 发表于 2015-4-3 09:17:29

Java是一种计算机编程语言,拥有跨平台、面向对java

灵魂腐蚀 发表于 2015-4-17 09:47:19

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

爱飞 发表于 2015-4-20 07:33:38

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

飘飘悠悠 发表于 2015-5-10 22:20:59

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

冷月葬花魂 发表于 2015-6-9 10:03:57

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
页: [1]
查看完整版本: JAVA编程:使用Java 编写手机使用程序--Motorola ...