程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 縮小Doja程序的大小

縮小Doja程序的大小

編輯:J2ME

  在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);
  }

  文件1:618 bytes,文件2:530 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減少了一些代碼。

  到這裡,我已經把能使用的方法全部介紹完了,但在實際的運用中還需要根據具體的情況進行適當的調整,這就要看你的了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved