初探J2ME之一

最近在看一个关于J2ME的英语游戏项目,由于没有什么经验,所以做一些学习记录。

1.认识JAD文件。

 首先,介绍什么是JAD文件。JAD是Java 应用程序描述符。JAD文件是软件配置的信息文件,也就是说是Java用用程序的描述器文件。JAR才是真正的程序,你可以把两个文件放在一起安装JAD,也可以直接安装JAR文件。(JAD 文件包含 MIDlet 套件的标题信息,例如开发应用程序的公司、应用程序名称和大小。在将应用程序下载到设备上时,将先下载和读取描述符,然后再下载和读取包含 MIDP 应用程序的 JAR 文件。在装入 MIDlet 套件的完整 JAR 文件之前,移动设备上的应用程序管理软件可使用 JAD 文件验证 MIDlet 是否适用于该设备。JAD 还向 MIDlet 提供特定于配置的属性(参数),而无需修改 JAR 文件。这样设备便可以确认是否具有足够的空间用于存放应用程序,以及是否应下载完整的应用程序。

其次,介绍下它的作用,一方面它可以向应用程序管理器提供信息,说明jar的内容。另一方面它能够提供一种方法,把参数传送到MIDlet,这样就可以不必修改jar文件,省去很多麻烦。

最后,说下它的反编译功能。JAD是非常好的java反编译工具,可以直接使用命令行对java的.class文件进行反编译。如:c:\java\>jad a.class 执行便可以将.class文件反编译成a.jad文件,然后改名为a.java文件即可。也有很多软件利用了jad的反编译原理并且提供了相对人性化的图形界面,使用更加方便。

2.认识Perst 数据库

首先,介绍Perst。Perst 是McObject 公司发布的一款非常袖珍的开源嵌入式数据库,一个简单,快速,便捷,面向对象适合Java与.NET的数据库。Perst不需要专门的编译器或与预处理器,并且支持ACID事务。能够有效的处理移动设备上的大量数据,Perst直接将对象以Java或者C#对象的形式进行存储。因此不需要在对象的内部表现形式和Java/C#表现形式之间转换。可以和SQL Lite的数据兼容互导。具体的原理可以参见http://database.51cto.com/art/201103/247558.htm

其次,Perst的使用。在该项目中用到的包是perst-rms.jar,如果选择以文件形式存储数据就选择perst-jsr75.jar,Perst 数据库支持 MIDP/CLDC 1.1 (java应用程序编写需要遵照的规范)。它的使用与我们常用的关系型数据库有些不同。它会1)定义一个类,其结构与数据表结构一样,继承于Persistent.2) 然后再给此类定义一个索引类,继承于Persistent 3)再要调用数据库的地方打开数据库。如:

(1)

public class User extends Persistent
{
long id; // 唯一
String name; // 不唯一
public void writeObject(IOutputStream out)
{  out.writeLong(id);
  out.writeString(name);
}
public void readObject(IInputStream in)
{  id = in.readLong();
  name = in.readString();
  }

public User() // 空构造函数,必须
{}
public User(Storage db, User simple)
{  super(db);
  id = simple.id;
  name = simple.name;
}
}

(2)Root对象(Perst的特色,作用:类似于索引)
public class Root extends Persistent
{Index userId; // 以用户id为索引
Index userName; // 以用户名为索引
public void readObject(IInputStream in)
{  userId = (Index) in.readObject();
  userName = (Index) in.readObject();
 }
public void writeObject(IOutputStream out)
{  out.writeObject(userId);
  out.writeObject(userName);
 }
public Root(){}
public Root(Storage db)
{
  super(db);
  userId = db.createIndex(Types.Long, true); // 在索引表中唯一
  userName = db.createIndex(Types.String, false); // 不唯一
  }
}

(3)初次运行,创建、打开数据库,并返回Root
  Storage db = StorageFactory.getInstance().createStorage();
  db.open("test.dbs");
  Root root = (Root) db.getRoot();
  if (root == null)
  { root = new Root(db);
   db.setRoot(root);
  }
添加用户对象
  Storage db = StorageFactory.getInstance().createStorage();
  Root root = (Root) db.getRoot();
  User dbUser = new User(db, simple);
  root.userId.put(new Key(dbUser.id), dbUser);//用户id索引
  root.userName.put(dbUser.name, dbUser);//用户名索引
  db.commit();//提交事务

同样可以执行更新和删除等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值