iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何优化J2ME程序大小
  • 313
分享到

如何优化J2ME程序大小

2023-06-03 05:06:52 313人浏览 薄情痞子
摘要

这篇文章主要讲解了“如何优化J2ME程序大小”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何优化J2ME程序大小”吧!如果说j2me和j2se有什么最大的区别,那就是他们运行环境的不同.J

这篇文章主要讲解了“如何优化J2ME程序大小”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何优化J2ME程序大小”吧!

如果说j2me和j2se有什么最大的区别,那就是他们运行环境的不同.J2ME最主要的限制就在于它可用来存储数据和运行程序的内存空间太小.当前大多数支持MIDP的设备,都限制了应用程序不得超于50K大小,这点儿就是千兆级的J2ME的服务运行环境大相径庭.下面我们将学习一些技巧让J2ME程序最小化 .下面就是一个最小化程序大小的例子:

 XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

package com.j2medeveloper.techtips;
import Javax.microedition.lcdui.*;
public class BeforeSizeOptimization extends
BasicMIDlet {
 public static final Command exitCommand =
 new Command( "Exit",
 Command.EXIT, 1 );
 public BeforeSizeOptimization(){
 }
 protected void initMIDlet(){
 getDisplay().setCurrent( new MainFORM() );
 }
 public class MainFoRM extends Form {
 public MainForm(){
 super( "MainForm" );
 addCommand( exitCommand );
 append( textf );
 setCommandListener( new CommandListener(){
 public void commandAction( Command c,
 Displayable d ){
 if( c == exitCommand ){
  exitMIDlet();
 }
 }
 }
 );
 setItemStateListener(
new ItemStateListener() {
 public void itemStateChanged(
Item item ){
 if( item == textf ){
 AlertType.INFO.playSound(
 getDisplay() );
 }
 }
 }
 );
 }
 private TextField textf =
 new TextField( "Type anything", null,
 20, 0 );
 }
}

虽然这个MIDlet在此仅作为一个例子,但使用的尺寸优化技巧可以适用于任一J2ME的profile上。
注意,上面的MIDlet类需要下面的辅助类:

package com.j2medeveloper.techtips;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public abstract class BasicMIDlet extends MIDlet {
 private Display display;
 public BasicMIDlet(){
 }
 protected void destroyApp( boolean unconditional )
 throws MIDletStateChangeException {
 exitMIDlet();
 }
 public void exitMIDlet(){
 notifyDestroyed();
 }
 public Display getDisplay(){ return display; }
 protected abstract void initMIDlet();
 protected void pauseApp(){
 }
 protected void startApp()
 throws MIDletStateChangeException {
 if( display == null ){
display = Display.getDisplay( this );
 initMIDlet();
 }
 }
}

如果用J2ME Wireless Toolkit运行这个例子,程序的大小大约4K左右.

为了更好的说明该怎么做,我们列出缩小程序大小需要注意的事项:

1,  去掉不必要的类,保证程序结构的简洁 . 你有没有考虑过,真的所有的特性都是你的程序所需要的么?你的用户是否可以得到更简洁的东西?考虑到这点,你的程序已经为最小化做好了准备.

2,  第二步就是深入考察程序定义的内部类,特别是匿名类。记住,每个类文件都有一定量的与之相关的系统开销。即便最普通的类也有系统开销。

public class foo {

  // nothing here

  }

编译这个Class所在类文件,你需要200 bytes大小,再加上这个类的一些常规方法的实现,比如实现Event Listener接口等.而本身一个MIDlet就需要实现比如CommandListener, ItemStateListener接口, 如果可以的话,完全可以把他们用在一个文件中,多个类享受这一个commandAction , itemStateChanged ,不是很好么?虽然这需要你对程序的结构组织非常清晰:)

  内部类也某些方面也会消耗内存空间 ,因为编译器需要产生一些特殊的变量和方法来提供内部类入口的私有信息.

3  尽量使用现有的类。例如,基于CLDC的profile没有构造集合类,所以我们可以用内建的Hashtable和Vector类来实现之。构造MIDP程序时也可采用此法。例子MIDlet中定义了一个form字类来生成主表,可以容易的如下直接生成:
   mainform = new form( "Mainform" );
   mainform.addCommand( okCommand );
   mainform.setCommandListener( listener );
这里没有对与错, 因为这是很容易理解的。

4,  破坏程序的继承关系。你也许把相关的代码放到一个或多个抽象类中,这是OOD中为提高程序间代码重用的推荐做法。虽然破坏继承关系与你所学知识相违背,但简化的继承关系更有意义。特别的,当你的的抽象类――可能来自其他项目――仅仅被继承一次时,破坏继承关系的结果不言而喻。例如,例子MIDlet继承了BasicMIDlet类,但两者合并为一个类。

5,  尽量减少你创建的包,类,方法和成员变量的命名长度 . 这个听起来似乎很无聊和愚蠢.不过一个类文件保存了许多的符号信息 简短的命名将会使您简化类文件 ,这个也许听起来不是那么紧要,不过当几个类衍生开去的时候,你就明白它的功效了.包已经有了一套成熟的简化命名方式,尽量避免包的完整命名 ----- 在没有和其他类冲突的情况下.

  另外,简短命名的工作并不总是需要手动完成,您完全可以使用工具来帮您完成,

”混淆器” 就是一个不错的选择 .它的主要目的就是对命名的一个优化(对你原有命名方式的一个隐藏和缩减).而这个过程最大的效果就是收缩应用程序的大小.这主要归功于它对方法和数据变量的可读性的重新命名(在编译代码中).

  记得在使用混淆器之前需要预审核(preverification) , 否则混淆器会使类文件中的预审核数据无效.

6,  数组的初始化方式 .一个数组的初始化声明如下:

int arr[] = { 0, 1, 2, 3 };

而实际编译代码如下::

arr[0] = 0;

arr[1] = 1;

arr[2] = 2;

arr[3] = 3;

这个过程可以通过使用Java 2 SDK中附带的javap工具把二进制代码反编译成类文件去看(使用-c选项)。也许你会诧异于看到的内容,特别当你希望看到的是一排排二进制常数时。有两种方法可以让你看不到反编译的程序代码,(1)把数据编码为字符串,运行时解码之,或者(2)把数据存为二进制文件并与程序打包,用类装载器的getResourceAsStream方法在运行时存取之。

  以上只是一个指导方针,对J2ME程序而言,这里并没有提到所有的步骤,不过大多数方法都可以应用到当前例子.最优化的MIDP例子如下:

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class ASO extends MIDlet

implements CommandListener,
ItemStateListener {
 private Display  display;
private Form  mainForm;
 private TextField mainFormTF =
 new TextField( "Type anything", null,
 20, 0 );
 public static final Command exitCommand =
 new Command( "Exit",
 Command.EXIT, 1 );
 public ASO(){
 }
 public void commandAction( Command c,
 Displayable d ){
 if( c == exitCommand ){
 exitMIDlet();
 }
 }
 protected void destroyApp( boolean unconditional )
 throws MIDletStateChangeException {
 exitMIDlet();
 }
 public void exitMIDlet(){
 notifyDestroyed();
 }
 public Display getDisplay(){ return display; }
 protected void initMIDlet(){
 mainForm = new Form( "MainForm" );
 mainForm.addCommand( exitCommand );
 mainForm.setCommandListener( this );
 mainForm.setItemStateListener( this );
 mainForm.append( mainFormTF );
 getDisplay().setCurrent( mainForm );
 }
 public void itemStateChanged( Item item ){
 if( item == mainFormTF ){
 AlertType.INFO.playSound( getDisplay() );
 }
 }
 protected void pauseApp(){
 }
 protected void startApp()
 throws MIDletStateChangeException {
 if( display == null ){
display = Display.getDisplay( this );
 initMIDlet();
 }
 }
}

感谢各位的阅读,以上就是“如何优化J2ME程序大小”的内容了,经过本文的学习后,相信大家对如何优化J2ME程序大小这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何优化J2ME程序大小

本文链接: https://www.lsjlt.com/news/233001.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何优化J2ME程序大小
    这篇文章主要讲解了“如何优化J2ME程序大小”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何优化J2ME程序大小”吧!如果说j2me和j2se有什么最大的区别,那就是他们运行环境的不同.J...
    99+
    2023-06-03
  • 如何优化J2ME应用程序
    这篇文章主要介绍“如何优化J2ME应用程序”,在日常操作中,相信很多人在如何优化J2ME应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何优化J2ME应用程序”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-03
  • 如何优化微信小程序
    小编给大家分享一下如何优化微信小程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!避免使用本地大图片、大资源文件请避免在小程序的...
    99+
    2024-04-02
  • 微信小程序性能如何优化
    这篇文章主要介绍了微信小程序性能如何优化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序性能如何优化文章都会有所收获,下面我们一起来看看吧。为什么要做性能优化?一切性能优化都是为了体验优化1. 使用小程...
    99+
    2023-06-26
  • 微信小程序代码包大小的优化方法
    这篇文章主要讲解了“微信小程序代码包大小的优化方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序代码包大小的优化方法”吧!setDatasetData是小程序开发中使用最频繁的接口...
    99+
    2023-06-26
  • 小程序购物车动画如何优化
    这篇文章将为大家详细讲解有关小程序购物车动画如何优化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。小程序购物车动画优化公司小程序点击加购时,会绘制一个抛物线动画,这个抛物线动画是计算出来的贝塞尔曲线上每个...
    99+
    2023-06-22
  • 小程序怎么优化
    这篇文章主要介绍了小程序怎么优化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。优化项1. 合理的使用分包微信小程序的主要特点是启动快速,为了这一特性,官方因此限制了包的大小,...
    99+
    2023-06-22
  • 如何优化PHP开发的微信小程序?
    如何优化PHP开发的微信小程序?随着微信小程序的普及,越来越多的开发者开始关注如何优化微信小程序的开发。在开发中,PHP是一种常用的后端语言,它提供了丰富的功能和严密的安全性。下面将介绍一些优化的方法和具体代码示例,以帮助开发者更好地使用P...
    99+
    2023-10-27
    优化 微信小程序 PHP开发
  • 微信小程序怎么优化
    这篇文章主要介绍了微信小程序怎么优化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。页面跳转优先采用navigator组件小程序提供了两种页面路由方式:a. navigator...
    99+
    2023-06-20
  • 微信小程序实战中如何使用类优化程序结构
    本篇文章为大家展示了微信小程序实战中如何使用类优化程序结构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。虽然Javascript是一种脚本语言,但是依然可以定义和使用类。在这个小程序中,将监控点相关...
    99+
    2023-06-19
  • 如何调用OTA来发布J2ME程序
    如何调用OTA来发布J2ME程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。OTA是OverTheAir的简写,也就是通过网络下载,这是主要...
    99+
    2024-04-02
  • 如何深入了解J2ME网络程序设计
    这篇文章给大家介绍如何深入了解J2ME网络程序设计,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。和大家重点讨论一下J2ME网络程序设计,javax.mic...
    99+
    2024-04-02
  • wpf程序性能如何优化
    WPF程序的性能优化可以从以下几个方面进行:1. 减少UI元素的数量和复杂度:尽量减少窗口中的控件数量,避免使用大量嵌套的控件和复杂...
    99+
    2023-10-18
    wpf
  • 微信小程序怎么做优化
    微信小程序可以从这几方面优化:1.样式优化,小程序整体风格统一;2.布局优化,小程序各版块要有逻辑;3.搜索优化,标题使用行业关键词;4.使用优化,针对页面反应速度及导航设置进行优化;微信小程序可以从以下几方面来优化样式优化小程序整体风格样...
    99+
    2024-04-02
  • 如何探究开发J2ME应用程序准则
    本篇文章给大家分享的是有关如何探究开发J2ME应用程序准则,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。和大家重点讨论一下开发J2ME应用程序...
    99+
    2024-04-02
  • 微信小程序字体大小如何调整
    微信小程序的字体大小可以通过wxss文件中的font-size属性来调整。具体步骤如下:1. 打开小程序的wxss文件(通常是app...
    99+
    2023-08-15
    微信小程序
  • 如何优化Vue项目编译文件大小
    这篇文章主要为大家展示了“如何优化Vue项目编译文件大小”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何优化Vue项目编译文件大小”这篇文章吧。定位问题要想进...
    99+
    2024-04-02
  • 如何用OTA下载本机J2ME程序至手机
    本篇文章为大家展示了如何用OTA下载本机J2ME程序至手机,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。J2ME(Java2MicroEdition)是Java2的...
    99+
    2024-04-02
  • 小程序redux性能优化的方法
    这篇文章主要介绍“小程序redux性能优化的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“小程序redux性能优化的方法”文章能帮助大家解决问题。首先了解小程序的工作原理和性能关键点。1工作原理...
    99+
    2023-06-26
  • 如何优化JavaScript程序的性能
    如何优化JavaScript程序的性能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。避免全局查找在一个函数中会用到全局对象存储为局部变量来减少...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作