请教哪个J2ME混淆器的混淆能力海贼王之最强剑豪系统

使用IntelliJIDEA开发一般Java应用程序时配置Allatori进行代码混淆_Java教程_动态网站制作指南
使用IntelliJIDEA开发一般Java应用程序时配置Allatori进行代码混淆
来源:人气:3466
使用 IntelliJ IDEA 开发一般
应用程序时通过 Allatori 进行代码混淆非常容易配置,下面总结一下本人经验,介绍一下配置方法。
首先在 IDEA 的 Module 所在硬盘目录内创建一个名为 allatori 的子目录,将 Allatori 自己的 jar 文件都复制到这个子目录下。然后在 IDEA 的 Module 所在目录内创建两个
文件,一个是 Allatori 自己的混淆配置文件,命名为 config-allatori.xml;另一个是用于 Ant 构建的配置文件,命名为 build-allatori.xml。首先看 config-allatori.xml 文件的内容,基本可以作为一个:
1 &?xml version="1.0" encoding="UTF-8"?&
2 &config&
&jar in="${artifact}" out="${artifact-obfuscated}"/&
&classpath&
&jar name="lib/-connector-java-5.1.30-bin.jar"/&
&jar name="lib/netty-all-4.0.18.Final.jar"/&
&jar name="../lib/jgoodies-common.jar"/&
&jar name="../lib/jgoodies-forms.jar"/&
&jar name="../lib/jna-platform.jar"/&
&jar name="../lib/jna.jar"/&
&/classpath&
&keep-names&
&class template="class Launcher"&
&field ="ivate+"/&
&method template="private+ *(**)"/&
&class template="interface MacCameraDataCallback"&
&method template="private+ *(**)"/&
&class template="interface MacCameraErrorCallback"&
&method template="private+ *(**)"/&
&class template="interface MacCameraCaptureNativeLibrary"&
&method template="private+ *(**)"/&
&/keep-names&
&property name="log-file" value="log.xml"/&
33 &/config&
这里我的 Module 中有标准 Java 类,也有接口。含有 main 方法的启动类 Launcher 不应被混淆,接口也不应被混淆,因为涉及到 JNA 的本地方法映射调用,所以这里显示了如何在 Allatori 混淆配置中进行相应设置的方法。同时注意,由于我这个 Module 除了使用自己专有的第三方库以外,还使用了 Module 所在项目的项目全局第三方库,所以在上面的混淆配置的 &classpath& 小节部分可以看到必须指定准确的第三方库相对或绝对路径用于编译混淆。因为开发一般 Java 应用程序,不必像 Android 应用程序那样把第三方库一同打进目标应用程序 jar 文件中,第三方库的 jar 文件编译后也是单独存在的,所以混淆配置中不必指定第三方库的类防止混淆。
下面再来看 build-allatori.xml 文件的内容,也可以作为一个模板:
1 &?xml version="1.0" encoding="UTF-8"?&
2 &project name="MacCameraCaptureTest-allatori" default="MacCameraCaptureTest-obfuscated"&
&property name="out.classes.absolute.dir" value="/Users/Dolphin/Develop/idea/PCCameraCaptureInteractivity/out/production/MacCameraCaptureTest"/&
&property name="out.jar.absolute.dir" value="/Users/Dolphin/Develop/idea/PCCameraCaptureInteractivity/out/artifacts/MacCameraCaptureTest_jar"/&
&property name="artifact" value="${out.jar.absolute.dir}/MacCameraCaptureTest.jar"/&
&property name="artifact-obfuscated" value="${out.jar.absolute.dir}/MacCameraCaptureTest-obfuscated.jar"/&
&target name="MacCameraCaptureTest-obfuscated"&
&taskdef name="allatori" classname="com.allatori.ant.ObfuscatorTask" classpath="allatori/allatori.jar"/&
&allatori config="config-allatori.xml"/&
&target name="MacCameraCaptureTest-clean"&
&delete dir="${out.classes.absolute.dir}"/&
&delete dir="${out.jar.absolute.dir}"/&
18 &/project&
这里主要是注意,${out.classes.absolute.dir} 以及 ${out.classes.absolute.dir}-obfuscated 所定义的 IDEA 针对项目 Module 编译产生的目标类文件以及 jar 文件所在路径一定要准确。
然后我们就要将 build-allatori.xml 加入到 IDEA 的 Ant Build 系统中,如下图所示:
点击 IDEA 右上部分 Ant Build 那个按钮,在弹出的 Dock 小窗口中点击&+&按钮,然后选择 build-allatori.xml 文件即可将其加入到 IDEA 的 Ant Build 系统中。
接下来,我们进入到 IDEA 的 Project Structure 配置中,创建好 Module 的 Artifacts,在其 Artifacts 的具体属性配置中,需要指定其 Post-processing 使用 build-allatori.xml 中定义的名为&你的module名字-obfuscated&的 target(我这里是 MacCameraCaptureTest-obfuscated),如下图所示:
注意红色区域里面,要把 Run Ant target 前面勾选中,然后点击其右边的&...&按钮,会出现选择窗口,你需要选择 build-allatori.xml 中定义的名为&你的module名字-obfuscated&的 target(我这里是 MacCameraCaptureTest-obfuscated)。
之后,点击 IDEA 菜单&Build&-&&Build Artifacts...&菜单项并选择&Build&命令来进行 Module 的编译构建即可。你会在 Module 的 Artifact 生成目录下看到两个 jar 文件,其中一个名为&你的Module名字-obfuscated.jar&的文件(我这里是 MacCameraCaptureTest-obfuscated.jar),那就是混淆以后的 jar 文件了;不带&-obfuscated&后缀的 jar 文件是没有混淆的版本。
另外注意,如果需要清理 Module 已生成的类文件及 jar(包括混淆版本),可以通过 IDEA 的 Ant Build 执行 build-allatori.xml 中定义的&你的module名字-clean& target,就可以彻底清除它们。
优质网站模板ProGuard官方下载_Java代码混淆器 V5.3.3 含教程 - 偶要下载站
偶要下载站 / 绿色软件下载联盟站!为大家提供一手绿色软件下载服务!
当前位置: &
> ProGuard官方下载_Java代码混淆器 V5.3.3 含教程
ProGuard官方下载_Java代码混淆器 V5.3.3 含教程
小编给大家收集了一款Java代码混淆器-ProGuard,这款软件具有Java代码优化、压缩、混淆、预校验等一系列功能,通过这款软件的使用,让java代码更加精简,ProGuard还可以结合Ant或J2ME Wireless Toolkit使用,为了帮你尽快了解与使用这款软件,小编给大家整理了java代码混淆器的使用教程、功能介绍等内容,希望对大家有所帮助。
功能介绍:
优化(Optimize):对字节码进行优化,移除无用的指令
混淆(Obfuscate):使用a,b,c,d这样简短而无意义的名称,对类、字段与方法进行
预检(Preveirfy):在Java平台上对处理后的代码进行预检,确保加载的class文件是可执行的
压缩(Shrink):检测并移除代码中无用的类、字段、方法与特性(Attribute)
ProGuard使用教程:
1、下载并安装proguard软件
2、准备好你的jar包,我在这里举例叫做test.jar
3、解压proguard,执行 bin目录下的proguardgui.bat
4、点击左边input/output 菜单
5、点击右边的add input 加入我们要混的jar包,test.jar
点击右边的add output 填入我们要输出的jar包(命名随便),这里我写 test_out.jar
注意输出的jar包,要自己手工填写
6、添加支持库,下边的 Library jars,wars,ears ..... 那个框框。点击右边的add
说明一下,这里最好将你的myeclipse里 project里的libraries所有Library的jar包,copy到一个目录,而后在这里加入这些jar包,myeclipse的环境支持jar包一般
7、做完以上步骤后就差不多了
8、点击shrinking ,设置成下图所示,可根据需要设置,这里只是我的配置)
9、点击obfuscation ,设置下图可供参考。(可根据需要设置,这里只是我的配置)
10、点击optimization 设置下图可供参考。(可根据需要设置,这里只是我的配置)
11、点击process,再点击save configuration,在弹出的对话框中,输入要保存的配置文件名称(这里我的是test.pro),最后点击保存
至些图形化的设置部分已经完成
12、最后,添加要保留的类与方法
怎么运行ProGuard?
roGuard可以通过命令行调用,如:
java -jar proguardgui.jar:启动图形化配置界面
java -jar proguard.jar @config.file &options :通过配置文件进行ProGuard处理
执行成功后,用jd-gui打开处理后的jar文件:
类已经被混淆处理了
本次为你提供的是5.3.3版的ProGuard java代码混淆器,这款软件占用系统资源少,易于使用,是android研发人员的首选软件。
界面预览图:
1.14MB | 简体中文 | ★★☆☆☆
854KB | 简体中文 | ★★☆☆☆
ProGuard官方下载_Java代码混淆器 V5.3.3 含教程
如果看不到下载地址,请更换其他浏览器!
想下载到手机上? 鼠标移动到左边二维码上扫一扫即可!
1、如果发现下载地址不能下载,请多试几个下载地址!安装及使用时出现问题,安装方法与使用教程请到官方网站获取或搜索。
2、为了保证您享受到最快的下载速度,推荐安装迅雷下载工具。如果下载后出现不能解压,请安装winrar等解压缩包软件!
3、如果下载的压缩包文件需要解压密码,网址就是解压密码:www.ouyaoxiazai.com
4、本站不提供该下载软件的破解版,注册机,注册码,序列号,注册密钥,激活码,等相关信息下载以及咨询!
免费版/简体中文/★★☆☆☆
免费版/简体中文/★★☆☆☆
破解版/简体中文/★★★★☆
破解版/简体中文/★★★☆☆
免费版/简体中文/★★☆☆☆
破解版/英文/★★☆☆☆
下载排行榜
人气下载榜
偶要下载站集绿色软件下载、手机软件与游戏、各种素材、字体下载于一身的联盟网站,致力打造一个纯绿色软件下载乐园。
本站为非营利性网站,中国绿色联盟提供的资源均来自网络收集整理,下载个人纯属学习交流之用,如有侵犯您的版权请与我联系,我们会马上改正请在下载24小时内删除!
Copyright &
偶要下载(OuyaoXiazai.Com) All Rights Reserved. 鲁ICP备号 鲁公网安备74号J2ME如何破解?
全部答案(共1个回答)
最近换了一个新手机samsung F488E,终于可以在自己的手机上耍耍游戏了(以前开发J2ME的游戏,都是用的公司测试机)。于是疯狂的下载了一些适合触摸屏240*320的 java游戏,其中有一款RPG游戏玩得很开心,可惜某些地方要发短信收费,一气之下动了破解的念头。以前做过J2ME的开发,熟知J2ME程序都会在最终发布的时候进行混淆编译,一是避免程序被反编译,二是可以大大的减小程序包体积。
破解的思路很简单:找到实际调用发送接口的方法,让它始终返回“发送成功”,于是多种工具齐上阵就开始干了。
首先需要把class文件都反编译出来,java反编译工具很多,网上评论也不尽相同,但我试过很多,面对混淆后的字节码,表现得都一样。我使用的是XJad。经过一番查找,找到这样一个方法:
view plaincopy to clipboardprint?
private static boolean a(String s1, String s2)
MessageConnecti
TextMessage textmessage = (TextMessage)(messageconnection = (MessageConnection)Connector.open(s1)).newMessage("text");
if (ad.a(messageconnection) || ad.a(textmessage))
textmessage.setAddress(s1);
textmessage.setPayloadText(s2);
messageconnection.send(textmessage);
messageconnection.close();
private static boolean a(String s1, String s2)
MessageConnecti
TextMessage textmessage = (TextMessage)(messageconnection = (MessageConnection)Connector.open(s1)).newMessage("text");
if (ad.a(messageconnection) || ad.a(textmessage))
textmessage.setAddress(s1);
textmessage.setPayloadText(s2);
messageconnection.send(textmessage);
messageconnection.close();
毫无疑问,这就是实际发送短信的地方了。我曾试着把所有反编译过来的java文件中的错误全部改掉,里面有很多乱七八糟的代码,最终自然是编译通过,但不能运行。
接下来,就要针对这个方法做处理了,有两个思路:一是直接修改字节码,把上述的"return false"的地方统统改成"return true";二是在这个方法的开始加入这段代码"if(true)"。这两个方法在理论上都是可行的。
最近换了一个新手机samsung F488E,终于可以在自己的手机上耍耍游戏了(以前开发J2ME的游戏,都是用的公司测试机)。于是疯狂的下载了一些适合触摸屏24...
轰的一声巨响,天上掉下神仙水一滴,化作一个冰封神剑,恭喜!恭喜啊! 在J2ME中,RMS作为唯一的永久性存储工具,其重要性是不言而喻的。但是很多刚刚开始学习J2...
关于Wap浏览器,即时信息内容设计,以及低级UI组件设计的问题,为了解答需求,贡献源代码,这些代码直接在eclipse+eclipseMe上可直接运行
里面实现...
在“J2ME平台上开发网络即时战略游戏”,这个话题在现今大多数J2ME 开发者听来无异于天方夜谭。即时战略游戏名字的“即时”两个字决定了复杂的运算和数据交互、稳...
J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话...
J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话...
答: 隐藏桌面只留一个需要的程序快捷捷
答: 你没有备份吧,
答: 电子政务内网安全保密内容与特征根据电子政务内网安全性产品推荐要求,涉及网络安全的产品主要有防火墙、入侵检测系统、安全审计系统、漏洞扫描系统、安全隔离与信息交换系...
海鸟的种类约350种,其中大洋性海鸟约150种。比较著名的海鸟有信天翁、海燕、海鸥、鹈鹕、鸬鹚、鲣鸟、军舰鸟等。海鸟终日生活在海洋上,饥餐鱼虾,渴饮海水。海鸟食量大,一只海鸥一天要吃6000只磷虾,一只鹈鹕一天能吃(2~2.5)kg鱼。在秘鲁海域,上千万只海鸟每年要消耗?鱼400×104t,它们对渔业有一定的危害,但鸟粪是极好的天然肥料。中国南海著名的金丝燕,用唾液等作成的巢被称为燕窝,是上等的营养补品。
嫌麻烦就把你洗衣机的型号或断皮带,拿到维修点去买1个,自己装上就可以了(要有个小扳手把螺丝放松,装上皮带,拉紧再紧固螺丝)。
你用的是工行的卡吗?到工行网站问了一下,下面是它们版主的回答——您好~
1、您可以拨打95588或通过网上银行等渠道查询消费明细。
2、若您的信用卡开通了网上银行。请您按照以下地址进行登录。工行网站地址: 点击“个人网上银行登录”或工行个人网上银行地址: 按照系统提示输入相关信息后即可登录。
“网页错误”请您进行以下操作:
(1)打开IE浏览器,选择“工具”菜单--&“Internet选项”--&“高级”标签--&点击“还原默认设置”,点击“确定”后关闭所有IE浏览器窗口;
(2)打开IE浏览器,选择“工具”菜单--&“Internet选项”--&“常规”标签--&Internet临时文件设置中的“检查所存网页的较新版本”选择“每次访问此页时检查”。并在Internet临时文件设置中点击“删除文件”,在“删除所有脱机内容”前打勾后点击确定关闭对话框,关闭所有IE窗口;
(3)打开IE浏览器,选择“工具”菜单--&“Internet选项”--&“安全”标签,在“请为不同区域的Web内容制定安全设置(z)”窗口内选择“Internet”,然后选择“自定义级别”,将“Activex控件和插件”中“下载已签名的Activex控件”、“运行Activex控件”等设置为“启用”或“提示”,点击确定后,请重新启动电脑;
(4)若您安装了3721上网助手之类的软件,请您将其完全卸载;
(5)请登录工行门户网站 ,点击“个人网上银行登录”下方的“下载”。进入下一个页面后,下载并安装控件程序。
(6)若仍无法正常使用,建议您重新安装IE6.0或以上版本的IE浏览器,并使用WINDOWS系统的UPDATE功能安装补丁。
3、您可以通过网上银行查看对账单进行还款。
4、是可以的。您需要通过网上银行办理跨行转账业务。
如果您想在网上办理跨行汇款,请使用“工行与他行转账汇款”功能,您除了需要申请开通网上银行对外转账功能,还需要您所在地区开通网上跨行汇款功能。若未开通,那么在操作时系统会提示您的(国际卡及香港信用卡无法使用此功能)。
从日起,柜台注册且未申请U盾或口令卡的客户,单笔交易限额、日累计限额以及总支付交易限额均为300元,9月1日前支付额度已经达到300元的客户需到网点申请电子口令卡或U盾(从注册日起计算支付额)。
若目前已达到交易限额但急需支付,建议您可通过下列方法变更交易限额:
1.申请U盾。u盾客户不再受交易限额和支付次数的限制。此外,使用u盾,您可以享受签订理财协议等服务项目,并在您原有使用基础上大大加强了安全性。如需办理U盾,请您本人携带有效身份证件和网上银行注册卡到当地指定网点办理U盾,办理手续及网点信息请您当地95588服务热线联系咨询。
2.申办口令卡。您本人可持有效身份证件、网上银行注册卡到当地指定网点申办口令卡。申办电子口令卡后,个人网上银行单笔交易限额1000元;日累计交易限额5000元,没有总支付额度控制;电子银行口令卡的使用次数为1000次(以客户输入正确的密码字符并通过系统验证为一次),达到使用次数后即不能使用,请及时到我行营业网点办理申领新卡手续。
考虑是由于天气比较干燥和身体上火导致的,建议不要吃香辣和煎炸的食物,多喝水,多吃点水果,不能吃牛肉和海鱼。可以服用(穿心莲片,维生素b2和b6)。也可以服用一些中药,如清热解毒的。
确实没有偿还能力的,应当与贷款机构进行协商,宽展还款期间或者分期归还; 如果贷款机构起诉到法院胜诉之后,在履行期未履行法院判决,会申请法院强制执行; 法院在受理强制执行时,会依法查询贷款人名下的房产、车辆、证券和存款;贷款人名下没有可供执行的财产而又拒绝履行法院的生效判决,则有逾期还款等负面信息记录在个人的信用报告中并被限制高消费及出入境,甚至有可能会被司法拘留。
第一步:教育引导
不同年龄阶段的孩子“吮指癖”的原因不尽相同,但于力认为,如果没有什么异常的症状,应该以教育引导为首要方式,并注意经常帮孩子洗手,以防细菌入侵引起胃肠道感染。
第二步:转移注意力
比起严厉指责、打骂,转移注意力是一种明智的做法。比如,多让孩子进行动手游戏,让他双手都不得闲,或者用其他的玩具吸引他,还可以多带孩子出去游玩,让他在五彩缤纷的世界里获得知识,增长见识,逐渐忘记原来的坏习惯。对于小婴儿,还可以做个小布手套,或者用纱布缠住手指,直接防止他吃手。但是,不主张给孩子手指上“涂味”,比如黄连水、辣椒水等,以免影响孩子的胃口,黄连有清热解毒的功效,吃多了还可导致腹泻、呕吐。
合肥政务区网络广告推广网络推广哪家公司比较好 一套能在互联网上跑业务的系统,被网络营销专家赞为目前最 有效的网络推广方式!
1、搜索引擎营销:分两种SEO和PPC,即搜索引擎优化,是通过对网站结构、高质量的网站主题内容、丰富而有价值的相关性外部链接进行优化而使网站为用户及搜索引擎更加友好,以获得在搜索引擎上的优势排名为网站引入流量。
良工拥有十多位资深制冷维修工程师,十二年生产与制造经验,技术力量雄厚,配有先进的测试仪器,建有系列低温测试设备,备有充足的零部件,包括大量品牌的压缩机,冷凝器,蒸发器,水泵,膨胀阀等备品库,能为客户提供迅捷,优质的工业冷水机及模温机维修和保养。
楼主,龙德教育就挺好的,你可以去试试,我们家孩子一直在龙德教育补习的,我觉得还不错。
成人可以学爵士舞。不过对柔软度的拒绝比较大。  不论跳什么舞,如果要跳得美,身体的柔软度必须要好,否则无法充分发挥出理应的线条美感,爵士舞也不值得注意。在展开暖身的弯曲动作必须注意,不适合在身体肌肉未几乎和暖前用弹振形式来做弯曲,否则更容易弄巧反拙,骨折肌肉。用静态方式弯曲较安全,不过也较必须耐性。柔软度的锻炼动作之幅度更不该超过疼痛的地步,肌肉有向上的感觉即可,动作(角度)保持的时间可由10馀秒至30-40秒平均,时间愈长对肌肉及关节附近的联结的组织之负荷也愈高。
正在加载...
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区以下为达鸿飞演讲实录:
下面这张照片拍摄于2013年底,当时上海有一个叫「比特创业营」的组织,当时vitalik来中国做了一次活动,那个时候我们萌生了做一个服务于数字资产的组织的念头。
关于NEO的早期历史,我们是在 ...
& & 对于大数据领域的应用,当然是最多用户数的互联网三大巨头掌握数据最多了。那么,现在问题来了:&腾讯,阿里,百度,大数据能力哪家强?& & & 大数据有多可怕?你上网买东西搜索了一款 ...
通过AI实现让机器人探索大自然,建立媲美自然的数字神经系统,或者战胜重大疾病等远大的目标,这些想象虽很美好,但却需要厂商持续不断的海量投入和长远的攻关,起码在现阶段仍不可能完成。
解读阿里云AI产品矩阵:目标是打造最强中国云计算能力
广东哪家SAP实施公司技术能力比较强? 鼎捷?神码? 实施, 公司, 技术, 能力 ...
请教哪个J2ME混淆器的混淆能力最强,包括商业的和免费. 有网站,或者那些成功案例没有。 ...
孙正义说道:&我真的相信这一点,一台电脑的智商是一个普通人的1000倍,现在甚至一双鞋的计算能力都比我们人类强。&
现场也有人士提出,计算机的崛起是否会对我们人类本身产生威胁,孙正义说:&这将 ...
认为,谷歌的流量获取成本超过其通过Safari搜索栏获得的营收的60%,也就是说,苹果2014年的营收份额远超20亿美元。但10亿美元表明比例只有34%,说明苹果在谈判中的地位并不像之前想象得那么强。考虑到苹果那些慷慨的移动用户给谷歌带来的价值,这一价格 ...
from:https://36kr.com/p/5103044.html
到2020年,大多数先进的ML袖珍电脑(你仍称之为手机)将有能力执行一整套任务。个人助理将变的更加智能,它是打造这种功能的切入点。语音识别会不断优化。私人助理将 ...
本文讲的是一张图看懂CIA:攻击能力强是有原因的,日,维基解密曝光了CIA一系列敏感数据。这是继斯诺登泄露NSA数据之后又一大国家级机密信息泄露,维基解密将其称之为Vault 7,是CIA史上最大规模的机密文档泄露。本文讲的是一张图看懂 ...
7月10日,由紫金传媒智库和大众证券报联合举办的&2016中国A股上市公司创新指数发布会暨首届中国上市公司创新领袖论坛&在南京举行。会议发布了中国A股上市公司创新能力500强榜单,这是国内首个依托大数据研究的上市公司创新能力报告 ...
个人一起签,要让与社会交流多、表达能力强的人为主导,这个时候就不要想着表现T的面子问题了。以我和我老婆为例,她是做外贸的,我是做IT的,我在语言表达上确实不如她,第一次面签以我为主,第二次改成以她为主,效果就是一个地下一个天上;这就是职业与性格造成的巨大 ...
着我国实现了从&2G跟随&&3G突破&到&4G同步&的跨越,不但产业研发能力显著增强,形成了完整的产业链,而且成为国际标准的主要制定者之一。据统计,2016年末我国移动电话用户数达13 ...
追求财富是中国人生活的一部分。做生意、挣大钱也成了许多年轻人的愿望。汉语中有许多有关钱财的俗语,比如&有钱能使鬼推磨&等。本文盘点中国赚钱能力最强的16类人,国际连锁企业管理协会与您分享:1、很聪明的人读书学习好与坏与做生意赚钱 ...
想请个实战能力强一点的FI CO 顾问,教我跑一遍FI&&CO 模块系统, 目前,我一心想学FI CO 模块,一些理论知识,公司财务,实践了不少,也研究了一些, 现在就想找个实战能力强一点的FI&&CO 顾问在系统 ...
据HPE的一位高管称,相比市场领导者Nutanix来说,HPE的超融合产品有更强的能力、可扩展性和可用性,成本也要比Nutanix低25%-30%。
&我们最近发布的软件提供了大量功能,更好的节点支持,从冗余性和高可用性方面都具有突出 ...
相信这一点,一台电脑的智商是一个普通人的1000倍,现在甚至一双鞋的计算能力都比我们人类强。&
现场也有人士提出,计算机的崛起是否会对我们人类本身产生威胁,孙正义说:&这将取决于人们的反应,我相信人工智能将成为我们的合作伙伴 ...
在一种全新的运动能力评估模型中,通过三个数字就能够反映运动员在短距离、中距离及长距离跑步比赛的能力。
将短跑运动员与长跑运动员来进行能力对比显然是不公平的。长跑与短跑对身体有着不同的要求,这也就是为什么好的短跑运动员完全无法适应马拉松对身体 ...
关系数据库: 具备复杂检索能力,但受限于数据存储规模和录入速度不足
NOSQL 数据库 :具备可扩展性和高性能,但受限于检索和分析能力不足
HADOOP &:具备数据分析能力和可扩展性,但受限于数据处理实时性不足 ...
的动力来至设置在一个场外的电源上。
在ihmcRobotics发布的最新资料中展示了人形阿特拉斯机器人逆天的平衡能力,它单脚站在只有2CM厚的胶合板边缘,并且能够保持长时间的平衡。通常机器人是无法保持这种长时间的平衡,控制算法是由 ...
共有8056页
你可能感兴趣获取验证码
暂停使用,请使用开发者账号登录!
秒之内仍未收到,请
积分831&学分104 &来自黑龙江-鸡西市&
J2ME--丰富多彩的领域中生机勃勃的技术
J2ME的由来
J2ME体系结构??Configuration和Profiles
J2ME主要标准简介
J2ME的平台无关性和标准的兼容性
其他非J2ME标准的相关技术
无线Java技术
移动信息设备的主要操作系统平台及其对J2ME的支持
移动信息设备上J2ME开发的现状和前景
Also in the Java zone:
工具与产品
代码与组件
中科院自动化所人工智能实验室博士生
明天的计算将进入普及计算时代。各种消费电子产品,包括智能手机,PDA,Web-TV,将来的信息家电等等将实现随时随地的计算。这是一个异常广阔和丰富多彩的领域,其设备极度多样化而且都将在网络中,Java技术的跨平台性和网络功能在这里大有用武之地。这就是J2ME,这一丰富多彩的领域中生机勃勃的技术。但是,这一领域的多样性和J2ME标准的复杂性很容易让初次接触者困惑。如果他试图写一个能在自己的PDA上运行的程序,很有可能会遇到许多困难,因为已有的旧的技术很有可能会被放弃,真正适合PDA的标准尚未完成,多种多样的标准和技术本身也在迅速发展变化。为此,本文的重点不在于具体的编码细节,而在于从概念上更准确地表述J2ME的体系结构,帮助读者理解和把握这些复杂的标准。并且从宏观上描述平台和标准的发展,分析在移动信息设备上开发J2ME应用的现状和前景,尽量让读者能够从全局上把握复杂的局势,为将来的发展做好准备。
在今天计算已经无处不在。越来越多的人开始认为,经过了许多人共用一台计算机的大型主机时代,一人一台计算机的个人PC时代之后,下一个时代就是一人多台计算设备的普及计算时代(Ubiquitous Computing,IBM称之为Pervasive Computing)。计算设备将从单一的PC扩展到各种各样的大小和功能,从家庭消费电子产品,到个人随身携带,穿着,车载的各种移动信息处理设备,多样化是这个领域的最大特点。
网络是这个领域最重要的增值特性。当手机可以随时随地无线上网,PDA可以和个人PC同步,车载PC可以获得网上GPS地图数据时,这些孤立的设备才能够发挥最大的作用。
而平台无关性和网络功能正是Java的设计目标和能力(事实上,Java最初的设计目标就是用于消费电子领域,但是后来在PC和服务器上得到了发展)。&一次编写,到处运行&的平台无关性,对网络,多重设备间联网的机制(JINI)显然对这个领域是至关重要的软件条件。这个领域内的Java标准就是J2ME。
J2ME的由来
Java的最大目标和特点,就是&一次编写,到处运行&的平台无关性。但是,很自然的,正如Sun认识到的,&One size does?nt fit all&,一套标准无法适应各种不同的需求。因此,Java技术目前共有三套,分别针对不同的平台和应用。
Standard Edition (J2SE,标准版):针对桌面端PC和工作站的个人和低端商务应用。
Enterprise Edition (J2EE,企业版):针对服务器端企业级应用,支持Servlets, JSP和XML等等。
Micro Edition (J2ME,袖珍版,也有翻译为小型版或者移动版的。)针对有限内存,显示和处理能力的设备,主要是消费电子和嵌入式设备领域(这实际正是Java语言设计最初的目标领域)。
注:Java SDK 1.2及以后的版本都统一改名为Java 2,因此这些名字中都有2。
在消费电子和嵌入式设备领域,内存从几百K到几十M,从没有屏幕到Web-TV,CPU从低功耗的嵌入式处理器到206MHz的RISC处理器,硬件条件的差异是相当大的。这就使得J2ME的标准需要有不同的层次和类别来适应这个复杂的领域,因此相比之下J2ME就比J2SE和J2EE的标准要复杂得多。关于J2ME标准的文章已经有了不少,但是很少有文章清晰扼要地讲清楚J2ME的体系结构划分的原因,而只有清楚了划分的根据和为什么这么划分,才能够更好地理解标准。尤其是因为硬件发展速度是很快的,很有可能一段时间之后,如果还按最初标准的字面定义区划分设备就会陷于迷惘。作者阅读和浏览了相当多的文章和介绍,但有些问题也还是最近才认识得比较清楚,在此和读者分享我的认识,也希望得到建议和指正。因此,下面的介绍尽量不去重复其他文章中都已介绍过的一些具体细节,不去翻译规范的字面定义,而是分析规范制定的原因,类别划分的真正标准,从开发者的角度,让读者能够在这个复杂而多变的领域中更准确地把握技术的区别和趋势脉搏,更好地为将来广阔的机会做好准备。
J2ME体系结构??Configuration和Profiles
针对消费电子和嵌入式设备领域丰富多样的设备和彼此相差极大的计算能力及各种硬件条件,J2ME首先根据最基本的一些特征把它们划分为两类。
具备间断网络通讯能力的个人移动信息设备:如手机,双向呼机,PDA(Personal Digital Assistant,个人数字助理,也称掌上电脑)等等。
有固定的不间断网络连接的共享连接信息设备:如置顶盒(set-top boxes),Web-TV,支持Internet的有屏幕电话,汽车娱乐/导航系统等等。
Sun的J2ME FAQ(常见问题集)里有一个很好的概括:J2ME技术有两个设计中心??手持的设备,和可以插到墙上插座的设备。第一类设备往往是个人化的,移动的,使用电池,体积和功耗都有限制,因此功能和计算能力有限。第二类设备一般是固定的,因此体积没有太大限制。由于固定,可以有持续电源供应,因此功耗没有太大问题,计算能力相对充裕。
计算能力是这两类设备的主要区别,对其上可能的应用和环境显然有着本质影响,不同类别的设备不可能采用同样的Java平台,必须分别定义。针对这两大类设备的平台规范就是Configuration(有译为配置的,不过我认为最好不译)。第一类设备的Configuration称为CLDC(Connected, Limited Device Configuration),第二类称为CDC(Connected Device Configuration)。
属于同一类的设备计算能力是相似的,但是其他功能和条件还有非常大的区别。作为Java平台必须保证相容性,这就必须舍弃所有的设备特殊性。因此,Configuration就是支持一组通用设备的最小Java平台,作为这些设备的最小公分母来保证不同设备间的平台相容性。这里的Java平台主要是指Java虚拟机(JVM)和核心库。
在Configuration中舍弃了设备的特殊性来保证Java平台的相容性,但是仅仅有Configuration显然是不够的,特殊的具体设备其独有的功能和硬件条件都没有得到支持。为此,在Configuration的基础上,根据设备具体功能再进行一次划分,比如智能手机,PDA等等。功能的划分也就是其他硬件条件的划分,比如屏幕大小,内存,计算能力,电力供应等等都是从属于功能的,因此同功能的设备的硬件条件都是非常相似的。Profile(译为简表或者简档)就是针对每一类功能设备的特殊性定义的与设备特性相关的API,建筑于Configuration之上,作为Configuration的扩展和补充。例如MIDP(Mobile Information Device Profile,移动信息设备Profile)就定义了关于移动信息设备(主要指智能手机和一部分具有无线通信功能的PDA)的图形界面,输入和时间处理,持久性存储,短消息等等的API,并且考虑到了移动信息设备的屏幕和内存限制。而正在制定中的PDA Profile则定义了针对PDA的API,其屏幕,内存条件都要大于MIDP,但是网络方面的要求则显然和手机有所不同。如下图所示,同属于一个Configuration的设备根据功能不同由不同的Profile来支持,Profile体现设备的特殊性,但是都建筑在一个共同的基础Configuration平台之上。
关于J2ME的体系结构,我们可以这样总结:
Configuration的分类是根据计算能力的不同来划分的,同类设备的计算能力相近。Configuration是一个规范,定义了这类设备的共同Java平台,定义与设备无关的Java虚拟机和核心库,是平台相容性的基础。Profile的分类是根据设备功能划分的,同类功能的设备其他各种硬件条件和需求也相近。Profile是一组API,在某一Configuration的基础上扩展了针对设备特定功能的API,使得标准能够完全适应特殊的设备,彻底发挥设备的功能。
J2ME体系的一般结构是:由Configuration定义的Java虚拟机运行于设备的宿主操作系统之上,构成整个平台的基础。Configuration提供了基本的语言特性,Profile提供针对设备的特殊功能API和扩展类库。应用程序的运行环境需要一个Configuration和至少一个Profile,多个Profile可以共存,也可以叠加。
我们用两个具体设备的实现作为例子说明。在一个运行Palm OS的PDA上,Configuration采用CLDC,虚拟机采用KVM(虚拟机和Configuration是紧密相连的,KVM只是CLDC定义的一个参考实现(reference implementation),并不是唯一的选择),然后采用PDA Profile的Profile。在另一个运行Symbian的智能手机上,则可以采用KVM,CLDC,MIDP。
注:在JCP(Java Community Process,J2ME标准在这里制定)的网站上已经提出了JSR 68(Java Specification Request,标准提案),将在下一代J2ME标准中用Building Block概念来取代Configuration。其原因是,Profile经常需要提供J2SE中已有的功能,为了能够利用已有的J2SE API而不是重新制定新API,引入了Building Block概念。一个Building Block定义一个来自J2SE或者J2EE的API以用于J2ME。这样,Profile就可以通过Building Block来利用已有的API。
积分831&学分104 &来自黑龙江-鸡西市&
J2ME主要标准简介
J2ME的标准很多,其中许多细节凡是关于J2ME的文章都会介绍,这里我们只简要介绍几个基本而重要的标准。读者也可以直接去查标准的正式文档,在JCP网站可以找到所有J2ME标准和规范,包括还在提出和审核阶段,没有正式成为标准的提案。
虽然J2ME标准繁多,但只要把握住标准划分的原因就很容易掌握。在这个技术飞速发展的领域,我们不能把眼光局限于标准的字面含义,而要灵活掌握,把握其精神。比如,CLDC和CDC的定义中具体的最小内存需求仅仅是&最小的&,随着硬件能力的飞速发展,很有可能一些界限会变得模糊。PDA本来应该属于CLDC的范围,但是Compaq的iPaq上却实现了CDC。以后的下一代PDA有64M内存并不意外,在其上实现CDC也是完全可能的。但是,从功能的角度,应该还是CLDC以及PDA Profile更适合于PDA的条件。到那时,具体的实现就要看厂商和开发者的选择了。还需要注意的是,由于Profile是建于Configuration之上,作为对Configuration的扩展,因此Profile必须Configuration的支持。有的文章在讲到MIDP的内存需求时,说MIDP需要最少256K,这是指MIDP本身。而有的文章说MIDP需要最少768K,那时因为把作为基础的CLDC所需要的512K算进去了。
CLDC(Connected, Limited Device Configuration)针对个人化的移动的有限连接信息设备,例如智能手机,双向呼机,PDA等等。其要求是:
512 KB 以下内存
有限能源供应(通常使用电池)
有限或非持续网络连接
简单的用户界面(甚至没有)
在如此严格的限制之下,CLDC 只包括四个包,其中三个来自标准 Java 规范并且作了缩减(java.lang、java.util 和 java.io),另一个专门针对 CLDC (javax.microedition)。
包 描述 类和接口数目
java.io 系统输入输出 18
java.lang Java 编程语言的基本类 38
java.util 集合、日期和时间支持、各式实用工具类 10
javax.microedition 通用连接框架(Generic Connection Framework) 10
表 1. CLDC 中的包
CLDC必须照顾最苛刻的硬件条件,因此去掉了许多重要的类和特征,只保留了最核心的一些基本类。例如RMI和映射因需要内存太多而被舍弃,错误处理要求的代价太高,也被删除了。许多设备不能支持浮点数,更不用说双精度类了。还有许多设备没有或不提供访问一个文件系统的功能或权限。不过请放心,对于那些能够支持更多特征的设备,它们所需要的这些功能或者超出标准J2SE要求的功能,都可以由针对此类设备的Profile来补充。
CLDC中唯一新增的javax.microedition包定义了一个通用连接框架(Generic Connection Framework,GCF)。通用连接框架把J2SE中的文件,sockets,HTTP请求和其他输入/输出机制的概念抽象为更简单的一套类。可以说,它提供了java.io和java.net的同样功能,却不需要设备的特殊能力。与底层操作系统无关是Configuration的基本要求。通用连接框架可以看成是构造通讯驱动的框架,这一点类似于J2SE中的JDBC,后者是一个构造数据库驱动的框架。通用连接框架并没有定义对任何特定协议的支持,但是在Sun的一个CLDC参考实现中确实包括了对一些通讯协议的支持,这点使许多人感到困惑。那些协议只是一些例子,协议的支持应该在Profile层或者专门针对某设备的扩展中定义。
由于虚拟机处于Configuration中定义平台的核心,Configuration和虚拟机是紧密相关的。既然CLDC的硬件要求如此苛刻,对其虚拟机也就有着非常高的要求。Sun提供的参考实现是KVM(K Virtual Machine)。KVM是完全从头开始编写的,其设计目标包括:
虚拟机的大小和类库为50到80KB左右
内存占用为几十K
在具有 16 位和 32 位处理器的设备上,有相当的性能
高度可移植和可扩展,特定于机器和/或平台的代码的总量很少
多线程和垃圾回收是独立于系统的
可以对虚拟机的组件进行配置,以适合于特定设备,从而增强了灵活性
KVM的实现是相当成功的。最早在1999年JavaOne大会的时候,作为Sun的Spotless计划派生结果,Sun分发了许多Palm V,提供了Palm OS上的第一个KVM版本和一个实验性的类库com.sun.kjava。这一KVM非常小而紧凑,只需要几十K内存。而com.sun.kjava类库提供了Palm的图形用户接口,Palm数据库访问,简单的集合类等等。将两者结合,开发者就可以开发Palm上的Java应用,因此它受到了开发者的广泛欢迎,网上也有了许多教程和示例代码。事实上,到目前为止,这都是在Palm上开发Java程序的唯一合理途径。CLDC没有定义用户界面等API,MIDP并不适合PDA,对应的最合适J2ME标准是PDA Profile,但是尚未完成。许多开发者强烈要求Sun在正式的J2ME标准中继续支持它,但是Sun已经放弃了这一技术,而且并不保证正式的PDA Profile与之的兼容性,因此我们不建议读者过多研究。
由于这一历史原因,造成了很多名词上的困扰。许多早期的文章把这一KVM与com.sun.kjava包合称为KVM,表示这一技术,而现在所说的KVM应该是单单指Sun的CLDC虚拟机参考实现。甚至还有人用K Java作为J2ME的代称,表示基于KVM的Java,这很容易和正式的J2ME标准以及早期的com.sun.kjava包相混淆,读者在看这类文章时需要注意文章的时间和背景,并采用严格的正式名称。
目前Sun还正在开发KVM的一个高性能版本--Project Monty虚拟机以用于下一代的移动信息处理设备。它采用了Hot Spot的技术,性能将比现有的KVM将近高一个数量级。
虽然KVM作为Sun的参考实现最经常被提到,不过并不等于一定要用KVM。其它公司的虚拟机只要满足相应的Configuration里的定义,通过兼容性测试,一样可以作为Configuration的虚拟机。目前IBM WebSphere Micro Environment,已经通过了&Java PoweredTM&认证,其J9虚拟机在相当多的平台上通过了J2ME兼容性测试:
MIDP(Mobile Information Device Profile)定义了针对移动信息处理设备(主要指智能手机和一部分具有无线通信功能的PDA)的图形界面,输入和时间处理,持久性存储,无线电话网络连接之上的一些消息处理(例如短消息),安全等等API,并且考虑到了移动信息设备的屏幕和内存限制。类似于J2SE中的Applet框架,MIDP提供了基于javax.microedition.midlet 包的MIDlet应用程序框架。
由于MIDP提出较早,目前重要的智能手机和PDA操作系统上都已有了相应的实现(后面将简要介绍这些操作系统),网上也有许多教程与文章,一般所谓的Wireless应用文章都是关于MIDP的,这里就不再重复了,读者可以参考文末的资源。
PDA Profile
PDA Profile将在CLDC的基础上,提供针对PDA的用户界面,数据存储等扩展API。用户界面部分适用于有限大小和色彩的显示,为了支持开发者已有的经验基础,将是AWT的一个子集,也有可能在AWT子集之上加入MIDP用户界面组件。而存储机制将是简单的,平台无关的,类似于MIDP中的存储,为应用程序、数据、配置/环境信息提供简单的数据存储。
目前这一规范正由Palm Source公司(从Palm公司分离出来的专门负责Palm OS的公司)领导主持,已经在4月8日开始进入了JCP流程的第二阶段Community Draft最后部分(Community Draft Ballot 08 Apr, 2002 ),估计最终正式版本应该在7月至9月左右完成。(参考http://jcp.org/introduction/timeline/index.en.jsp)前面已经提到,PDA Profile将取代 k java,作为针对PDA的正式J2ME标准。因此建议希望在PDA上开发应用的开发者等待这个标准的出台和相应的实现,现在如果要进行MIDP的应用开发,则应明确其目标是智能手机类的设备,而不是PDA,这一点很多文章都没有讲清楚。
CDC(Connected Device Configuration)针对有固定的不间断网络连接的共享连接信息设备,如置顶盒(set-top boxes),Web-TV,支持Internet的有屏幕电话,汽车娱乐/导航系统等等。
CDC要求为Java提供至少2M的内存,这可以是ROM加上RAM,也就是说,Java虚拟机和核心类库很有可能放在ROM或者Flash里。事实上,下一代无线手持设备完全可以满足CDC的需求。
CDC是CLDC的完整超集,包含了所有的CLDC规范。另外,在相对充裕的条件下,它支持J2SE的标准 Java 虚拟机和一部分核心类库。对于这一点,几乎所有的文章都这么说,却很少有文章彻底分清彼此之间的兼容性关系,甚至还有文章错误地说CDC支持Java语言的完整实现,这是很容易引起混淆的。
首先可以肯定,既然CDC是CLDC的超集,基于CLDC的程序在CDC内是完全兼容的。不过这里的CLDC程序必须只用到CLDC的部分,一旦采用了某一个Profile,显然也就不能在CDC内兼容了。
其次,CDC支持标准的J2SE虚拟机,这只是Java平台的基础,并不包括建筑于平台基础之上的各种类库。特定设备需要的特定类库由相应的Profile来定义。这一点随后就会提到。还是那个关键:Configuration定义的是一类设备的与设备无关的最小平台,因此,诸如用户界面之类的类都被分离,留在Profile中定义。
虽然CDC支持标准的J2SE虚拟机,但是标准的Java虚拟机显然无法适应有限的资源环境。为此需要专门定义一个虚拟机,称为CVM(开始的时候,CVM代表Compact Virtual Machine,但是后来Sun的工程师认为这有可能与KVM相混淆,因此现在C并不代表特定的含义)。CVM除了支持标准J2SE虚拟机的所有特性外,还支持许多嵌入系统需要的特性,更适合于在资源限制条件下运行,移植性很强。目前Sun提供了Linux和VxWorks之上的CVM参考实现(reference implementation)。
Foundation Profile
Foundation Profile提供除了用户界面以外CDC所缺少的几乎所有标准J2SE核心类库,作为其他所有Profiles的基础(我们看到,多个Profile可以共存,也可以叠加)。
Personal Profile
Personal Profile针对那些资源相对有限,但是需要高度的Internet和WEB连接支持的设备,例如Web-TV,汽车导航系统等等。它在Foundation Profile的基础上提供了网络特性以及支持Java applets的 GUI。
Personal Profile的前身是Personal Java,Personal Java是Sun为资源限制设备创建 Java 平台版本的早期尝试。Personal Profile将与Personal Java 1.1和1.2向后兼容。
RMI Profile
RMI Profile在Foundation Profile的基础上提供RMI支持,将允许网络设备与其它系统应用程序(不一定是J2ME的)交互操作。
J2ME的平台无关性和标准的兼容性
平台无关性主要指的是设备的宿主操作系统平台。由于Java平台建筑于虚拟机之上,只要不同的操作系统上的虚拟机满足同样的规范和标准,对于虚拟机以上的层次是平台无关的。这使得针对某一Configuration或者Profile的应用可以运行于所有实现了这一Configuration或者Profile的操作系统平台。举例来说,目前已经有网站开始收集基于MIDP的程序??MIDlet,提供下载和收费,各种支持MIDP的设备都可以使用,这包括数量巨大的智能手机和几乎所有的PDA(Palm OS和Pocket PC)。
对于Profile而言,不同的Profile之间一般是不相容的,比如日本NTT 的DoCoMo已经销售了相当多的支持CLDC的手机,但是使用的是自己专用的Profile,针对这一Profile的程序对其他Profile也就是不兼容的。事实上,由于Profile是针对设备功能的,不同的Profile针对的设备,往往功能上有着较大差别,程序的相容性既不可能也无太大意义。当然有一些设备的功能划分不那么明确,比如有无线通信功能的PDA和智能手机。由于一个Configuration之上可以同时有多个Profile,Profile之间也可以嵌套和叠加,例如CDC的Foundation Profile就是其他各种Profile的基础。那么这些设备就既可以采用MIDP也可以采用PDAP,在以后的硬件基础上,同时装多个Profile也完全没有问题。
有的文章里说,J2ME为了能够在计算能力有限的设备上运行,舍弃了J2SE的许多特性,因此J2ME是J2SE的子集。这样的说法没有强调J2ME里因为设备特殊性而增加的内容,因而是不准确的。除非程序只用到这些平台间共同的部分,否则是不能相容的。而一般来说,共同的部分是相当有限的。
其他非J2ME标准的相关技术
积分831&学分104 &来自黑龙江-鸡西市&
还有一些技术和J2ME相关,但是并不属于J2ME,我们在这里作简要介绍。
Java卡(Java Card)是为智能卡(smart cards)设计的。Smart cards的内存非常有限,为此限制了类的数目(例如,没有Windows系统类),并把整个Java Card规范在一个二进制核心里实现,然后用Java封装。由于智能卡的功能很简单而容易掌握,类不需要频繁改变,这一方法效果很好(对于J2ME显然不能使用这种方法)。另外,由于每一个Java卡应用的数据和代码是独立在沙箱(sand box)内执行的,一张卡上可以有多个应用,彼此独立,并且很安全,这样就实现了一卡多用,不需要在钱包里装太多的卡。
虽然Java卡是为智能卡设计的,不过也可以用于许多其他地方。例如1998年的Java One大会上的Java戒指(Java Ring,又名 Java-Powered iButton,事实上只是Java Card的另外一种型态,Dallas Semiconductor公司将它制作成为钮扣的形状,进而镶嵌在戒指之上),或者世界上现在发布的数百万张GSM SIM卡。
Embedded Java
Embedded Java是历史上Sun另一次创立嵌入系统Java平台的尝试,针对有间断的网络连接或者没有网络连接的设备,这些设备经常是没有图形界面的。Embedded Java的设计更接近于J2SE,但是因此太大太慢,而且对系统要求过高。另外,Embedded Java将控制其运行的平台,也就是接管所有的系统调用,所有的库,所有的设备。显然提供平台的公司不会喜欢这一点。因此,Embedded Java基本上完全失败了。
WAP(Wireless Application Protocol,无线应用协议)是XML的一个应用,其目的是在无线设备如手机上显示Internet内容。由于无线设备的显示区域有限,需要将标准的HTML重新调整以适应硬件条件。
许多初听说J2ME的人都会想到WAP,其实WAP和J2ME并不冲突,而且是很好的互补。WAP对于文本为主的内容是很合适的,需要持续的网络连接。但是对于图形较多的应用WAP就不太合适,只能提供轻量级的脚本执行能力。WAP的网关也有安全性问题。而Java技术可以用于间断的网络连接,可以将应用和服务逻辑在设备和服务器间分离,很适合于图形应用,有很稳定而可靠的安全模型。
结合WAP和Java技术的一个方法是在设备上安装一个WAP浏览器,并且实现CLDC和MIDP及其与WAP浏览器之间的通讯。也有一些WAP技术是用Java实现的,比如K Browser(http://www.4thpass.com)就是一个用Java实现的浏览器,运行于J2ME之上。
无线Java技术
无线这个概念在J2ME的相关文章中经常出现,但是
无线Java不等于J2ME。J2ME中,无线设备只是其中的一小部分。而无线Java技术也可能包括这种情况:在笔记本上运行J2SE应用,通过802.11 LAN连接网络。
MIDP不是全部的J2ME。MIDP发布最早,因此也得到了最广泛的支持,相关的讨论和文章因此也非常多,但是J2ME当然不仅仅是MIDP。
MIDP不是全部的无线Java技术。还有许多其他Java技术属于无线技术,比如Personal Java,PDA Profile,甚至无线设备上的J2SE。
移动信息设备的主要操作系统平台及其对J2ME的支持
在消费电子和嵌入式设备的广阔领域中,目前最受关注的是移动信息设备,因此有必要介绍一下移动信息设备的主要操作系统平台,这对J2ME的开发是相当重要的。移动信息设备主要包括PDA和智能手机,现在和将来都还会有一部分设备处于PDA和智能手机交界的位置。其中手机的市场远比PDA要大得多,所以许多国外谈到J2ME的文章都是以Wireless应用为主。
PDA也即掌上电脑,一般是指类似于Palm公司出品的Palm这样的设备,主要的操作系统有Palm OS和Pocket C两大阵营。Palm OS来自Palm公司,是一个开放的系统,在PDA市场上占主导地位,已经有非常多的第三方厂商开发的应用和一大批非常忠实和狂热的用户。目前采用Palm OS的主要有Palm公司的Palm系列和Sony公司的Clie系列(Handspring公司的Visor也属于这类产品,但是已经宣布退出传统PDA市场,主要发展PDA和无线通讯结合的产品Treo)。
Pocket PC是微软及其合作伙伴Casio、Compaq、Hewlett Packard和Symbol推出的,基于Win CE 3.0,也是一个开放的标准系统,功能可以扩展(以往的Win CE是一个封闭的不可扩展的系统),在这个平台上厂商可以自己开发软件。具体产品如Compaq的iPAQ。
另外,Sharp公司Zaurus系列PDA采用Linux的一个针对嵌入式系统的版本。作为拥有高达64M内存的高端PDA,可以满足CDC的标准,预装了Personal Java的虚拟机。
在智能手机领域,主要的平台是Symbian的EPOC。EPOC最早由Psion开发,主要面向智能手机,也有PDA的特征,Psion就是第一批主要的PDA厂商之一。Psion宣布EPOC的第一个版本是开放的OS,并向其它厂商授权,随后Psion与Ericsson,Nokia,及稍后的Motorola建立了名为&Symbian&的联盟,目前主要股东为Motorola, Nokia, Panasonic, Psion和SonyEricsson,而且Siemens4月也宣布加入。Symbian在欧洲有很好的基础,为大多数主要手机厂商所采用,典型的产品如Norkia的9210。
图5:Norkia 9210
Symbian向领先的软硬件开发商开放源代码--所谓的Platinum Programme。从Symbian OS 5起开始支持java,OS 6引入了Personal Java和Java Phone(在Personal Java基础上的一个扩展API,主要针对手机),OS 7开始支持CLDC和MIDP(部分基于6.0和6.1的产品也支持)。
另一方面,微软则有PocketPC 2002电话版和SmartPhone 2002(又称Stinger)与Symbian竞争,显然,前者是有无线通信功能的PDA(前面提到的Handspring新推出的Treo就是这类产品的典型),后者是有智能处理功能的手机。
移动信息设备上J2ME开发的现状和前景
在前面提到的这些操作系统平台中,Palm OS上已经有了MIDP的参考实现,但是并不是最适合PDA的Profile。Symbian实现了CLDC和MIDP,作为智能手机的操作系统,是理想的MIDP应用平台。在Compaq的iPaq上已经实现了CDC(基于Pocket PC),另外前面提到过,IBM的WebSphere Micro Environment在Pocket PC上实现了CLDC,CDC和MIDP。Sharp的Zaurus实现了Personal Java(基于Linux)。可以看到,在硬件条件较好的PDA上(Pocket PC和Zaurus都使用Intel Arm CPU,比Palm使用的Motorola DragonBall系列性能要高得多)都可以实现CDC的标准。由于这些主要操作系统平台都是开放的,基本可以相信,主要的移动信息设备操作系统都将一直提供J2ME的支持,但是具体支持哪个标准则并不一定死板地按照CLDC和CDC的最初定义,和设备的硬件条件和厂商的选择有关,或者可能同时实现多个标准。
关于移动信息设备上J2ME应用的具体开发,现有的文章和技术基本分为以下几类:
采用早期的KVM和com.sun.kjava包,或者加上第三方的k awt类库。有很多早期的文章和代码,但是这一技术将被PDA Profile取代,而且不保证兼容性,不建议开发者采用这一方法,而是等待PDA Profile的最后完成及其实现。
采用CLDC和MIDP开发。由于MIDP标准发布较早,智能手机的市场也远比PDA大得多,这是目前大量的无线应用文章的主要内容,不过它最适合的目标是智能手机,虽然智能手机可能有一定的PDA的功能,但是这一技术并不是最适合PDA的,开发者需要考虑清楚。
采用CDC和Personal Profile,这样的文章不太多见,目前的移动信息设备硬件能力还有所不足。但是下一代的PDA和智能手机肯定可以支持。
就现有的PDA硬件条件而言,J2ME应用要和已有的应用竞争还有比较多的困难:
空间:现在一般的Palm类设备内存从2M到16M不等(目前较高档的机型都已支持扩展卡,可以扩展到128M,但是卡上运行程序的速度要慢得多,一般主要用来放数据,运行程序不能依赖于卡),Palm上一般现有程序的标准大小是几十K到300K以下。而仅MIDP的Palm参考实现库在Palm上就需要将近600K,再加上作为基础的CLDC库,加上程序,就快要接近1M了。和已有的应用相比,目前是没有太大竞争力的。
速度:由于Palm一直信奉的是&简单就是美&的原则,目前的Palm系列PDA主要用的是33MHz 的Motorola 68000系列DragonBall,这虽然带来了成本的降低和节电性,但J2ME应用的性能很难让人满意了。作者在自己的Palm m100(入门机型,但是Palm系列各机型的CPU速度基本上是一样的)测试过一些演示程序,一般都有两三秒钟的启动延迟。
功能:目前最适合Palm的PDA Profile尚未完成,如果用MIDP开发则不太合适,用早期的KVM和com.sun.kjava则因为不是J2ME标准,程序兼容性无法保证。
虽然如此,但是在移动信息设备上开发J2ME应用的前景还是非常美好的:
硬件的发展:目前的Palm配8M到16M内存已经是主流,下一代超过32M是必然的趋势。Palm OS 5终于开始支持32位的ARM RISC处理器,其速度应该能够提高10倍以上。事实上,Sharp公司今年第一季度发售的Zaurus SL-5500已经采用了Intel 206MHz StrongARM处理器和64M内存,在这样的硬件上速度和内存都不会成为问题。
标准的完善:PDA Profile今年内将最后完成,可以预计很快会在主要操作系统上得到实现。目前在JCP也有许多其他标准非常有意义,例如关于蓝牙技术(Bluetooth),游戏,定位等等。
平台的广泛性:移动信息设备的主要操作系统平台都是开放的,J2ME的标准也是开放的,因此基本上所有的主要操作系统平台都支持或将支持J2ME,这带来的广阔市场(智能手机的市场尤其巨大,据称Norkia到今年就可以出货5000万只Java手机,而到2003年可达1亿只。)和真正的&一次编写,到处运行&是任何其他技术无法比拟的。对于开发者而言,可以不受操作系统的限制,不用担心在这个多变的市场上因平台的变化而影响自己的应用。
开发的方便性:J2ME虽然和J2SE有着许多不同,但仍然属于Java技术,具有Java方便开发的优点,也使得Java程序员学习移动信息设备开发没有太大困难(事实上,我认为开发J2ME应用的主要困难不在于具体编码,而在于标准的复杂性)。
相关资源:
J2ME牵涉到的内容相当多,这里详细列出各方面的重要站点。
J2ME的官方网站:
http://jcp.org,Java Community Process(JCP)。虽然Sun是Java的创始人,但是现在Java平台的许多定义和扩展工作是通过JCP进行的。JCP允许公司和个人参与到Java平台的定义和修改工作中来,其流程很简单,先提交一个扩展Java平台的规范需求(java specification request, JSR),如果被接受,就组成一个专家组正式定义这个JSR。专家组的成员包括该领域的专家和志愿奉献精力和时间者。下一步就公布出来接受其他JCP成员和公众审查,根据审查意见修改后,就投票接受为一个正式的Java标准。这一过程能够保证Java的各种实现是兼容的,从而保证Java应用的相容性。所有的J2ME标准都是通过这个流程定义的。
http://jcp.org/jsr/tech/j2me.jsp,所有的J2ME标准。
http://java.sun.com/j2me,J2ME官方网站。
http://java.sun.com/products/cldc/wp/ProjectMontyWhitePaper.pdf,Project Monty虚拟机的白皮书。
无线Java技术:
http://wireless.java.sun.com,有大量的教程和文章,主要针对无线Java技术。其中
http://wireless.java.sun.com/getstart/,介绍无线Java技术的含义和基本概念。
http://wireless.java.sun.com/midp和http://wireless.java.sun.com/midp/articles,关于MIDP。
http://wireless.java.sun.com/midp/quizzes/midp是一个测验你对MIDP理解程度的测试。
http://wireless.java.sun.com/getstart/conceptmap.html,以非常直观的形式表示了各种Java平台,技术和标准之间的关系,对掌握全局很有好处。
http://www-106.ibm.com/developerworks/wireless/,IBM developerworks的无线技术专区。
http://alphaworks.ibm.com/wireless,大量的无线新技术。
http://www-3.ibm.com/pvc/index.shtml,IBM的普及计算。
资源收集网站:
Bill Day的J2ME资源,http://www.billday.com/j2me,非常全面,但是初接触者看的话可能会觉得重点不太突出。Bill Day是Sun在J2ME方面的资深专家,其文章很有价值。
http://www.jguru.com/faq/J2ME,他在jGuru主持的J2ME FAQ
http://forums.itworld.com,Community-& Java Forum-& Device Programming,他在ITworld主持的Device Programming论坛。
http://www.shiunkle.idv.tw/j2me/articles/index.htm,我国台湾在PDA的使用和J2ME的认识上都要比大陆超前一些,这里列出了台湾方面几乎所有重要的中文资料,对于我们很有帮助。其中王森的文章,以及台湾IBM DeveloperWorks网站的MIDP专题都相当不错。另外有几位主要书籍的作者经常在BBS linux.twbbs.org(telnet linux.twbbs.org)的J2ME版讨论和回答问题,是国内J2ME方面讨论比较深入的地方。
http://www.midletcentral.com/,提供MIDP应用下载。
http://midlet.org/jsp/index.jsp,提供MIDP应用下载。
http://www.pdaordie.com/java_for_wince.asp,在Pocket PC上的Java开发。
一些重要的J2ME文章:
developerWorks 中国网站的另外两篇关于J2ME的文章
http://www-900.ibm.com/developerWorks/cn/java/wi-j2me/index.shtml,仔细研究 J2ME。
http://www-900.ibm.com/developerWorks/java/j-j2me/index.shtml,J2ME 走向成熟。
http://www.yesky.com/789.shtml,Java嵌入式开发系列一到六,比较全面。
邮件列表:
http://archives.java.sun.com/archives/kvm-interest.html,虽然名字是KVM,但是实际上讨论关于J2ME的一切话题。有许多Sun的工程师和其他专家,J2ME的实际开发者积极参与讨论。
开发者社区网站地址:
或分享到:}

我要回帖

更多关于 海贼王之最强剑豪系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信