Java嵌入式开发之j2me--五
2008-05-21 06:05
197 查看
google_ad_client = "pub-8800625213955058";
/* 336x280, 创建于 07-11-21 */
google_ad_slot = "0989131976";
google_ad_width = 336;
google_ad_height = 280;
//
MIDP要求平台设备提供一个机制用来储存简单的数据记录,通过正常的平台事件,比如重新启动和电池更新维护系统的完整性。 MIDP称一个持久数据库为
RecordStore。 在我们的示例中, MIDlet打开并添加一条记录到 " MutualFundQuotes " RecordStore。
正如我们的演示程序,能添加到 RecordStore中的唯一一种类型的记录是字节数组。 相同的 RecordStore是一个资源,它可以通过套件共享。
根据 MIDP规范, 当 MIDlet从平台中删除后,RecordStore也会被从平台中删除。
PDA简表
Palm公司是开发PDA简表规范的领头人, 这个简表也是完善了 CLDC,在相当长的一段时间内,它都将是 kjava类程序包的替代品。
Java规范建议这个 profile至少应当提供两个核心功能片段: 一个用户界面显示工具包,适合于 "有限的尺寸和深度显示 "和一个持久数据存储器机制。
显示工具包应该是抽象窗口工具包的一个子集, 而持久机制将为应用程序、数据、配置/环境信息提供简单的数据存储。
Foundation简表
下面三种简表不是非常常见, 这三种简表的职责都是为了完善 CDC。 Personal和 RMI简表实际上是 Foundation简表的扩展。
Foundation简表的任务是担任一个基础简表,便于以后开发出来的提供图形用户接口、 网络等功能的简表附着在它之上。 除了用于基础简表,
Foundation简表还提供完整网络的支持,不管有没有使用图形用户接口。
Personal简表
在当前的规范需求下, Personal简表提供下一代 PersonalJava环境。这个简表允诺,提供互联网连接性和 Web保真度以及一个能够运行
Java applets的 GUI。
RMI简表
回想一下 CDC配置为共享的、固定网络连接信息设备提供最小的 Java环境。 RMI简表将通过提供 Java到 Java的RMI来协助提供更好的网络连接性。
通过使用 J2SE ( 1.2.x或更高版本的 ) RMI,这个简表将允许这些网络设备与其他系统应用程序交互操作 (这个系统不必也运行
J2ME )。
kjava类
正如前面提到的那样, kjava类是最初提供的一个供测试用的类,在 Palm设备上运行早期的 KVM和配置版本。 它们将被 PDA简表代替。
kjava类扩展了 CLDC并且提供一个图形用户接口、 Palm数据库访问,简单集合类和一个三角法计算器。
在代码段2中,我使用 com.sun.kjava重写了 MIDP FundTracker程序,让它在 Palm上工作。 和前面的程序一样,这个简单的程序允许用户输入一个公基金代号并从WWW上的金融报价服务商那里取回报价。
kjava应用程序被称作 spotlet。 事实上,一个应用程序可以由很多 spotlet组成,但是在任何时间只有一个 spotlet可以显示在
Palm屏幕上。 在我们的例子中,我们创建一个基本 spotlet-- RequestFormSpotlet.java,为我们的两个
spotlets子类提供用户界面。代码段 2扩展了基本的 RequestFormSpotlet以便得到并储存一个报价。 RetrieveSpotlet也扩展了基本
RequestFormSpotlet并允许储存的报价被取回(见图)
代码段2
在 RequestFormSpotlet程序中,类似于 MIDP中的 Display对象,单独的 Graphics管理许多 spotlet用户界面显示。它考虑到了屏幕会被清除,显示边界会被建立。
不象 MIDlet,没有屏幕或画布对象来让我们添加用户界面小组件, 取而代之的是按钮、文本字段等等,直接描画在 spotlet上。
paint()方法利用图形环境从独一无二的 Graphics在屏幕上显示小组件。
我们的MIDP程序的 QuoteService类的大部分可以重新使用。 因为 kjava没有象 MIDP中HttpConnection这样特定的连接器界面,所以我们必须利用更多标准的一般的连接器结构表单获取
HTTP链接。 为了做到这一点,使用代码段 3中的代码替换 getQuotePage()方法。注意注意使用 Connector,就像在
MIDP中我们使用 HttpConnection一样。
代码段3
Palm设备广泛利用数据库, 你的 Palm中的通讯簿、备忘录和记事本应用程序都与数据库有关。 kjava程序包提供了一个非常小的
Database类,不仅可以创建并保持应用程序数据,而且可以访问现有的数据库。 如果你熟悉 Palm数据库,你可能会对 kjava
Database类提供的功能和信息感到失望。 然而,请再次记住, kjava只是一个演示的版本。
在我们的例子中,我们的 spotlet访问一个 Palm数据库 (如果不存在的话,则创建一个新的数据库)来储存公基金报价。每个
Palm数据库都必须有名字、创建者 ID (一个 Palm登记的唯一的标识号 ) 和一个指定到某个单独应用程序的类型号。 试图打开数据库要通过尝试创建一个带有
ID信息的数据库实例来实现。 就象 MIDP RecordStore,记录被添加进 kjava数据库,通过把一个字节数组当成记录添加到数据库中的形式。
Java嵌入式开发之j2me--一
Java嵌入式开发之j2me--二
Java嵌入式开发之j2me--三
Java嵌入式开发之j2me--四
Java嵌入式开发之j2me--五
Java嵌入式开发之j2me--六
/* 336x280, 创建于 07-11-21 */
google_ad_slot = "0989131976";
google_ad_width = 336;
google_ad_height = 280;
//
MIDP要求平台设备提供一个机制用来储存简单的数据记录,通过正常的平台事件,比如重新启动和电池更新维护系统的完整性。 MIDP称一个持久数据库为
RecordStore。 在我们的示例中, MIDlet打开并添加一条记录到 " MutualFundQuotes " RecordStore。
正如我们的演示程序,能添加到 RecordStore中的唯一一种类型的记录是字节数组。 相同的 RecordStore是一个资源,它可以通过套件共享。
根据 MIDP规范, 当 MIDlet从平台中删除后,RecordStore也会被从平台中删除。
PDA简表
Palm公司是开发PDA简表规范的领头人, 这个简表也是完善了 CLDC,在相当长的一段时间内,它都将是 kjava类程序包的替代品。
Java规范建议这个 profile至少应当提供两个核心功能片段: 一个用户界面显示工具包,适合于 "有限的尺寸和深度显示 "和一个持久数据存储器机制。
显示工具包应该是抽象窗口工具包的一个子集, 而持久机制将为应用程序、数据、配置/环境信息提供简单的数据存储。
Foundation简表
下面三种简表不是非常常见, 这三种简表的职责都是为了完善 CDC。 Personal和 RMI简表实际上是 Foundation简表的扩展。
Foundation简表的任务是担任一个基础简表,便于以后开发出来的提供图形用户接口、 网络等功能的简表附着在它之上。 除了用于基础简表,
Foundation简表还提供完整网络的支持,不管有没有使用图形用户接口。
Personal简表
在当前的规范需求下, Personal简表提供下一代 PersonalJava环境。这个简表允诺,提供互联网连接性和 Web保真度以及一个能够运行
Java applets的 GUI。
RMI简表
回想一下 CDC配置为共享的、固定网络连接信息设备提供最小的 Java环境。 RMI简表将通过提供 Java到 Java的RMI来协助提供更好的网络连接性。
通过使用 J2SE ( 1.2.x或更高版本的 ) RMI,这个简表将允许这些网络设备与其他系统应用程序交互操作 (这个系统不必也运行
J2ME )。
kjava类
正如前面提到的那样, kjava类是最初提供的一个供测试用的类,在 Palm设备上运行早期的 KVM和配置版本。 它们将被 PDA简表代替。
kjava类扩展了 CLDC并且提供一个图形用户接口、 Palm数据库访问,简单集合类和一个三角法计算器。
在代码段2中,我使用 com.sun.kjava重写了 MIDP FundTracker程序,让它在 Palm上工作。 和前面的程序一样,这个简单的程序允许用户输入一个公基金代号并从WWW上的金融报价服务商那里取回报价。
kjava应用程序被称作 spotlet。 事实上,一个应用程序可以由很多 spotlet组成,但是在任何时间只有一个 spotlet可以显示在
Palm屏幕上。 在我们的例子中,我们创建一个基本 spotlet-- RequestFormSpotlet.java,为我们的两个
spotlets子类提供用户界面。代码段 2扩展了基本的 RequestFormSpotlet以便得到并储存一个报价。 RetrieveSpotlet也扩展了基本
RequestFormSpotlet并允许储存的报价被取回(见图)
代码段2
import com.sun.kjava.*; public final class FundSpotlet extends RequestFormSpotlet { public static void main (String args[]) { new FundSpotlet().draw(); } private void draw() { initForm(); setTitle("Fund Quote Requested"); } public void penDown(int x, int y){ if (getExitButton().pressed(x,y)){ getGraphic().playSound(Graphics.SOUND_CONFIRMATION); System.exit(0); } if (getSymField().pressed(x,y)) getSymField().setFocus(); if (getGetButton().pressed(x,y)) { quoteRequested(); } } private void storeQuote (String fund, String newQuote) { int dbType = 0x46554e44; int dbCreator = 0x43415454; com.sun.kjava.Database quoteDB; try { quoteDB = new com.sun.kjava.Database(dbType, dbCreator, com.sun.kjava.Database.READWRITE); if (!quoteDB .isOpen()) { com.sun.kjava.Database.create(0, "MutualFundQuotes", dbCreator, dbType, false); quoteDB = new com.sun.kjava.Database(dbType, dbCreator, com.sun.kjava.Database.READWRITE); } byte[] data = (fund "#" newQuote).getBytes(); quoteDB.addRecord(data); quoteDB.close(); } catch (Exception recordException) { System.out.println("Unable to store quote and/or use Mutual Fund Quote database."); } } private void getAndDisplayQuote() { String fundSymbol = getSymField().getText(); if (fundSymbol.length() > 0) { String theQuote = QuoteService.getQuote(fundSymbol); if (theQuote != null) { storeQuote(fundSymbol, theQuote); message(theQuote); } else message("No quote. Check Symbol"); } } private void quoteRequested() { message(""); getGraphic().playSound(Graphics.SOUND_STARTUP); if ((getSymField().getText().length() > 0)) { getAndDisplayQuote(); } else { message("Symbol required!"); } } } |
不象 MIDlet,没有屏幕或画布对象来让我们添加用户界面小组件, 取而代之的是按钮、文本字段等等,直接描画在 spotlet上。
paint()方法利用图形环境从独一无二的 Graphics在屏幕上显示小组件。
我们的MIDP程序的 QuoteService类的大部分可以重新使用。 因为 kjava没有象 MIDP中HttpConnection这样特定的连接器界面,所以我们必须利用更多标准的一般的连接器结构表单获取
HTTP链接。 为了做到这一点,使用代码段 3中的代码替换 getQuotePage()方法。注意注意使用 Connector,就像在
MIDP中我们使用 HttpConnection一样。
代码段3
private static String getQuotePage(String symbolString) { StringBuffer quotePage = new StringBuffer(); int ch; try { InputStream in = Connector.openInputStream ( "testhttp://someurl/some_application?page= &mode=fund&symbol=" symbolString); while ((ch = in.read()) > 0) { quotePage.append((char)ch); } in.close(); return quotePage.toString(); } catch (IOException ex) { System.out.println("Exception reading quote from HTTP Connection"); return null; } } |
Database类,不仅可以创建并保持应用程序数据,而且可以访问现有的数据库。 如果你熟悉 Palm数据库,你可能会对 kjava
Database类提供的功能和信息感到失望。 然而,请再次记住, kjava只是一个演示的版本。
在我们的例子中,我们的 spotlet访问一个 Palm数据库 (如果不存在的话,则创建一个新的数据库)来储存公基金报价。每个
Palm数据库都必须有名字、创建者 ID (一个 Palm登记的唯一的标识号 ) 和一个指定到某个单独应用程序的类型号。 试图打开数据库要通过尝试创建一个带有
ID信息的数据库实例来实现。 就象 MIDP RecordStore,记录被添加进 kjava数据库,通过把一个字节数组当成记录添加到数据库中的形式。
Java嵌入式开发之j2me--一
Java嵌入式开发之j2me--二
Java嵌入式开发之j2me--三
Java嵌入式开发之j2me--四
Java嵌入式开发之j2me--五
Java嵌入式开发之j2me--六
相关文章推荐
- Java嵌入式开发之j2me--六
- Java嵌入式开发之j2me--一
- Java嵌入式开发之J2ME(三)
- Java嵌入式开发之J2ME(四)
- Java嵌入式开发之j2me--四
- Java嵌入式开发之j2me--二
- Java嵌入式开发之j2me--三
- Java嵌入式开发之J2ME(一)
- Java嵌入式开发之J2ME(二)
- Java能扮演嵌入式开发主角吗?
- Linu嵌入式开发建立交叉编译环境 for java
- JAVA游戏编程之三----j2me 手机游戏入门开发--俄罗斯方块_3_增加成绩记录
- j2me游戏开发之LWJGL(Lightweight Java Game Library)
- 嵌入式或者驱动底层开发为何不如java等上层开发工资高?
- JavaWebStudio 2005开发J2ME方法
- Java手机开发平台 J2ME
- 嵌入式软件开发培训笔记——java第四天(高级类特性——接口/多态/抽象类/内部类以及异常处理)
- 嵌入式软件开发培训笔记——java第五天(API——math/string/集合/日期时间以及java线程)
- Java嵌入式开发之J2ME简表
- 【J2me 2D 游戏开发系列】◣Himi游戏开发启蒙教程◢Java零基础学习J2me游戏开发全过程!