Method............: 1018b3f8 'com/sun/midp/midlet/MIDletState.createMIDlet (static)' Stack Chunk.......: 488bcd8Frame Pointer.....: 488bd30Current IP........: 10223e61 = 10223e44 + offset 29Previous Frame....: 488bcf8Previous IP.......: 1024d539 (offset 22)Frame size........: 7 (1 arguments, 6 local ...
SUN在发布的KVM源代码中其实就已经提供KNI(K Native Interface)这套比较标准的API扩展辅助库。KNI和JNI类似,只是KNI不能象JNI那样外带一个DLL文件,KVM通常都是要烧进嵌入式设备的ROM里面的,所以不能装载KVM之外的本地代码。使用KNI来扩展KVM的方法与上一篇文章的方法类似,只是KNI提供了一套功能相对完善的接口。 1. KNI中的数据结构    KJAVA(或者叫J2ME)中的变量数据结构在KNI中有一套自己的对应的定义。   下面是部分的对应。  Java中的数据结构 &n ...
 大家都晓得KVM是不支持Native函数调用的,如果要增加一些系统调用的API,那么只能加到KVM内部。同时,不同的J2ME设备,也有不同的系统调用API以及它们的实现。我们从SUN那么下载到原始的KVM源代码,如何为其增加一个系统调用API呢?本文以具体实践的步骤一步一步来讲解增加KVM系统API的方法。    其实为KVM增加一个系统调用API比为Linux增加一个系统调用API还简单。大致就分成两步工作就完成。一步是在classes.zip中增加一个你自己新增的class,一步是在KVM的nativeCore.c中实现这个新增的class的native ...
2008-04-29

编译KVM

编译KVM    KVM可以说是JVM中比较小而且比较原始的一个版本。KVM是一般放置在嵌入式设备,比如手机等资源有限的终端内运行。KVM没有采用HotSpot JVM里面诸多优化技术,代码十分简单,有利于我们理解JAVA程序的执行过程。虽然KVM里面执行JAVA程序可能与现在PC上流行的JVM不太相同,但是大致原理是相似的。   下面是我在Windows编译KVM的过程。 1.下载KVM源代码 http://www.sun.com/software/communitysource/j2me/cldc/download.xml 现在有cldc ...
      由于无线开发包的一些问题和Sun的特殊性,如果你想要Eclipse环境中调试你的MIDlet程序,你必须修改Eclipse中调试的几个默认参数。步骤如下:      2.1   选择Eclipse的Window->Preferences 菜单;      2.2   在打开的界面中,展开Java节点,并选择Debug项目。      2.3 ...
    1.1 概述    手机可以被看作袖珍的计算机。它有CPU、存储器(flash、RAM)、输入输出设备(键盘、显示屏、USB和串口)。它还有一个更重要的I/O设备,那就是空中接口。手机通过空中接口协议(例如GSM、CDMA、PHS等)和基站通信,既可以传输语音、也可以传输数据。    手机的CPU一般不是独立的芯片,而是基带处理芯片的一个单元,也称作CPU核。基带处理芯片是手机的核心,它不仅包含CPU核、DSP核这些比较通用的单元,还包含通信协议处理单元。通信协议处理单元和手机协议软件一起完成空中 ...
JSRProperty NameDefault Value¹30microedition.platformnull microedition.encodingISO8859_1 microedition.configurationCLDC-1.0 microedition.profilesnull37microedition.localenull microedition.profilesMIDP-1.075microedition.io.file.FileConnection.version1.0 file.separator(im ...
 1. 简介 本文介绍JavaME中文编码的相关问题,这个问题一度是互联网上的开发者们讨论的热门话题。本文整理和综合了网上众多相关内容,尽可能的为开发者提供一个全面、系统的认识。 文中的代码仅用来说明原理,可能很不完整,缺乏变量定义或者返回值,请谅解。部分代码直接来源于网上的其他资料。 感谢众多开发者在中文编码问题上做出的努力与探索。总结中有什么问题的话,欢迎大家指正:)   2. 术语介绍  2.1 ASCII 基于罗马字母表的一套电子计算器编码系统,是单字节的编码方式,每个ASCII字符占用1个字节(8bits),所以ASCII编码最多可以表示256 ...
在J2ME应用程序中,我们可以使用XML解析器来访问网络上的基于XML的服务。比如,我们可以通过一个网站的聚合器来定制地显示某些新闻的标题和内容简介,这些内容的传递都是基于XML的服务。 XML解析器的是用目前来说是十分昂贵的,它需要比较大的内存以及更多的运算时间要求。为了适应在MIDP环境下运行,XML解析器的设计,将需要特别为资源受限制的移动设备进行定制化处理。在MIDP环境下运行的XML解析器需要代码体积小巧、占用内存少、运行速度迅速等特点。 两种常用的使用在资源受限设备上的XML解析器分别是kXML和NanoXML。kXML是专门针对J2ME(CLDC和MIDP)平台编写的XML解析器 ...
MIDP 2.0标准定义了4个安全域(Security Domain),每一个MIDlet在安装之后,都被分配到其中一个安全与当中。他们是: 受限制的第三方域(不被信任的第三方应用程序) 无限制的第三方域(被信任的第三方应用程序) 运营商保护域 手机设备制造商保护域 每一个保护域都有相应的访问受保护(敏感的)API的限制级别。受保护API的访问被划分分为如下几个功能组: 网络访问(MIDP标准还定义了底层网络访问权限,但是大多数手机生产商将他们贵为了网络访问类中) 消息(MIDP标准还定义了受限制消息组) 应用程序自动启动 本地连接(如蓝牙/红外等) 多媒体录制 读取用户数据(包括本地文件和个 ...
NetBeans移动开发包是NetBeans集成开发环境(IDE)的一个用来开发Java ME应用程序的插件。 NetBeans移动开发包可以用来编写代码,测试,调试Java移动版(Java Micro Edition,Java ME)平台的应用程序。他支持许多厂家的模拟器和SDK,包括诺基亚公司发布的。  平台这个开发包支持: CLDC 和 MIDP 1.0 和 MIDP 2.0 (例如诺基亚的Series 40和S60平台) CDC 和 Personal Profile (例如诺基亚的Series 80平台) 功能特点快速应用程序开发(RAD,Rapid Development ...
1. 简介 Java ME设备的多样化无疑是移动应用开发的噩梦,屏幕大小、按键键值、性能高低和API支持的不同等众多的差异为Java ME应用的多终端移植开发带来了重重困难。 预处理器(Preprocessor),顾名思义,是在编译之前对源代码进行预先处理。它为JavaME应用的多终端移植提供了一个良好的解决方案,你可以让多个终端版本共用同一套源代码,基于不同终端的属性对代码预处理后输出不同版本,这为移植和代码维护都带来了巨大的便利。 目前比较常见的预处理器有以下几个方案: J2me Polish:http://www.j2mepolish.org Antenna:http://antenna ...
KXML是一个只占很小存储空间的XML语法分析程序,对于J2ME应用程序非常适合。它有一个非常独特的DOM操作方法和被称为Pull的语法分析方法。  KXML是一个被设计用于J2ME设备的简化类库,虽然它也可以被用于其它需要小型XML语法分析程序的环境,比如Applet。KXML是一个Enhydra维护的项目,支持下面的性能:   · 支持XML名称空间   · 用"松散"模式分析HTML或其它SGML格式   · 占用很少的存储空间(21 kbps)   · 基于Pull的分析   · 支持X ...
MMAPI是在JSR 135中提出的,增强了Java ME平台对多媒体编程的支持。例如播放音频和视频文件,捕获声音和图像等。目前大多数支持JTWI 1.0的手机都支持了MMAPI。本文介绍如何使用MMAPI播放gif格式的动画。其实制作动画效果可以有很多办法,例如准备一个图片数组,在程序中不断的切换显示不同的图片,只要时间的间隔设置合理即可出现动画的效果。如果使用MMAPI则可以直接播放gif的动画。其实这和播放视频文件的方法和流程是类似的。首先我们应该准备一个gif文件,放在能够访问到的位置,且确保这个文件会被打包进jar内。在创建播放器之前应该先确认手机上的MMAPI实现是否支持image ...
【急求】有哪些手机网站是WAP2.0站点? 就是用xhtml写的手机网站。 各位朋友,麻烦告诉我。告诉我它的网址。 正打算好好研究一把xhtml呢。
J2ME规范包括了许多可选包,如支持多媒体功能的MMAPI,支持消息接收和发送的WMA,支持3D游戏的M3G API。如果某一款手机支持某个可选API,MIDP应用程序就可以使用它。但是,让用户回答“本机是否支持MMAPI”是不友好的,发布几个不同版本不但增加了开发的工作量,也让用户难以选择。因此,应用程序应该自己检测手机是否支持某一API,从而在运行期决定是否可以使用此API。MIDP 1.0和2.0应用程序都可以通过System.getProperty(String key)检测某一个属性的信息。如果该属性有效,将返回对应的字符串,否则,返回null,表示系统不支持 ...
这是我的手机。昨天写了个小小的测试用的j2me的小程序,结果打包后总是安装不成功,出现错误有两种:1、版本不兼容。这个出错刚开始让人家很郁闷,不知道它的版本是指什么版本。软件版本,MIDP版本还是CLDC版本,从资料上知道它支持MIDP2.0,后来修改了CLDC的版本为1.0之后就不出现版本不兼容了。2、描述符不正确。MIDlet-Description: Demo suite for MMAPI描述虽然是可选的,但也是要添的。MIDlet-Version: 1.0.3版本号,很多开发工具使用两位表示1.0版本号,是不足够的,应使用3位或4位。3、jad文件与manifest文件jad中的属性 ...