Phát triển ứng dụng J2ME và J2ME Wireless Toolkit

Sau đây là các bước để xây dựng ứng dụng J2ME mà một tác giả đã thực hiện, hi vọng giúp ích cho các bạn.

Tài nguyên cần download:

(1) Bạn cần phải có JDK 1.2 hoặc mới hơn.

Điều này có nghĩa là bạn cần phải có bộ Java 2 SDK của Sun. Bạn có thể download phiên bản mới nhất của JDK trên trang web Java của Sun. Ví dụ ở đây tôi download là phiên bản 1.4:
http://java.sun.com/j2se/1.4/download.html
Chạy chương trình cài đặt. Cài vào thư mục mặc định (c:\j2sdk1.4.0_03) trừ phi bạn có khả năng giải quyết được các vấn đề về đường dẫn.

(2) Bạn cần phải có bộ Cấu hình thiết bị kết nối giới hạn (Connected Limited Device Configuration – CLDC):

Tôi không cần biết nó là gì (nếu cần thì có thể tham khảo bài viết Vài nét về J2ME), chỉ đơn giản là download nó từ trang web của Sun:
http://wwws.sun.com/software/communitysource/j2me/cldc/download.html
Để download bạn phải đăng ký với trang web của Sun.
Ví dụ: tôi download được tập tin sau:

j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001.zip

Tôi giải nén nó vào thư mục:

C:\j2me

Đổi tên thư mục “cldc-1_0_3-fcs” đơn giản hơn thành:

cldc

(nghĩa là: đường dẫn đầy đủ là c:\j2me\cldc)

(3) Bạn cần phải có Hiện trạng thiết bị thông tin di động (Mobile Information Device Profile – MIDP):

Tôi cũng không cần biết nó là gì, đơn giản chỉ là download nó từ trang web của Sun.
http://java.sun.com/products/midp/
Tôi download được tập tin sau:

 j2me_midp-1_0_3-fcs-src-b26-win-19_sep_2001.zip

Giải nén nó vào thư mục:

C:\j2me

Đổi tên thành:

midp

Các bước cài đặt:

Thêm những dòng sau vào tập tin AUTOEXEC.BAT của bạn:

REM —- Java Support —-
SET MIDP_HOME=C:\j2me\midp
SET PATH=%PATH%;c:\j2sdk1.4.0_03\BIN;
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\j2sdk1.4.0_03\BIN;C:\j2me\midp\bin;%PATH%

Sau đó load lại các tham số này bằng cách chạy lại tập tin batch:

[THƯ MỤC HIỆN HÀNH: “C:\”]

autoexec.bat

Bạn cũng có thể thiết lập các biến này trong cấu hình của Windows, nhưng đừng hỏi tôi làm thế nào!
Chú ý rằng ở đây tôi đã cấu hình cứng đường dẫn của Java 2 SDK. Nếu tôi nâng cấp, tôi chỉ cần sửa tập tin AUTOEXEC.BAT.

Thử dùng bộ Java 2 SDK:

Một khi đã thiết lập như ở trên, bạn có thể chạy các tiện ích Java từ command line mà không cần chỉ ra đường dẫn hoàn chỉnh đến các tập tin thực thi.
Thử chạy chương trình mô phỏng:

[THƯ MỤC HIỆN HÀNH: “C:\”]

midp

Đây là kết quả mà tôi nhận được:

Gõ một chương trình đơn giản:

Sử dụng một trình soạn thảo văn bản, gõ vào một đoạn mã, như tập tin “HelloMIDlet.java” sau:

FILE: HelloMIDlet.java

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloMIDlet extends MIDlet implements CommandListener
{
private Command exitCommand;
private Display display;
private TextBox t = null;

public HelloMIDlet()
{
display = Display.getDisplay(this);
exitCommand = new Command( “Exit”, Command.EXIT, 2 );
t = new TextBox(“Hello MIDlet”,”Test string”,256, 0);
t.addCommand(exitCommand);
t.setCommandListener(this);
}

public void startApp()
{
display.setCurrent(t);
}

public void pauseApp()
{
}

public void destroyApp(boolean unconditional)
{
}

public void commandAction(Command c, Displayable s)
{
if (c == exitCommand)
{
destroyApp(false);
notifyDestroyed();
}
}
}

Biên dịch tập tin *.java thành *.class:

cd c:\HelloMIDlet

Ghi chú: các lệnh sau phải ở trên một dòng, nhưng đã được tách ra để dễ nhận biết.

[THƯ MỤC HIỆN HÀNH: “C:\HelloMIDlet”]

javac
-target 1.1
-d .\
-bootclasspath c:\j2me\midp\classes
HelloMIDlet.java

Ghi chú: “target 1.1” cần có để tránh lỗi trong giai đoạn “preverify” sau này.

Peverify để sinh ra các tập tin *.class mới

[THƯ MỤC HIỆN HÀNH: “C:\HelloMIDlet”]

preverify -classpath c:\j2me\midp\classes;. HelloMIDlet

Việc này sẽ sinh ra các tập tin *.class mới trong thư mục con mới được gọi là “output” (mặc định).

Kiểm tra các tập tin *.class mới:

[THƯ MỤC HIỆN HÀNH: “C:\HelloMIDlet”]

midp -classpath c:\j2me\midp\classes;.\output HelloMIDlet

Lệnh này sẽ tìm trong thư mục “output” tập tin *.class cần thiết, và thực thi ứng dụng trong chương trình mô phỏng.
Đây là những gì mà tôi thấy:

Tạo tập tin “manifest.mf”

Tập tin manifest (kê khai) cần thiết để cho điện thoại di động của bạn tải được tập tin *.JAR. Nếu bạn không có tập tin manifest thích hợp trong tập tập tin *.JAR, thì điện thoại của bạn vẫn download được tập tin *.JAR, nhưng sẽ báo là “Unsupported Content Type”
Đây là tập tin manifest mà tôi đã tạo:

FILE: manifest.mf

MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0

Chú ý rằng các phiên bản của CLDC và MIDP được xác định trong tập tin này. Hãy thận trọng với các trường trong tập tin này. Nếu bạn gặp lỗi “File Corrupt”, hãy thử bỏ đi tất cả các trường mà tôi không chỉ ra ở trên. Tiếp theo, hãy đặt các trường theo thứ tự như ở trên. Sau đó, rút ngắn giá trị của trường càng nhiều càng tốt, và giữ cho các dòng chỉ là các ký tự đơn, số, dấu câu, gạch ngang.

Chú ý:
Khi bạn dùng lệnh “jar” để tạo tập tin JAR, và bạn chỉ định tập tin “manifest.mf”, thì lệnh jar sẽ đọc tập tin kê khai của bạn và thêm vào các trường mới khi nó tạo tập tin manifest.mf bên trong tập tin JAR được tạo ra.
Đừng trích tập tin manifest.mf từ tập tin JAR và tạo thành tập tin JAR mới với tập tin manifest đó. Nếu bạn trích tập tin này, hãy hiệu chỉnh nó bằng tay, bỏ đi tất cả các trường được thêm vào.

Đặt tập tin kê khai và tập tin *.class vào tập tin *.jar:
Dòng lệnh sau đây sẽ tạo ra tập tin *.jar, với tập tin manifest.mf và *.class trong đường dẫn chỉ định.
[THƯ MỤC HIỆN HÀNH: “C:\HelloMIDlet”]

jar cfm hi.jar manifest.mf -C .\output HelloMIDlet.class
Giả sử bạn có một biểu tượng (“icon.png”) mà bạn muốn hiển thị cho ứng dụng của mình trên ĐTDĐ (một số điện thoại không hiện biểu tượng, và cũng đừng mong là thấy biểu tượng này trong chương trình mô phỏng 😉 ).
Và giả sử rằng bạn có một thư mục con với các tập tin hình (định dạng *.png) gọi là “images”, và bạn muốn thư mục này có thể được truy xuất bởi ứng dụng J2ME như là “/images”, nghĩa là tập tin “a.png” được truy xuất trong ứng dụng là “/images/a.png”.
Giả sử tất cả các lớp output “preverify” của bạn đặt trong thư mục con “verified”, bao gồm lớp chính của ứng dụng, “MyApp.class”. Tất cả các lớp này được truy xuất trong thư mục gốc của tập tin *.JAR.
Đây là dòng lệnh tạo nên tập tin JAR:
(Chú ý: Lệnh được phân thành nhiều dòng để cho rõ. Bạn phải gõ lệnh trên cùng một dòng).

jar
cfmv [Create JAR, Specify JAR Name, Add manifest.mf, Verbose]
MyApp.jar [Name of output JAR file]
manifest.mf [The manifest.mf file]
icon.png [Optional icon, specified by JAD as “/icon.png”]
images [Directory to add to JAR as “/images”]
-C .\verified .

Tạo và hiệu chỉnh một tập tin mới *.JAD:

Tập tin *.JAD cần để cho điện thoại di động có thể mô tả ứng dụng của bạn cho người dùng trước khi download.
Đây là ví dụ của tập tin *.JAD:
FILE: hi.jad

MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Jar-Size: 1283
MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0

Có các công cụ để tạo tập tin *.JAD này, giúp bạn cập nhật “MIDlet-Jar-Size:” mỗi khi rebuild tập tin *.JAR. Hãy tìm trên mạng các công cụ J2ME.
Chú ý: Nếu trường kích thước không đưa chính xác số byte của tập tin *.JAR, bạn sẽ gặp lỗi sau sau khi download thành công và cài đặt vào điện thoại của bạn:

“Download Failed”

Chạy kiểm tra tập tin *.JAR và *.JAD:

Dòng lệnh sau thực thi lớp trong tập tin *.JAR được mô tả bởi tập tin *.JAD:
[THƯ MỤC HIỆN HÀNH: “C:\HelloMIDlet”]

midp -classpath c:\j2me\midp\classes;.\hi.jar -descriptor hi.jad

Tham khảo về J2ME, MIDP, CLDC:

Những gì ở trên có thể được tìm thấy trên nhiều site khác. Đây là các link rất hữu ích giúp tôi bắt đầu:
http://wireless.java.sun.com/midp/articles/getstart
http://wireless.java.sun.com/midp/articles/setup

Triển khai ứng dụng:

Hãy chắc rằng máy chủ WWW hiểu được JAR/JAD MIME TYPE:
Nếu bạn dùng một máy chủ Web Apache, bạn cần phải tạo tập tin “.htaccess” trong thư mục gốc trang web của bạn. Tập tin này cho phép bạn ghi đè cấu hình của Apache, như là thêm hay ghi đè các MIME type. Bạn phải thêm vào JAR và JAD type, như trong tập tin sau:

[FILE: .htaccess]

AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType text/vnd.wap.wml wml

Hình như, tạo hay hiệu chỉnh tập tin này sẽ gây kết quả thay đổi tức thì trên server. Nếu bạn dùng một loại web server khác, bạn phải làm thế nào để xác định được các MIME type và chắc chắn rằng JAR và JAD được cấu hình giống như trên.
Nếu MIME type chưa được thiết lập, điện thoại sẽ từ chối download tập tin *.JAD của bạn với một thông điệp như sau:

“406: Not Acceptable”

Tuỳ chọn cung cấp link đến tập tin *.JAD:

Một số loại điện thoại cho phép bạn gõ địa chỉ URL trực tiếp đến tập tin *.JAD. Nhưng bạn có thể nên có các link đến tập tin *.JAD trong trang HTML hay WML của bạn:
Ví dụ: Một trang HTML đơn giản link đến tập tin *.JAD.

<html>
<head><title>My J2ME Application</title></head>
<body>
<a href=”hi.jad”>My HelloMIDlet Application</a>
</body>
</html>

Download ứng dụng “OVER THE AIR” (OTA)

Việc download tuỳ vào điện thoại, bạn phải cung cấp địa chỉ URL đến tập tin *.JAD (hay trang HTML, WML), và download ứng dụng về điện thoại.

“J2ME Wireless Toolkit” của Sun

Giới thiệu

Sun cung cấp một môi trường phát triển thuận tiện để xây dựng và đóng gói các ứng dụng không dây J2ME: “Java 2 Platform Micro Edition (J2ME) Wireless Toolkit version 1.0.4_01”.
(Cẩn thận: Bạn cần phải download Java 2 SDK 1.4 như đã mô tả ở phần trước)
Hãy đến địa chỉ sau để download:
http://java.sun.com/products/j2mewtoolkit/
Download phiên bản “1.0.4_01 English” (hiện tại có thể có phiên bản mới hơn, nhưng đừng download phiên bản 2.0 vì nó khá khác biệt so với phiên bản 1.0.4).
Bạn sẽ download được tập tin sau:
“j2me_wireless_toolkit-1_0_4_01-bin-win.exe”
Chạy tập tin này để cài đặt vào máy của bạn

J2ME Wireless Toolkit: Chạy KToolbar

Sau khi cài đặt bạn có thể chạy KToolbar từ menu Start/Programs/J2ME Wireless Toolkit 1.0.4_01/KToolbar

J2ME Wireless Toolkit: Tạo và build Project

Bây giờ KToolbar đã sẵn sàng. Nhấn vào “New Project…” để tạo một project mới.
Nhập vào tên project (sẽ là tên JAR và tên của thư mục project mới), và nhập vào tên của MIDlet class (là main class của ứng dụng của bạn)

Hình: Project “sbj” đã được tạo.

Nhấn vào “Settings…” trên toolbar để vào menu cấu hình cho project.
Đừng để ý đến trường “MIDlet-Jar-Size” (với giá trị là “100” bytes) lúc này. Chúng ta sẽ làm cho giá trị tự được thiết lập đúng.
Nhấn vào MIDlets tab trong cửa sổ dialog cấu hình của porject.
Nhấn vào hàng duy nhất trong bảng (“MIDlet-1”) để làm nổi nó và chọn. Sau đó nhấn vào nút “Edit”.
Xoá trường “Icon” nếu bạn không có tập tin *.PNG để đặt vào tập tin JAR.
Chấp nhận các thay đổi.
Sau đó làm như sau:
(1) Project –> Clean: Xoá tất cả tập tin *.class.
(2) Build                 : Build tất cả tập tin *.class và preverify.
(3)Project –> Package –> Create Package: Sinh ra tập tin *.JAR và *.JAD.
Khi bạn làm 3 bước trên, tập tin *.JAR và *.JAD kết quả đã có thể sẵn sàng được thực thi trong chương trình mô phỏng, hay đưa lên WWW site để download. Trường kích thước của *.JAR trong tập tin *.JAD sẽ tự đúng. Đừng quên thực hiện bước 3 mỗi khi bạn rebuild!
Bây giờ bạn có thể kiểm tra bằng cách nhấn vào nút “Run”.

Bạn có thể tham khảo bài gốc tiếng Anh của bài viết này (Khánh chỉ dịch lại và có lược bớt một số phần), tác giả mô tả việc phát triển ứng dụng cho điện thoại Motorola T720 khá chi tiết, đọc tới đâu làm tới đó😉. Bài khá dài và khá nhiều hình nên load về hơi lâu.

Tài liệu tham khảo:

Colin Fahey’s J2ME Cell Phone Experience

Gửi phản hồi

Please log in using one of these methods to post your comment:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s