J2ME中的随机访问数据对象

时间:2009-11-01 20:58:59

标签: serialization data-structures java-me gtfs

我打算开发一个小型J2ME实用程序,用于使用手机查看本地公共交通时刻表。这些数据部分主要是一大堆数字,代表公交车到达或离开的时间。

我想弄清楚的是存储这些数据的最佳方法是什么。表示需要

  1. 相当小(因为移动电话的持久存储限制)
  2. 适合单个文件(为了便于以后通过HTTP更新日程安排数据库)适合常量文件,即(routes.dattimes.dat, ......,agencies.dat)和schedule_111.datschedule_112.dat,...)
  3. 具有随机访问能力(将整个数据对象反序列化到内存对于移动电话来说太多了:))
  4. 如果有一些用于访问该数据格式的库,则应该存在Java实现
  5. 换句话说,如果你不得不将大部分GTFS - 像数据一样挤入移动设备,你会怎么做?

    Google Protocol Buffers似乎是定义数据的理想选择,但它没有随机访问权。

    你会建议什么?

3 个答案:

答案 0 :(得分:2)

J2ME上的持久存储是一件棘手的事情;有关更一般的背景,请参阅此相关问题:Best practice for storing large amounts of data with J2ME

根据我的经验,J2ME持久存储倾向于使用许多小记录而不是几个单片记录来最佳/最可靠地工作。想想程序将如何访问数据,然后尝试将其存储在J2ME持久存储中的那些增量中。

我通常建议将客户端 - 服务器协议解耦,以便从设备上的存储格式下载更新。您可以在每次代码更新时更改后者,但是您几乎永远不会支持客户端 - 服务器协议,除非您想要在现场打破旧客户端。

最后,我知道Transit Developers group有些人在J2ME中构建了离线传输应用程序,因此值得在那里寻求提示。

答案 1 :(得分:1)

我做了这样的app,我使用了用php生成的xml-s。这使我们能够为3个表示层提供单一的提供程序:

  • j2me app
  • 手机网站
  • 通常的网站

我们使用xslt将xml转换为网站上的html和kXML - 非常轻松的解析器在j2me app上执行。即使在具有黑白屏幕和少量内存的非常旧的手机上也能很好地工作。

除了j2me之外,没有文件的概念。您有可以存储信息的数据库。 这是“移动”网站的链接。 http://mobi.krakow.pl/rozklady/

以及此处的应用: http://www.mobi.krakow.pl/rozklady/j2me/rjk.jar

这很精彩,但我认为要弄清楚这是什么并不难。

如果您愿意,我可以为您提供更多帮助和建议,或者如果这是商业产品,那么我认为我们也可以找到一些东西;)

答案 2 :(得分:1)

我认为您的问题是要求2。

更新10MB的数据只是因为在文件中间某处改变了4位数字似乎非常低效。

将数据拆分为多个文件可以获得更好的更新粒度,这非常值得增加代码的复杂性。

实时公共交通时刻表通常一次修改一辆公共汽车/火车/有轨电车。