| ºë±m±ÀÂË |
|
|
| ¤ÀÃþ³Ì·s±Ðµ{ |
|
| ¤ÀÃþ¼öÂI±Ðµ{ |
|
|
|
| §Q¥ÎJava ½s¼g¤â¾÷À³¥Îµ{§Ç¡]Äò¡^ |
| §@ªÌ¡G¥¼ª¾ |
| ¤é´Á¡G2003-07-26 |
| ¤H®ð¡G |
| §ë½Z¡GAndy.m(Âà¶K) |
| ¨Ó·½¡G¥¼ª¾ |
| ¦rÅé¡G¤j ¤¤ ¤p |
| ¦¬ÂáG¥[¤JÂsÄý¾¹¦¬Âà |
|
|
|
ùþ¹ïMIDlet¶i¦æ½Õ¸Õ
½s¼gPalmOS¤WªºSpotlet®É¡A§ÚÌ¥i¥H§Q¥ÎSystem.out.println()¨ç¦¡À°§Ú̦L¥X¤@¨Ç°T®§¥HÀ°§U½Õ¸Õ¡A¨º¤\¦b¤â¾÷¤WªºMIDlet©O? ì«h¤W¡A§ÚÌÁÙ¬O¥i¥H§Q¥ÎSystem.out.println()¨ç¦¡°µ¤@¨Ç¿é¥X¡C·í¼ÒÀÀ¾¹°õ¦æ®É¡A´N·|¦b©R¥O¦C¤W¿é¥X¤@¨Ç°T®§¡C
¥t¥~¡A¦bPalmOS¤W¡A¦³KVMutil.prc¥i¥HÀ°§U§Ú̬ö¿ýµ{§Ç©Ò¿é¥Xªº°T®§¡C¨º¤â¾÷¤W©O? ¦]¬°¨S¦³¹ê»Úªº¾÷¾¹¥i¥H´ú¸Õ¡A¦]¦¹³oÓ°ÝÃD¨ì²{¦bÁÙ¤£±o¦Óª¾¡A¬Û«HMotorola¨ì®ÉÔ·|¦³§¹µ½ªº¸Ñ¨M¤è®×§a!
¦bMotorola J2ME SDK¤ºªþªº»¡©ú¤å¥ó¤§¤¤¡A·§²¤¦a´£¨ì¤F½Õ¸Õªº°ÝÃD¡A¸ÌÀY´£¨ì¡A©¹«á¦pªG§ÚÌn¶i¦æ¾÷¤W½Õ¸Õ(on-device debugging)ªº¸Ü¡A¥²¶·nº¡¨¬´XÓ±ø¥ó:
¾÷¾¹¥»¨n¨ã³Æ½Õ¸Õ¬ÛÃö¥\¯à¡A¨Ã»PKDWP(Kvm Debug Wire Protocol)Ý®e¡C¦]¬°½Õ¸Õ®É¡A½Õ¸Õ¤u¨ã»Ýn§Q¥ÎKDWP©M¾÷¾¹¤W¥æ½Í¥H¨ú±o½Õ¸Õ«H®§¡C
»s³y¼t°Ó¥»¨n´£¨Ñ¤U¸üMIDlet¨ì¤â¾÷¤W¥H¶i¦æ½Õ¸Õªº¤èªk¡C
´£¨Ñ¹ïMIDlet½Õ¸Õªº¤u¨ã¡A¥²¶·¤ä«ù¤â¾÷¦b§Q¥ÎKDWP½Õ¸Õ®É©Ò¨Ï¥Îªº¶Ç¿é±µ¤f(¨Ò¦p¦ê¦æ¤f©ÎUDP)¡C
¶â¡A¬Ý°_¨Ó¯à°÷¶i¦æ½Õ¸Õ¡AMIDletµ{§Çªº½s¼gÀ³¸Ó¬O«Ü¤è«Kªº¨Æ±¡¤F¡C
ùþMotorola J2ME SDK¹ï¤¤¤åªº¤ä«ù
¬Û«H¬Ý¹LRUN!PC 11¤ë¸¹ªº¤å³¹¡u§Q¥ÎJava ½s¼gPalmOSÀ³¥Îµ{§Ç°ò¦½g¡vªºÅªªÌ¡A¦b½s¼gPalmOS¤WªºSpotlet®É¤@©w·|¹J¨ì¤¤¤åµLªk¥¿±`Åã¥Üªº°ÝÃD¡C¤¤¤åªº°ÝÃD¤À¦¨¨âÓ³¡¤À¡A¤@Ó¬O¦b¥Î¤á±µ¤f¤Wªº¤¤¤å°ÝÃD¡A¤@Ó¬O¦b©R¥O¦C¿é¥X(§Q¥ÎSystem.out.println()¨ç¦¡©Ò°µªº¿é¥X)¤Wªº¤¤¤å°ÝÃD¡A½Ð¤j®a°µÓ¤p¹êÅç¡A±N«e±§Ú̩ҽs¼gªºµ{§Ç§ï¦p¤U:
HelloMIDlet.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class HelloMIDlet extends MIDlet
{
private Display firstDisplay ;
private Form firstForm ;
HelloMIDlet()
{
firstDisplay = Display.getDisplay(this) ;
firstForm = new Form("«¢Ã¹!MIDlet") ;
StringItem firstStrItem = new StringItem("«¢Ã¹","¦Ì¼w¦C¯S") ;
firstForm.append(firstStrItem) ;
System.out.println("MIDlet±Ò°Ê") ;
}
protected void startApp() throws MIDletStateChangeException
{
firstDisplay.setCurrent(firstForm) ;
}
protected void pauseApp()
{
}
protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException
{
}
}
±N¥»MIDlet½sĶ¨Ã¸g¹L¹w¨¼f®Ö¤§«á¡A§Ú̶}±Ò¼ÒÀÀ¾¹¨Ó°õ¦æ¦¹MIDlet¡A©³¤U¬°°õ¦æµ²ªG:
¥Î¤á±µ¤f¿é¥X: ©R¥O¦C¿é¥X
§Ú̱qµ²ªGµo²{¡A¹w³]ªº½sĶ«ü¥O·|Åý¥Î¤á±µ¤f¥¿±`¿é¥X¤¤¤å¡A¦Ó©R¥O¦CµLªk¿é¥X¥¿½Tªº¤¤¤å¡C
§Ú̱qµ²ªGµo²{¡A¹w³]ªº½sĶ«ü¥O·|Åý¥Î¤á±µ¤f¥¿±`¿é¥X¤¤¤å¡A¦Ó©R¥O¦CµLªk¿é¥X¥¿½Tªº¤¤¤å¡C
±µµÛ½Ð±NcompileAll.bat¤§¤¤ì¥»ªº«ü¥O
javac -O -bootclasspath ..\..\lib %COMPILECLASS%
קאּ
javac ¡Vencoding ISO8859_1 -O -bootclasspath ..\..\lib %COMPILECLASS%
¤§«á¡A«·s½sͦ¹MIDlet°õ¦æµ²ªG:
¥Î¤á±µ¤f¿é¥X: ©R¥O¦C¿é¥X
§Ú̱qµ²ªGµo²{¡A¹w³]ªº½sĶ«ü¥O·|Åý¥Î¤á±µ¤fµLªk¥¿±`¿é¥X¤¤¤å¡A¦Ó©R¥O¦C«o¥i¥H¿é¥X¥¿½Tªº¤¤¤å¡C
³oÓµ²ªG»PPalmOS¤W©Ò°µªº¤¤¤å´ú¸Õµ²ªG¦³©Ò¤£¦P¡C
·í±z½s¼gSpotlet®É¡A¦pªG±z¨Ï¥Îjavac ¡C¡C¡C«ü¥O®É¡A±z·|µo²{¼ÒÀÀ¾¹¤Wªº¥Î¤á±µ¤f¿é¥X¬O¶Ã½X¡A¥i¬O©R¥O¦C¤Wªº¿é¥X«o¥i¥H¥¿±`¿é¥X¤¤¤å¡C¦ý¬O¦pªG±z¨Ï¥Îªº¬Ojavac -encoding ISO8859_1 ¡C¡C¡C«ü¥O¡A«hCLDC¤ºªþ¼ÒÀÀ¾¹¤Wªº¥Î¤á±µ¤f¿é¥X©Î¬O©R¥O¦C¤Wªº¿é¥X¥þ³¡³£Åܦ¨¶Ã½X¡AµLªk¥¿±`¿é¥X¤¤¤å(³oÓ³¡¤À¬O¦]¬°CLDC¤ºªþ¼ÒÀÀ¾¹¹ê°µªº°ÝÃD¡A³y¦¨»P¹ê»Ú¾÷¾¹ªºµ²ªG¦³®t²§)¡C
Á`¤§¡A¦pªG¤§«e±z©Ò½s¼gªºSpotletµLªk¦b¸Ë¦³¤¤¤å¨t²Îªº¹ê»Ú¾÷¾¹©ÎPOSE¤W¥¿±`¿é¥X¤¤¤å¡A½Ð±z¤]¦pªk¬¶»s¡A¦b½sĶ«ü¥O¤¤¥[¤J-encoding ISO8859_1¡A´N¥i¥H¦b¹ê»Ú¾÷¾¹©ÎPOSE¤W¬Ý¨ì¥¿±`ªº¤¤¤å¦r¤F¡C
·|²£¥Í¦¹°ÝÃDªº¥D¦]¡A¥Dn¬O¦]¬°½sͦnªºJavaÃþ¤å¥ó(byte code)¤§¤¤¡A©Ò¦³ªº¤å¦r½s½X³£±Ä¥ÎUTF8¡CÁ|¨Ò¨Ó»¡¡A·í±z¦bµ{§Ç½X¸Ì¥Î¨ì"±Ò°Ê"³o¨âÓ¤¤¤å¦r®É¡A
"°_"³oÓ¦rªºBig5½s½X¬°B1D2¡C
"°Ê"³oÓ¦rªºBig5½s½X¬°B0CA¡C
§ÚÌ·|¨Ï¥Îjavac xxxx.java¨Ó½sĶì©l½X¥H²£¥ÍÃþ¤å¥ó¡C¨ä¹ê³o¦æ«ü¥O¡A¦bÁcÅ餤¤åªºWindowsÀô¹Ò©³¤U¡A¬Û·í©ójavac -encoding "Big5" xxxx.java¡C¤]´N¬O»¡¡A·í½s;¹Åª¨ú¨ìBig5½s½X½d³òªº¤¤¤å¦r®É¡A·|¦Û°Ê±N¦¹Big5½X¸g¹L¡uBig5e Unicode ¹ï·Óªí¡v±NBig5ÂରUnicode¡A¤]´N¬O»¡,¸g¹L¬dªí¤§«á¡A
¡u°_¡v³oÓ¦rªºUnicode½s½X¬°555F¡C
¡u°Ê¡v³oÓ¦rªºUnicode½s½X¬°5272¡C
µM«á¦A§Q¥ÎUTF8½s½X±N¦¹UnicodeÂରUTF8¡AÀx¦s¦bÃþ¤å¥ó¤§¤¤¡A¦]¦¹¡A¦pªG±z¥ÎUltraEdit¤§Ãþªº¤å¦r½s¿è¾¹¬d¬ÝÃþ¤å¥ó®É¡A±z·|¬Ý¨ì¡A
"°_"³oÓ¦rªºUTF8½s½X¬°E5959F¡C
"°Ê"³oÓ¦rªºUTF8½s½X¬°E58B95¡C
±µµÛ¡A·í§Ú̦bµ{§Ç°õ¦æ®É¦pªGn±N¤¤¤å¿é¥X¡A«hJVM·|t³dŪ¶iUTF8½X¡AµM«á±N¨äÂà¦^Unicode¡A³Ì«á¨Ì¾Ú±z©Ò¨Ï¥Îªº¨t²ÎÀô¹Ò¹w³]ªº½s½XÂà¦^Big5¡A¦A¿é¥X¦Ü«Ì¹õ¤W¡C
¥i¬O¸g¹L´ú¸Õµ²ªG¡AKVM¦ü¥G¥u¦³°µ¨ì§âUTF8Ū¶i¨Ó¡AÂà´«¦^Unicode¤§«á´Nª½±µ¿é¥X¤F¡C¤Ö¤FÂà¦^Big5ªº¨BÆJ¡A¦]¦¹¡A¾Þ§@¨t²Î§âUnicode·í§@Big5¨Ó³B²z¡A¦ÛµM´N§ä¤£¨ì¸Ó½X©Ò¹ïÀ³ªº¤¤¤å¦r¤F¡A¤]¦]¦¹¿é¥Xªº¬O¤@°ï ????? ªº²Å¸¹¡C³o¤]¬O§Ú̦bPalmOS¤W§Y¨Ï¸Ë¤F¤¤¤å¨t²Î¡A¤]µLªk¥¿±`Åã¥Ü¤¤¤åªº½t¬G¡C
OK¡A¬JµMª¾¹DKVM¥uÀ°§Ṵ́µ¤F¤@¥bªº¤u§@¡A¨º¨Æ±¡´N¦n¿ì¤F¡A§ÚÌ¥unÅýUTF8Âà¦^¤§«á¡A¤´µM«O¦³Big5ªº½s½X¤è¦¡§Y¥i¡A©ó¬O§Ų́ϥΫü¥Ojavac -encoding ISO8859_1 xxxx.java¡A½Ð½s;¹¤£n±Nµ{§Ç½X¤¤¤¤¤åBig5½s½Xªº¨âÓbyteµø¬°¤@Åé(¦]¬°µø¬°¤@Åé´N·|¤Þµo¬d¸ßBig5 e Unicode¹ï·Óªíªº¤u§@)¡A¥un±N¤¤¤å·í§@¬O´¶³qªº¦è¼Ú¦r¥À¦r¶°§Y¥i¡A¦]¦¹¡A·í§Ų́ϥΤF¤Wz«ü¥O¡A±z·|µo²{Ãþ¤å¥ó¤§¤¤ªº¤¤¤åÅܦ¨¡A
"°_"³oÓ¦rªºUTF8½s½X¬°C2B1 C392¡C
"°Ê"³oÓ¦rªºUTF8½s½X¬°C2B0 C38A¡C
¤j®a¥i¥Hµo²{½s;¹§âB1¡BD2¡BB0¡BCAÓ§O·í§@¤@Ó½X¨Ó³B²z¡C©ó¬O¡A·íKVMŪ¨ì¦¹½s½X®É¡A´N·|±N¥LÌÂà¦^B1D2¥H¤ÎB0CA¡AµM«áKVMª½±µ¿é¥X¡A´N¥i¥H¥¿±`¦a¨Ï¥Î¤¤¤å¤F¡C
³Ì«áÁ`µ²¾ãÓ°ÝÃD¡A´Nµ§ªÌªº±ÀÂ_¡ACLDC¤ºªþªº¼ÒÀÀ¾¹¦A¨S¦³¨Ï¥Îjavac ¡Vencoding ISO8859_1 xxxx.java«ü¥O¤§«e¡A·|¦b¥Î¤á±µ¤f¨Ï©R¥O¦C¿é¥X¶Ã½X¡A³o¤~¬O¥¿±`ªºµ²ªG¡A ¦ÓMotorola J2ME SDK¤ºªþ¼ÒÀÀ¾¹ªº¥Î¤á±µ¤f¤¤¤å¤§©Ò¥H¨S°ÝÃD¡A«Ü¥i¯à¥u¬O¦]¬°¼ÒÀÀ¾¹¾Þ§@ªº®t²§¡C¦]¦¹®Ú¾ÚKVMªº¿é¥Xµ²ªG¨Ó¬Ý¡A«Ü¥i¯à¦b¹ê»Úªº¤â¾÷¤W¡A§Ú̳£¥²¶·¥[¤W-encoding ISO8859_1¿ï¶µ¤~¯à¥¿½T¿é¥X¤¤¤å§a!
¦b¦¹¯S§O·PÁÂÀR©y¤j¾Ç¸êºÞ¨tªºð·_¶©(kailung.tang@msa.hinet.net)¦P¾Ç¡C¦]¬°µ§ªÌ©ó¥L¸g¹L¼ö¯Pªº°Q½×¤§«á¡A§Ṳ́~¯à¹ïJ2MEªº¤¤¤å°ÝÃD¦³§ó²`¤Jªº»{ÃÑ
ùþ¤ä«ùMotorola J2ME SDKªº¶}µo¤u¨ã
¦b½s¼g¥»¤åªº®ÉÔ¡A¤ä«ùMIDlet¶}µoªº¶°¦¨¶}µoÀô¹Ò(IDE)¥u¦³Motorola J2ME SDKªþ±a¤å¥ó¤§¤¤©Ò´£¨ìªºCodeWarrior¦Ó¤w¡C¬Û«H¨ä¥¦¼t°Ó¡A¦pBorland¡AÀ³¸Ó¤]·|«Ü§Ö¦a§Q¥Î¨ä²£«~JBuilderªºOpenTools API¨Ó¤ä«ùMIDletªº¶}µo¤~¹ï¡A§ó¦óªpBorland JBuilder¥Ø«e¤w¸g¦³Spotletªº¸Ñ¨M¤è®×¤F¡C
¦]¬°µ§ªÌµLªk®³¨ìCodeWarrior§@´ú¸Õ¡A©Ò¥HµLªk¦b¦¹´£¨Ñ¤j®a¬ÛÃö«H®§¡A¬Û«H¦pªG¦³¾÷·|ªº¸Ü¡A·|¥t¥~¥H±M¤å¦V¤j®a¤¶²Ð¦p¦ó§Q¥ÎCodeWarrior½s¼gMIDlet¡C
Motorola J2ME SDKªþ±a¤å¥ó¦bªþ¿ýªº³¡¤À¦³¹ï§Q¥ÎCodeWarrior¶}µoMIDlet°µÂ²³æªº¤¶²Ð¡A¬Û«H¹ïªì¾ÇªÌ¨Ó»¡¡A¤w¸g¬Û·í¨¬°÷¤F¡C
ùþMotorola J2ME SDK¤º§tªº»²§U¶}µo¤u¨ã
¦bMotorola J2ME SDK¤§¤¤¤º§t¤T¶µ»²§U¶}µo¤u¨ã¡A¥i¥H«K§Q§Ú̪ºµ{§Ç¶}µo¤u§@¡A¥¦Ì¤À§O¬O:
J2ME¼ÒÀÀ¾¹(J2ME Emulator)
Åý±z¥i¥H¦b±zªºPC¤W¼ÒÀÀMotorola±N¨Ó·|¤ä«ùJ2MEªº¤â¾÷¸Ë¸m¡C¦p¦¹¤@¨Ó´N¥i¥H¦bPC¤Wª½±µ´ú¸Õ¼g¦nªºµ{§Ç¡C
BytecodeÅçÃÒ¾¹(Bytecode Verifier)
¦¹ÅçÃÒ¾¹¥Î¨ÓÅçÃÒÃþ¤å¥ó(classfile)¤§¤¤ªºbytecode¤£·|¹ï¦sÀx¾¹°µ«Dªkªº¦s¨ú¡C¨Ã½T»{¸ü¤JµêÀÀ¾÷¾¹ªºÃþ¤å¥ó©Ò°µªº©Ò¦³°Ê§@¬Ò²Å¦XJavaµêÀÀ¾÷¾¹³W®æ(Java Virtual Machine Specification)¡C
°t¸m½s¿è¾¹(Configuration Editor)
Åý±z¯à°÷«Ø¥ß©Î×§ïdevice profile¡C
¦bMotorola J2ME SDK¤ºªþªº¤å¥ó¤§¤¤¹ï³o¤TÓ¤u¨ã¦³¸Ô²Óªº»¡©ú¡Aµ§ªÌ¦b¦¹´N¤£¦AÂØz¤F¡C
ùþÁ`µ²
©I!¦n²Ö¤H¡A²×©ó¨ì¤F¸Ó°µÁ`µ²ªº®ÉÔ¤F! ¤j®a¥H¬°MIDlet´N³o¼Ëµ²§ô¤F¶Ü?¤£! MIDletÁÙ¦³³\¦h¦nª±ªºª±·N¨à©O! §Ú̱N¦b¥»¨t¦C¤§«áªº¤å³¹¤¤¬°¤j®a§ó²`¤J±´°QMIDlet¡C«¥Ì¤U¦¸¨£¡C
ùþªþ¿ý:½d¨Òµ{§Ç
Motorola J2ME SDK¤§¤¤¤ºªþ³\¦h¦³½ìªº½d¨Ò¡A¥¦Ì¦ì©ódemo/midlets/¥Ø¿ý©³¤U¡C¦³¿³½ìÄ~Äòºë¶iªºÅªªÌ¥i¥H¥Ñ³o¨Ç½d¨Ò¾Ç¨ì§ó¦h¦³ÃöMIDletªº²`¤J§Þ¥©¡A¥Ñ©ó³o¨Ç½d¨Òªº°õ¦æµe±¹L¤j¡A©Ò¥H¦b¥»¤å¤§¤¤´N±N¥L̬ٲ¤¡A½ÐŪªÌ̦ۦæ°Ñ¦Ò»¡©ú¤å¥ó¡C
³o¨Ç½d¨Òµ{§Ç¦³:
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
UDP Tutorial Application
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
ùþºôµ¸¸ê·½
¡·ºô¯¸
¦WºÙ URL
Motorola©x¤èºô¯¸ http://www.motorola.com/java/
Metrowerks(CodeWarrior) http://www.Metrowerks.com
|
|
|