Ngoài ra với việc Sun cam kết để J2ME trở thành một chuẩn cho các nhà sản xuất thiết bị di động thì việt phát triển các ứng dụng trên nền J2ME là hết sức dễ dàng.. Với đề tài này, các vấ
Trang 1TRƯỜNG ĐẠI HỌC VINH Khoa công nghệ thông tin
- -XÂY DỰNG TỪ ĐIỂN ANH VIỆT
HTDICT TRÊN NỀN J2ME
Trang 2LỜI CẢM ƠN
Em xin chân thành cảm ơn T.S Phan Lê Na đã tận tình hướng dẫn, giúp đỡ
em trong quá trình thực hiện đề tài
Em xin chân thành cảm ơn các thầy cô trong Khoa Công nghệ thông tin đãtận tình giảng dạy, trang bị cho em những kiến thức quý báu trong những năm họctập tại trường Tạo nhiều điều kiện thuận lợi cho em được học tập và thực hiện đềtài này
Tôi xin cảm ơn tập thể nhóm lập trình công ty VTC-Online tạo điều kiệnthuận lợi, hỗ trợ rất nhiều trong quá trình thực tập Xin chân thành cảm ơn bạn bè
đã tận tình giúp đỡ ủng hộ trong quá trình thực hiện đồ án
Mặc dù đã cố gắng hoàn thành khoá luận trong phạm vi và khả năng chophép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Em rất mong nhậnđược sự cảm thông, góp ý và tận tình chỉ bảo của các thầy cô trong Khoa và cácbạn
Trang 3MỞ ĐẦU -4
CHƯƠNG I CẤU TRÚC J2ME -8
1.1 Giới thiệu về Java -8
1.2 Cấu trúc J2ME -8
1.2.1 Giới thiệu về J2ME -8
1.2.2 Định nghĩa về Configuration (Cấu hình) -9
1.3 Sự khác biệt giữa J2ME và J2SE -14
1.3.1 Sự khác biệt -14
1.3.2 Các lớp trong J2ME kế thừa từ J2SE -15
1.4 Cấu trúc MIDP -16
1.4.1 Định nghĩa -16
1.4.2 Những hạn chế của MIDP -16
1.4.3 Những chức năng MIDP -17
1.4.4 File lưu trữ JAR -18
1.4.5 Tập tin Manifest và Bộ mô tả ứng dụng JAD -19
1.4.6 Vòng đời của một MIDP -19
CHƯƠNG II MÔI TRƯỜNG LẬP TRÌNH -21
2.1 Môi trường lập trình -21
2.1.1 Quá trình phát triển ứng dụng J2ME -21
2.1.2 Các IDE thường dùng trong lập trình J2ME -21
2.1.3 Công cụ thực hiện -24
2.1.4 Thiết lập môi trường -24
2.1.5 Ứng dụng khi sử dụng NetBeans -24
2.2 Một số vấn đề lưu ý -30
CHƯƠNG III KỸ THUẬT XỬ LÝ DỮ LIỆU XÂY DỰNG TỪ ĐIỂN -31
3.1 Tổ chức cấu trúc dữ liệu lưu trữ -31
3.1.1 Cấu trúc tệp tin CSV (Comma-separated Values) -31
3.1.2 Tổ chức cấu trúc dữ liệu lưu trữ -32
3.2 Sắp xếp các mục từ -32
3.3 Tổ chức cấu trúc dữ liệu hỗ trợ tìm kiếm nhanh -32
3.3.1 Tập tin tuần tự -32
3.3.2 Tập tin chỉ mục -32
3.3.3 Tập tin băm -32
3.3.4 Cây nhị phân -33
3.4 Kỹ thuật xử lý dữ liệu trong từ điển HTDict -33
3.4.1 Hiển thị Font chữ Tiếng Việt -34
3.4.2 Kỹ thuật xử lý trong ứng dụng -35
Trang 4CHƯƠNG IV PHÂN TÍCH THIẾT KẾ XÂY DỰNG TỪ ĐIỂN -37
4.1 Giới thiệu -37
4.2 Mô hình Use-Case -37
4.2.1 Mô hình Use-Case -37
4.2.2 Đặc tả Use-Case -38
4.3 Mô hình lớp -40
4.3.1 Lớp HTDict -40
4.3.2 Lớp Dictionary -41
4.3.3 Lớp Dict -43
4.4 Cài đặt và thực nghiệm -44
4.4.1 Môi trường phát triển -44
4.4.2 Cài đặt -45
4.4.3 Kết quả thử nghiệm -45
4.5 Mô tả giao diện ứng dụng -45
4.5.1 Màn hình HTDict -47
4.5.2 Màn hình Menu chính -47
4.5.3 Màn hình Dictionary -48
4.5.4 Màn hình Dictionary English – Vietnamese -48
4.5.5 Màn hình Dictionary Vietnamese – English -49
4.5.6 Màn hình hiển thị nhập các từ cần tra -49
4.5.7 Màn hình hiển thị nghĩa từ cần tra -50
4.5.8 Màn hình hiển thị nghĩa từ tiếp theo từ cần tra -50
4.5.9 Màn hình hiển thị nghĩa từ trước đó của từ cần tra -51
TỔNG KẾT -52
Hướng phát triển -52
TÀI LIỆU THAM KHẢO -53
Trang 5Năm 2007 Công ty Apple đưa ra sản phẩm iphone Ngay lập tức sản phẩmnày đã tạo ra một tiếng vang lớn và làm tốn không biết bao nhiêu giấy mực củacác tờ báo đặc biệt là các tờ báo công nghệ và các website công nghệ bởi thiết kếđẹp mắt và nhiều tính năng Iphone với các đặc điểm màn hình cảm ứng cực rộng,kết nối Wi-Fi, camera 5.0, và trình duyệt web hoàn chỉnh là hiện thân của thế hệđiện thoại mới Thế hệ điện thoại mới này đã trở thành một thiết bị giải trí đa tínhnăng với sức mạnh của một chiếc PC
Bên cạnh đó, nhu cầu về học ngoại ngữ ngày càng trở nên quan trọng.Trong học ngoại ngữ để biết nghĩa của một từ là rất cần thiết Tuy nhiên khôngphải lúc nào chúng ta cũng mang theo một quyển từ điển hoặc máy tính xác tay đểtra từ Chính vì lý do đó, việc có một cuốn từ điển Anh-Việt cài đặt trong điệnthoại di động là rất hữu dụng
Ngoài ra với việc Sun cam kết để J2ME trở thành một chuẩn cho các nhà
sản xuất thiết bị di động thì việt phát triển các ứng dụng trên nền J2ME là hết sức
dễ dàng
Chính vì những lý do trên mà em quyết định thực hiện đề tài Xây dựng từ
điển Anh-Việt HTDict trên nền J2ME.
Phạm vi đề tài
Nghiên cứu công nghệ J2ME và tìm hiểu các kỹ thuật xử lý cấu trúc dữ liệutrong ứng dụng từ điển
Tiến hành xây dựng từ điển Anh-Việt HTDict
Đôi nét về thị trường điện thoại di động Việt Nam
Trang 6Thị trường thông tin di động Việt Nam là một trong những thị trường pháttriển nhanh nhất khu vực Đông Nam Á, là một trong những thị trường sôi độngnhất trong toàn vùng Châu Á-Thái Bình Dương Ở những thành phố lớn hiện naythì hiện tượng “nhà nhà di động, người người di động” là chuyện phổ biến Tuyrầm rộ như thế nhưng so với các nước trong khu vực, thị trường nước ta còn khánon trẻ.
Theo thống kê năm 2006 cho biết tỉ lệ thuê bao điện thoại di động trên tổngdân số ở Việt Nam chỉ là 20% trong khi Philippin là 40%, Thái Lan 50%,Malaysia 80% và Singapore 106% (nhiều người có 2 hay 3 máy) Do vậy tiềmnăng tăng trưởng của thị trường điện thoại di động Việt Nam còn rất lớn (theo
vietnamnet.vn).
Đầu năm 2000, tổng số thuê bao điện thoại di động tại thị trường Việt Namchỉ vỏn vẹn đạt mức 0,3 triệu Nhưng chỉ 6 năm sau cả nước đã có hơn 20 triệuthuê bao Theo thông tin công bố của các nhà cung cấp dịch vụ di động, số thuêbao điện thoại di động đạt tới xấp xỉ 50 triệu vào cuối năm 2008
Có hơn 20 hãng điện thoại đã và đang cạnh tranh khốc liệt trên thị trườngViệt Nam với các tên tuổi lớn như Nokia, SamSung, Motorola, Sony Ericsson,Siemens… Doanh số thị trường bán lẻ điện thoại di động Việt Nam năm 2006 xấp
xỉ 900 triệu USD, tăng hơn 40% so với năm 2005
Tiềm năng của thị trường thông tin di động Việt Nam là điều đã đượckhẳng định, nhưng vẫn là một ẩn số đối với các nhà phân tích thị trường bởi nhucầu sử dụng của người tiêu dùng cũng như khả năng cung cấp của các nhà khaithác vẫn đang ở mức khám phá ban đầu
Việt Nam được coi là thị trường rất hấp dẫn trong lĩnh vực thông tin diđộng
Nhu cầu về phát triển phầm mềm cho điện thoại di động
Điện thoại di động đầu tiên ra đời với chức năng gọi và nhận cuộc gọi Sựphát triển mạnh mẽ của nền kinh tế ngày càng khẳng định vai trò của thông tin liênlạc đến khả năng thành bại trong kinh doanh Ngoài ra, nhu cầu trao đổi thông tin,giải trí của con người cũng ngày càng được nâng cao và nhờ vào sự tiến bộ của
Trang 7khoa học kỹ thuật, chiếc điện thoại ngày càng có nhiều tính năng mới, đa dạnghơn, tiến bộ hơn và hiện đại hơn.
Năng lực xử lý và lưu trữ của điện thoại di động cũng liên tục được cải tiến.Các hãng sản xuất đã làm cho chiếc điện thoại di động trở nên linh động hơn, giúpcho người sử dụng có thể dễ dàng cấu hình giao diện và ứng dụng Đặc biệt, bằngcách cho phép lập trình viên viết thêm chương trình ứng dụng, trò chơi cho điệnthoại, chiếc điện thoại di động hiện nay đã trở thành một công cụ làm việc, họctập, giải trí hữu ích với mọi người
Trong vài năm gần đây, hoạt động sản xuất phần mềm cho điện thoại diđộng phát triển khá mạnh mẽ Rất nhiều sản phẩm phần mềm đã ra đời để phục vụtốt hơn nhu cầu của người sử dụng, trong đó, phần nhiều là các trò chơi, truy cậpInternet, trình diệt virus, soạn thảo văn bản, từ điển… Trong năm 2004, giá trị sảnxuất phần mềm cho điện thoại di động trên thế giới đạt 3,1 tỉ USD và dự đoán sẽ
đạt 18,5 tỉ USD vào năm 2009 (theo www.vietnamnet.vn)
Các thành phần phần cứng của điện thoại di động
Điện thoại di động ngoài chức năng nghe gọi ra giờ đây còn nhiều chứcnăng giải trí khác Song thành phần chính vẫn bao gồm CPU, Bộ nhớ, các thiết bịnhập xuất (I/O) và nguồn năng lượng
CPU: CPU có kiếm trúc 32 bit, chạy ở tốc độ dưới 100MHz Trong tương
lai tốc độ này sẽ được cải thiện hơn
Bộ nhớ : Tối thiểu 32Kb bộ nhớ RAM, 128Kb bộ nhớ ROM để lưu dữ liệu
chương trình Một số dòng máy điện thoại có hệ điều hành có thể có cấu hình caohơn Đối với ứng dụng từ điển Anh-Việt này bộ nhớ ROM tối thiểu 10Mb
Thiết bị vào ra (I/O):
Màn hình có kích thước khác nhau tuỳ dòng điện thoại, có thể có mànhình cảm ứng
Khe cắm thẻ nhớ
Các cổng giao tiếp hồng ngoại và Bluetooth
Nguồn năng lượng: sử dụng pin đặc thù có thể sạc được
Trang 8 Hạn chế của các thiết bị di động
Mặc dù điện thoại có ưu điểmlà thiết bị nhỏ gọn nhưng cũng đồng thời hạnchế về tốc độ xử lý, độ rộng màn hình, hạn chế về thiết bị vào ra Do đó việc lậptrình các phần mềm cho thiết bị di động cũng có sự khác biệt lớn so với việc pháttriển các ứng dụng trên nền Desktop
Mục tiêu của đề tài
Do điện thoại có bộ xử lý cũng như tài nguyên hạn chế so với máy tính đểbàn Ngoài ra việc lập trình cho thiết bị do động cũng khác biệt so với lập trìnhtrên máy tính Với đề tài này, các vấn đề chính bao gồm:
Tìm hiểu về cấu trúc J2ME, sự khác biệt so với môi trường J2EE vàJ2SE
Nghiên cứu, xây dựng cấu trúc dữ liệu từ điển cho từ điển Anh-Việt
Xây dựng hoàn chỉnh ứng dụng từ điển trên điện thoại di động
Nội dung thực hiện
Mở đầu: Trình bày lý do thực hiện đề tài và mục tiêu của đề tài, giới thiệutổng quan về các thiết bị di động
Chương I Cấu trúc J2ME: Trình bày cấu trúc của J2ME so sánh giữaJ2ME và J2EE, J2SE
Chương II Môi trường lập trình: Trình bày môi trường lập trình các IDE
Chương III Kỹ thuật xử lý dữ liệu xây dựng từ điển: Trình bày về tổ chứccấu trúc dữ liệu, trình bày kỹ thuật xử lý dữ liệu xây dựng từ điển HTDict
Chương IV Phân tích thiết kế ứng dụng : Trình bày mô hình thiết kế ứngdụng HTDict, cài đặt và chạy thử chương trình
Tổng kết: Trình bày kết quả đạt được, hướng phát triển trong tương lai
Trang 9CHƯƠNG I CẤU TRÚC J2ME
1.1 Giới thiệu về Java
Công nghệ di động ngày càng phát triển Chiếc điện thoại di động hiện naykhông còn đơn giãn thực hiện nhiệm vụ thoại mà ngày càng trở thành một trợ lýkhông thể thiếu và còn là thiết bị phục vụ cho nhu cầu giải trí Công nghệ Java làcông nghệ đi tiên phong trong việc xâm nhập vào lĩnh vực di động Nếu có mộtchiếc điện thoại di động hỗ trợ Java, ta có thể chơi Game, chạy các ứng dụng viếtbằng Java
Vào những năm 1990, Java được ra đời từ dự án xanh (green project) vàban đầu được xây dựng để kiểm soát các thiết bị dân dụng như TV, đèn, điện thoại
và một số thiết bị cầm tay Java được xây dựng chủ yếu dựa trên bộ công cụ pháttriển (Java Development Kit -JDK) Đây chính là nền tảng cho việc phát triển ứngdụng Java Với sự phát triển của Java hiện nay, các nhà phát triển (Nokia, Sun, …)
đã xây dựng nhiều nhánh mới cho Java như: JavaMail, Java TAPI (cho viễnthông), Java3D (đồ hoạ 3 chiều), J2ME (ứng dụng cho thiết bị di động)… Java cócác phiên bản sau:
J2EE (Java 2 Platform, enterprise Edition): phiên bản dành cho máy chủ
lớn với sức mạnh xử lý và dung lượng bộ nhớ lớn
J2SE (Java 2 Platform, Standard Edition): phiên bản chuẩn chạy trên cácmáy PC và laptop với một số MB bộ nhớ Các máy tính này mặc dù không có cấuhình mạnh bằng máy chủ nhưng vẫn mạnh hơn nhiều so với các thiết bị di động
J2ME (Java 2 Platform, Micro Edition): là phiên bản rút gọn của Java cho
thiết bị di động giới hạn về bộ nhớ và tốc độ xử lý
1.2 Cấu trúc J2ME
1.2.1 Giới thiệu về J2ME
J2ME được phát triển từ kiến trúc Java Card, Embeded Java và Personal
Java của phiên bản Java 1.1 Đến sự ra đời của Java 2 thì Sun quyết định thay thế
Personal Java và được gọi với tên Java Micro Edition, hay viết tắt là J2ME Đúngvới tên gọi, J2ME là nền tảng cho thiết bị có tính chất nhỏ, gọn
Trang 10Với sự cam kết của hãng Sun, J2ME sẽ trở thành chuẩn chung cho các nhà
sản xuất phần cứng thiết bị di động
Mục tiêu của J2ME là cho phép người lập trình viết các ứng dụng độc lậpvới thiết bị di động, không cần quan tâm đến phần cứng Để đạt được mục tiêunày, J2ME được xây dựng bằng các tầng (layer) khác nhau để giấu đi việc thựchiện phần cứng khỏi nhà phát triển
Hình 1.1 Các thành phần trong nền tảng Java
1.2.2 Định nghĩa về Configuration (Cấu hình)
Là đặc tả định nghĩa một môi trường phần mềm cho một dòng các thiết bịđược phân loại bởi tập hợp các đặc tính
Ví dụ như: kiểu và số lượng bộ nhớ, kiểu và tốc độ bộ vi xử lý, kiểu mạng kết nối
Do đây là đặc tả nên các nhà sản xuất thiết bị như Samsung, Nokia …bắt
buộc phải thực thi đầy đủ các đặc tả do Sun qui định để các lập trình viên có thể
dựa vào môi trường lập trình nhất quán và thông qua sự nhất quán này, các ứngdụng được tạo ra có thể mang tính độc lập thiết bị cao nhất có thể
Ví dụ như một lập trình viên viết chương trình game cho điện thoạiSamsung thì có thể sửa đổi chương trình một cách tối thiểu nhất để có thể chạy
trên điện thoại Nokia Qua đây ta thấy khẩu hiệu “Write Once, Run Everywhere”
Trang 11của Java đã không còn đúng nữa, nhưng ta cũng phải đánh giá cao sự nổ lực của
Sun trong việc tạo ra một môi trường phần mềm chung cho vô số chủng loại thiết
bị di động có trên thị trường
Hiện nay Sun đã đưa ra 2 dạng Configuration: CLDC và CDC.
a ) CLDC (Connected Limited Device Configuration)
Cấu hình thiết bị kết nối giới hạn: được thiết kế để nhắm vào thị trường cácthiết bị cấp thấp (low-end), các thiết bị này thông thường là máy điện thọai diđộng và PDA với khoảng 512 KB bộ nhớ
Vì tài nguyên bộ nhớ hạn chế nên CLDC được gắn với Java không dây(Java Wireless), dạng như cho phép người sử dụng mua và tải về các ứng dụngJava Ví dụ như là Midlet
b) CDC (Connected Device Configuration)
Cấu hình thiết bị kết nối: CDC được đưa ra nhắm đến các thiết bị có tínhnăng mạnh hơn dòng thiết bị thuộc CLDC nhưng vẫn yếu hơn các hệ thống máy
để bàn sử dụng J2SE Những thiết bị này có nhiều bộ nhớ hơn (thông thường làtrên 2Mb) và có bộ xử lý mạnh hơn Các sản phẩm này có thể kể đến như các máyPDA cấp cao, điện thoại web, các thiết bị gia dụng trong gia đình …
Cả 2 dạng Cấu hình kể trên đều chứa máy ảo Java (Java Virtual Machine)
và tập hợp các lớp (class) Java cơ bản để cung cấp một môi trường cho các ứngdụng J2ME Tuy nhiên, cần chú ý đối với các thiết bị cấp thấp, do hạn chế về tàinguyên như bộ nhớ và bộ xử lý nên không thể yêu cầu máy ảo hỗ trợ tất cả cáctính năng như với máy ảo của J2SE Ví dụ, các thiết bị thuộc CLDC không cóphần cứng yêu cầu các phép tính toán dấu phẩy động, nên máy ảo thuộc CLDCkhông được hỗ trợ kiểu float và double
Trang 12c) Sự khác nhau giữa 2 khái niệm CLDC và CDC
Hình 1.2 Phân tầng thiết bị giữa CDC và CLDC
Trang 13d) Chi tiết về CLDC
Hình 1.3 Các tầng của CLDC J2MEMỗi tầng ở trên tầng phần cứng là tầng trừu tượng hơn cung cấp cho lậptrình viên nhiều giao diện lập trình ứng dụng (API-Application Program Interface)thân thiện hơn
Tầng phần cứng thiết bị (Device Hardware Layer): Đây là thiết bị diđộng thật sự với cấu hình phần cứng (bộ nhớ và tốc độ xử lý) cụ thể Các thiết bị
di động có thể có bộ vi xử lý khác nhau và các tập lệnh khác nhau Mục tiêu củaJ2ME là cung cấp một chuẩn cho tất cả các loại thiết bị di động khác nhau
Tầng máy ảo Java (Java Virtual Machine Layer): Khi mã nguồn đượcbiên dịch nó được chuyển đổi thành mã byteCode Mã byteCode này sau đó đượcchuyển thành mã ngôn ngữ máy của thiết bị di động Tầng máy ảo bao gồm KVM(K Virtual Machine) là bộ biên dịch mã byteCode có nhiệm vụ chuyển mãbyteCode của chương trình Java thành ngôn ngữ máy để chạy trên các thiết bị diđộng Tầng này cung cấp một sự chuẩn hoá cho các thiết bị di động để chạy ứngdụng J2ME sau khi đã biên dịch có thể chạy trên bất kỳ một thiết bị di động nào có
hỗ trợ J2ME KVM
Tầng cấu hình (configuration Layer): Cung cấp các hàm API cơ bản là
nhân của J2ME Lập trình viên có thể sử dụng các lớp và các phương thức của cácAPI này tuy nhiên tập các API hữu dụng hơn được chứa trong tầng hiện trạng(profile layer)
Trang 14Tầng hiện trạng (profile Layer): Profile mở rộng Configuration bằng
cách thêm vào các lớp để bổ trợ các tính năng cho từng thiết bị chuyên biệt Cả 2Configuration đều có những profile liên quan và từ những profile này có thể dùngcác lớp lẫn nhau
Đến đây ta có thể nhận thấy do mỗi profile định nghĩa một tập hợp các classkhác nhau, nên thường không thể chuyển một ứng dụng Java viết cho một profilenày và chạy trên một máy hỗ trợ một profile khác Cũng với lý do đó, chúng takhông thể lấy một ứng dụng viết trên J2SE hay J2EE và chạy trên các máy hỗ trợJ2ME Các profile tiêu biểu:
- Mobile Information Device Profile (MIDP): Profile sẽ bổ sung các tính năngnhư hỗ trợ kết nối, các thành phần hỗ trợ giao diện người dùng vào CLDC Profilenày được thiết kế chủ yếu để nhắm vào điện thoại di động với đặc tính là màn hìnhhiển thị hạn chế, dung lượng chứa có hạn Do đó MIDP sẽ cung cấp một giao diệnngười dùng đơn giãn và các tính năng mạng đơn giãn dựa trên HTTP Có thể nóiMIDP là profile nổi tiếng nhất bởi vì nó là kiến thức cơ bản cho lập trình Java trêncác máy di động (Wireless Java)
- PDA Profile: Tương tự MIDP, nhưng với thị trường là các máy PDA với màn
- RMI profile: Mở rộng từ Foundation prrofile cung cấp RMI cho thiết bị RMIprofile sẽ được dùng để tạo sự tương thích giữa các thiết bị cầm tay với J2SE RMIAPI
Ngoài ra còn có Personal Basis Profile, Game Profile
Trang 15Hình 1.4 Vị trí các profile trong J2ME
1.3 Sự khác biệt giữa J2ME và J2SE
1.3.1 Sự khác biệt
Giữa J2SE và J2ME có các điểm khác nhau là do 2 nguyên nhân Do lớpJava đã bị bỏ đi để giảm kích thước của J2ME hoặc do lớp bị bỏ bởi vì nó ảnhhưởng đến sự an toàn, bảo mật của thiết bị di động hay của các ứng dụng khác trênthiết bị di động (có thể dẫn đến phát sinh virus)
Điểm khác biệt chính là J2ME không có phép toán số thực Không có JNI(JavaNative Interface Support) do đó không thể truy xuất các chương trình khácđược viết bằng ngôn ngữ của thiết bị (như C hay C++) Đa tuyến (thread) đượccho phép nhưng không có các nhóm đa tuyến (thread group) và các daemonthread
CLDC định nghĩa một mô hình an toàn, bảo mật được thiết kế để bảo vệthiết bị di động, KVM và các ứng dụng khác khỏi các mã phá hoại.
Hình 1.5 Mối quan hệ giữa J2SE, CDC, CLDC
Trang 161.3.2 Các lớp trong J2ME kế thừa từ J2SE
Trang 17đã biết, MIDP được thiết kế cho các máy di động có cấu hình rất thấp Trong phầnsau sẽ liệt kê qua các tính năng mà MIDP cung cấp và những giới hạn của nó.
1.4.2 Những hạn chế của MIDP
Phép tính dấu phẩy động (floating point): Phép tính này đòi hỏi rất nhiều tàinguyên CPU và phần lớn các CPU cho các thiết bị di động không hỗ trợ phép tínhnày, do đó MIDP cũng không có
Bộ nạp class (Class Loader)
Hỗ trợ từ khóa finalize() như trong J2SE: Việc “dọn dẹp“ tài nguyên trướckhi nó bị xóa được đẩy về phía các lập trình viên
Không hỗ trợ JNI
Trang 18điều đó không có nghĩa là mất đi mọi dữ liệu quan trọng mỗi khi tắt máy, Sun đã
cung cấp một chức năng khác tương đương gọi là Record Management system(RMS) để cung cấp khả năng lưu trữ cho các thiết bị này
1.4.3 Những chức năng MIDP
Các lớp và kiểu dữ liệu: Phần lớn các lớp mà các lập trình viên Java quenthuộc vẫn còn được giữ lại ví dụ như các lớp trong gói java.util như Stack, Vector
và Hastable cũng như Enumeration
Hỗ trợ đối tượng Display: Đúng như tên gọi một chương trình MIDP sẽ hỗtrợ duy nhất một đối tượng Display là đối tượng quản lý việc hiển thị dữ liệu trênmàn hình điện thoại
Hỗ trợ Form và các giao diện người dùng
Hỗ trợ Timer và Alert
Cung cấp tính năng Record Management System (RMS) cho việc lưu trữ
dữ liệu
Ngoài ra vào tháng 11 năm 2003 Sun đã tung ra MIDP 2.0 với hàng loạt
tính năng khác được cung cấp thêm so với bản 1.0 (Hiện nay tại Việt Nam đã cónhững đời điện thoại hỗ trợ MIDP 2.0 ví dụ như Nokia 6600 hay Sony EricssonP900,…)
Nâng cấp các tính năng bảo mật như
- Download qua mạng an toàn hơn qua việc hỗ trợ giao thức HTTPS
- Kiểm soát việc kết nối giữa máy di động và server: ví dụ như các chươngtrình không thể kết nối tới server nếu thiếu sự chấp thuận của người sử dụng
Thêm các API hỗ trợ Multimedia Một trong nhưng cải tiến hấp dẫn nhấtcủa MIDP 2.0 là tập các API media của nó Các API này là một tập con chỉ hỗ trợ
âm thanh của Mobile Media API (MMAPI)
Trang 19 Mở rộng các tính năng của Form Nhiều cải tiến đã được đưa vào APIjavax.microedition.lcdui trong MIDP 2.0, nhưng các thay đổi lớn nhất (ngoài APIcho game) là trong Form và Item
Hỗ trợ các lập trình viên Game bằng cách tung ra Game API: Có lẽ Sun đã
kịp nhận ra thị trường đầy tiềm năng của các thiết bị di động trong lĩnh vực Game.Với MIDP 1.0 thì các lập trình viên phải tự viết code để quản lý các hành độngcủa nhân vật cũng như quản lý đồ họa Việc này sẽ làm tăng kích thước file củasản phẩm cũng như việc xuất hiện các đoạn mã bị lỗi Được hưởng lợi nhất từGame API trong MIDP 2.0 không chỉ là các lập trình viên Game mà còn là các lậptrình viên cần sử dụng các tính năng đồ họa cao cấp
Ý tưởng cơ bản của Game API là việc giả định rằng một màn hình game làtập hợp các layer (lớp) Ví dụ như: trong một game đua xe thì màn hình nền là mộtlayer, con đường là một layer và chiếc xe được xem như đang nằm trên layer khác
Với Game API nhà phát triển còn được cung cấp các tính năng như quản lýcác thao tác bàn phím
Hỗ trợ kiểu ảnh RGB: một trong những cải tiến hấp dẫn cho các nhà pháttriển MIDP là việc biểu diễn hình ảnh dưới dạng các mảng số nguyên, cho phépMIDlet thao tác với dữ liệu hình ảnh một cách trực tiếp
1.4.4 File lưu trữ JAR
Tất cả các lớp được biên dịch và các file cần thiết cho việc thực thi ứngdụng MIDlet phải được đóng gói trong một tệp tin JAR (Java archive) File nàybao gồm các lớp của MIDLet, các file hình ảnh (hiện tại MIDP chỉ hỗ trợ địnhdạng hình ảnh png), file dữ liệu ứng dụng và file manifest (tập tin thống kê) Filemanifest này mô tả nội dung của file JAR trong đó có chứa danh sách các thuộctính
1.4.5 Tập tin Manifest và Bộ mô tả ứng dụng JAD
Tập tin menifest và tập tin JAD (bộ mô tả JAD) mô tả đặc điểm củaMIDlet Sự khác biệt giữa hai tập tin này là tập tin kê khai (manifest) là một phầncủa tập tin JAR còn tập tin JAD thì không thuộc tập tin JAR
Nội dung tập tin manifest:
Trang 20Thuộc tính file Manifest mô tả
MIDlet-Name tên MIDlet
MIDlet-Version phiên bản của MIDlet
MIDlet-Vendor tên nhà cung cấp MIDlet
MIDlet-n tên tương ứng với từng MIDlet.Giá trị có thể là
tên MIDlet hoặc Biểu tượng tuỳ chọn, tên lớpMIDlet
MicroEdition- Profile phiên bản profile J2ME cần thiết để chạyMIDlet
MicroEdition-Configuration Định danh cấu hình J2ME cần thiết để
MicroEdition-Profile: MIDP-2.0
1.4.6 Vòng đời của một MIDP
Một MIDlet phải chứa ba phương thức trừu tượng chúng được gọi bởi trìnhquản lý ứng dụng để quản lý vòng đời của một MIDlet Các phương thức gồm có:DictionaryApp( ), pauseApp( ) và destroyApp(boolean b) tương ứng với các trạngthái Active, Paused và Destroyed
Phương thức DictionaryApp( ) được trình quản lý ứng dụng gọi khi mộtMIDlet được khởi tạo và mỗi khi MIDlet trở về trạng thái dùng Các biến toàn cục
Trang 21sẽ được khởi tạo lại trừ hàm tạo vì các biến này đều được giải phóng bởi phươngthức pauseApp( ).
Phương thức pauseApp( ) được gọi bởi trình quản lý ứng dụng mỗi khi ứngdụng cần tạm thời dừng hoạt động MIDlet Trình quản lý ứng dụng khởi động lạiMIDlet bằng việc gọi lại phương thức DictionaryApp( ) Khi phương thức nàyđược gọi sẽ thực hiện giải phóng các tài nguyên để dành cho các chức năng khác
Phương thức destroyApp( ) được trình quản lý ứng dụng gọi mỗi khi kếtthúc hoạt động của một MIDlet Phương thức này chỉ nhận một tham số kiểuBoolean Nếu tham số này là true, MIDlet sẽ được thoát vô điều kiện; ngược lạiMIDlet có thêm tuỳ chọn từ chối thoát bằng cách phát sinh ngoại lệMIDletStateChangeException báo với trình quản lý ứng dụng biết MIDlet chưamuốn kết thúc
Chu kỳ của một MIDlet
Hình 1.6 Vòng đời một MIDlet
Trang 22CHƯƠNG II MÔI TRƯỜNG LẬP TRÌNH
2.1 Môi trường lập trình
2.1.1 Quá trình phát triển ứng dụng J2ME
Thông thường, việc phát triển ứng dụng J2ME được tiến hành qua các giaiđoạn như sau:
2.1.2 Các IDE thường dùng trong lập trình J2ME
Môi trường phát triển tích hợp (IDE) cải thiện năng suất của lập trình viênbằng cách cung cấp một tập các công cụ lập trình tích hợp thông qua giao diện đồhoạ, công cụ hỗ trợ soạn thoả, quản lý project, biên dịch và gỡ lỗi
Thành viên mới nhất trong gia đình Java là J2ME Khi nhiều chuyên gia dựđoán về sự phát triển lớn mạnh của thị trường phát triển các ứng dụng J2ME, cácnhà phát triển IDE đã đưa ra các bản mở rộng cho các sản phẩm IDE của họ để hỗtrợ thêm J2ME Ngoài ra, các nhà cung cấp chuyên nghiệp khác cũng đã phát triểncác IDE đơn dành riêng cho J2ME
Một IDE cho J2ME cần phải cung cấp các tiện ích sau:
Quản lý project: Quản lý các tập tin và các thông số MIDlet
Trình soạn thảo: Soạn thảo mã nguồn và các tài nguyên
Biên dich: Biên dịch, obfuscate và pre-verify mã nguồn
Đóng gói (package): Đóng gói các MIDlet các file tài nguyên thànhcác tập tin JAR và JAD
Trang 23 Trình giả lập (emulator): Thực thi các MIDlet với một trình giả lập
Gỡ rối (debugger)
Phần này sẽ đề cập đến một vài IDE thông dụng để phát triển J2ME trong
đó bao gồm: J2ME Wireless Toolkit, Borland Jbuilder, NetBean
a) J2ME Wireless Toolkit
J2ME WireLess Toolkit (WTK) là một bộ công cụ do Sun phát triển Nó
cung cấp giúp các lập trình viên môi trường giả lập, công cụ, tài liệu và các ví dụcần thiết để phát triển các ứng dụng MIDP WTK không phải là một IDE hoànchỉnh, bởi nó đã bỏ đi tính năng soạn thảo và gỡ rối thành phần không thể thiếucủa một IDE Tuy nhiên Ktoolbar, được cung cấp trong bộ WTK là một môitrường phát triển tối thiểu cung cấp một giao diện GUI dành cho việc biên dịch,đóng gói và thực thi các ứng dụng MIDP
WTK 2.5.2 cung cấp các bộ giả lập đã được cải tiến với các tính năng giảlập, monitor và debug mới
WTK 2.5.2 được cải thiện tốc độ và hỗ trợ các API mới gồm:
Connected Limited Device Configuration (CLDC) 1.1 (JSR 139)
Connected Limited Device Configuration (CLDC) 1.1 (JSR 139)
Mobile Information Device Profile (MIDP) 2.0 (JSR 118)
Java Technology for the Wireless Industry (JTWI) 1.0 (JSR 185)
Wireless Messaging API (WMA) 2.0 (JSR 205)
Mobile Media API (MMAPI) 1.1 (JSR 135)
PDA Optional Packages for the J2ME Platform (JSR 75)
Java APIs for Bluetooth (JSR 82)
J2ME Web Services Specification (JSR 172)
Mobile 3D Graphics API for J2ME (JSR 184)
Mỗi project có một thư mục dành riêng trong thư mục apps Khi projectđược tạo, cấu trúc thư mục sẽ được tạo Ngoài ra các tập tin JAD và manifest cũngđược phát sinh dựa vào các thông số của MIDlet suite đã được xác định Tuynhiên, không có tập tin nguồn nào được phát sinh cho MIDlet Lập trình viên phải
Trang 24viết các tập tin nguồn này từ đầu KToolbar không hỗ trợ nạp nhiều project trongmột GUI (Graphical User Interface).
Tạo lập và đóng gói: KToolBar cung cấp hỗ trợ cho việc biên dịch một dự
án Một dự án được dịch và tiền kiểm tra trong một bước thực hiện
Trình giả lập: WTK cung cấp các giả lập để thực thi ứng dụng MIDP Các
thiết bị giả lập hỗ trợ:
DefaultColorPhone: Điện thoại mặc định với màn hình màu
DefaultGrayPhone: Điện thoại với màn hình xám
MediaControlSkin: Điện thoại màn hình màu
QwertyDevice: Điện thoại với bàn phím Qwerty
b) Borland Jbuilder
Môi trường phát triển làm việc của Jbuilder cho J2ME hoàn toàn giống nhưmôi trường phát triển các ứng dụng Java bình thường nhưng có thêm các tabs vàoptions trong hộp thoại để hỗ trợ J2ME và hai wizard mới: MIDP MIDlet wizard
và MIDP Displayable wizard Trong Archive Builder có thể tạo ra một MIDletsuite với các tập tin manifest và JAD tương ứng JBuilder 2005 cũng cài đặt WTK2.1 được sử dụng như một môi trường giả lập
Ngoài các tính năng chính của Jbuilder, khi lập trình cho J2ME chúng ta cóthêm các tính năng sau:
Gõ mã cho các lớp CLDC/MIDP
Duyệt các lớp, các gói cho các lớp CLDC/MIDP
Chuyển đổi giữa các JDK
Đây là một IDE mã nguồn mở dùng cho lập trình Java; cùng với EclipseME
và J2ME Wireless Toolkit tạo thành một bộ IDE hoàn chỉnh cho việc phát triểncác ứng dụng J2ME
Trang 252.1.3 Công cụ thực hiện
Đề tài được thực hiện trên môi trường Windows XP
Công cụ lập trình: NetBean 6.1
J2ME Wireless toolkit 2.5.2
2.1.4 Thiết lập môi trường
Cài đặt bộ NetBeans: Có thể download tại trang Web www netbeans org
đây là IDE hỗ trợ cho việc lập trình Java trên Desktop
Cài đặt J2ME Wireless Toolkit 2.5.2: Có thể lấy bộ công cụ này về từ địa
chỉ java.sun.com/products/j2mewtoolkit/
2.1.5 Ứng dụng khi sử dụng NetBeans
a) Giao diện NetBeans
Hình 2.1 Giao diện NetBeans
Trang 26b) Triển khai ứng dụng J2ME đầu tiên
Bước 1 tạo một project mới
Trên thanh Menu chọn File New Project.
Hình 2.2 Tạo một Project mới
Hộp thoại New Project xuất hiện
Chọn Mobility MIDP Application rồi chọn Next.
Hình 2.3 Hộp thoại chọn project tương ứng
Trang 27Gõ tên project vào vùng Text rồi chọn Next.
Hình 2.4 Đặt tên cho projectNhấn Finish để kết thúc tạo một Project
Hình 2.5 Hoàn thành việc tạo một project