初识Doja(缩小你的程序)

本文详细介绍了在不同版本Doja环境中优化JAR及ScratchPad文件的方法,包括资源文件优化、类优化、方法与变量优化等方面,帮助开发者有效降低文件大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如要转载请注明出处    http://blog.youkuaiyun.com/dl_hum/

Doja环境里,JAR文件和ScratchPad文件的的大小是有限制的,具体的限制如下表所示:

版本

JAR文件
大小(kbyte

ScratchPad文件
大小(kbyte

Doja 1.0

30

50

Doja 2.0

30

100

Doja 2.1

30

200

Doja 2.2

30

200

Doja 3.0

30

200

Doja 3.5

100

400

 

出于这种限制,下面我将一些常见压缩程序的方法介绍个大家。

 

1. 化你的资源文件

1.1. 缩小图片的大小

jar文件里主要存放了程序用到的资源文件(图片,声音,数据等文件)和经过编译后的class文件。很明显,最直接的方式就是通过减少使用的图片数量来减小jar文件的大小,另外我们还可以通过缩小单个图片的大小,减少图片的颜色数来减小jar文件的大小。

1.2. ScratchPad文件中存储资源文件

我们可以通过从网络上下载资源数据然后保存在ScratchPad文件中来代替将他们存储在jar文件中。然后我们就可以从ScratchPad文件中读取数据而不是使用资源文件直接读取了。


2.
优化类

2.1 减少类的数量

通过分析class文件,我们发现包名称,类名称,方法名称和变量名称全部是以字符串的形式保存。我们将保存这些数据的区域叫做常量池,并且这部分也是被类文件所共享的最频繁的区域。

例如以下程序:

 

import com.nttdocomo.ui.*;

public class HelloWorld extends IApplication

{

       public void start()

       {

               System.out.println("Start IApplication!");

       }

}

 

以下被选择的部分就为存放com.nttdocomo.ui.IApplication类的常量池

 

2.2 缩短类名称

通过缩短类的名称,我们同样可以达到减少class文件大小的目的。

比较如下两个类的定义:

// class 1

public class HelloWorld{

public void start(){}

}

// class 2

public class A {

public void start(){}

}

class A class HelloWorld减少了18个字节。


3.
优化方法和变量

3.1 减少方法的数量

       我们可以通过将方法的实现体替换方法的调用。

       比方说以下两个程序:

       // program 1

       public void start(){

              Panel p = new Panel();

              Add(p);

              Display.setCurrent(p);

}

 

public void add(Panel p){

       p.add(new Label(“Hello”));

}

 

// program 2

public void start(){

       Panel p = new Panel();

       p.add(new Label(“Hello”));

       Display.setCurrent(p);

}

文件1618 bytes,文件2530 bytes

 

3.2 缩短方法和变量的名称

 

3.3 让方法和变量拥有相同的名称

通常情况下,让方法和变量使用相同的名称,那么这个名称的字符串将会被共享,从而我们也可以减少class文件的大小。

 

3.4 使用本地变量

大家都知道使用变量就需要占用内存空间,然而定义类的变量需要咱用堆内存,而定义本地临时变量则咱用栈内存。因此我们也可以通过此方法来减少class文件的大小。

 

3.5 较少变量的数量

这里我主要介绍一下通过比较数组和其他变量的使用来减少class文件的大小。大家看以下例子;

// declation 1

int aaa = 1;

int bbb = 2;

int ccc = 3;

 

// declation 2

int test[] = {1,2,3};

 

具体的看下表

 

逐个定义

使用数组定义

单个变量

296 bytes

303 bytes

两个变量

330 bytes

307 bytes

三个变量

364 bytes

311 bytes

十个变量

607 bytes

319 bytes

 

3.6 缩短字符串常量

对于任何字符串,如不需频繁变动,我们应该将它直接写到代码中,而不是使用常量来代替。另外我们也可以通过在Scratchpad文件中定义或在ADF标识符AppParam中定义来减少class文件的大小。

 

3.7 尽量不使用中间媒介变量

这里我还是举例来说明吧:

// file 1

public void start()

{

       MyCanvas cs = new MyCanvas();

       Display.setCurrent(cs);

}

 

// file 2

public void start()

{

       Display.setCurrent(new MyCanvas());

}

 

很明显,程序2比程序1减少了一些代码。

 

到这里,我已经把能使用的方法全部介绍完了,但在实际的运用中还需要根据具体的情况进行适当的调整,这就要看你的了。

 

以上部分资料来源于Doja开发网http://www.doja-developer.net

如要转载请注明出处    http://blog.youkuaiyun.com/dl_hum/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值