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!");
}
}
}
在 requestformspotlet程序中,类似于 midp中的 display对象,单独的 graphics管理许多 spotlet用户界面显示。它考虑到了屏幕会被清除,显示边界会被建立。
不象 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;
}
}
palm设备广泛利用数据库, 你的 palm中的通讯簿、备忘录和记事本应用程序都与数据库有关。 kjava程序包提供了一个非常小的
database类,不仅可以创建并保持应用程序数据,而且可以访问现有的数据库。 如果你熟悉 palm数据库,你可能会对 kjava
database类提供的功能和信息感到失望。 然而,请再次记住, kjava只是一个演示的版本。
在我们的例子中,我们的 spotlet访问一个 palm数据库 (如果不存在的话,则创建一个新的数据库)来储存公基金报价。每个
palm数据库都必须有名字、创建者 id (一个 palm登记的唯一的标识号 ) 和一个指定到某个单独应用程序的类型号。 试图打开数据库要通过尝试创建一个带有
id信息的数据库实例来实现。 就象 midp recordstore,记录被添加进 kjava数据库,通过把一个字节数组当成记录添加到数据库中的形式。
出处 yesky
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器