Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
847,17 KB
Nội dung
Chương 1 : Tổng quan về lập trình trên điện thoại di động 18 Cửa sổ quản lý dự án. Các thư viện khác có thể được tích hợp vào trong công cụ bằng tab Filesystems trên cửa sổ Explorer. Hình 1-6 : Cửa sổ quản lý tập tin của Sun ONE Studio 5 Chương 1 : Tổng quan về lập trình trên điện thoại di động 19 Editor : Màn hình soạn thảo mã nguồn Các đặc điểm chính của màn hình soạn thảo mã nguồn : Tô màu các từ khóa trong ngôn ngữ Java. Đánh số dòng. Xem nhiều tập tin trong cùng một cửa sổ. Định dạng mã nguồn tự động Code completion. Biên dịch và đóng gói : Sun ONE Studio cung cấp trợ giúp trong việc biên dịch và đóng gói một dự án. Với công cụ này chúng ta có thể kết hợp việc tạo ra đóng gói trong khi thực hiện biên d ịch. Khi biên dịch, Sun ONE Studio : Dịch MIDlet và tạo ra các tập tin .class. Thực hiện tiền kiểm tra các lớp đã được biên dịch. Tạo tập tin JAR. Chương 1 : Tổng quan về lập trình trên điện thoại di động 20 Tạo tập tin JAD. Trình giả lập : Mặc định khi cài đặt, Sun ONE Studio dùng trình giả lập của WTK để chạy các ứng dụng MIDP, ngoài ra, chúng ta cũng có thể thêm vào các trình giả lập khác do hãng thứ ba phát triển bằng chức năng Device Emulator Registry. Chỉ các trình giả lập có hỗ trợ môi trường giả lập J2ME SDK mới có thể được dùng chung với Sun ONE Studio. Nghĩa là chúng ta có thể dùng chung công cụ này với Nokia Developer’s Suite hay Siemens Mobility Toolkit mà không gây ảnh hưởng gì đến đề án. Tab Runtime trong cửa sổ Explorer được dùng để quản lý Device Emulator Registry. Qua chức năng này, chúng ta có thể thêm, xóa hay chọn trình giả lập mặc định để sử dụng. Màn hình quản lý trình giả lập. Chương 1 : Tổng quan về lập trình trên điện thoại di động 21 Bộ gỡ rối (Debugger) : Sun ONE Studio cung cấp một trình gỡ rối có thể dùng để dò tìm các lỗi trong ứng dụng MIDP. Khi một phiên gỡ rối được bắt đầu, màn hình bao gồm ba cửa sổ là : Debugger Window, Output Window và Source Editor sẽ xuất hiện. Màn hình Debugger chứa 7 màn hình con, giúp chúng ta xem xét những gì đang diễn ra trong ứng dụng MIDP của chúng ta, đó là các màn hình : Session : liệt kê các ứng dụng đang chạy. Breakpoints : liệt kê các breakpoint được thiết lập. Breakpoint có thể được thiết lập trên một dòng lệnh, trên tên phương thức, trên một ngoại lệ, lớp, luồng hay một biến. Thread : liệt kê các luồng và nhóm luồng đang chạy trong phiên làm việc hiện hành. Call Stack : liệt kê sơ đồ các lời gọi hàm được thực hiện trong quá trình thực thi luồng hiện hành. Phương thức được thực thi cuối cùng sẽ ở đầu danh sách. Phương thức được thực thi đầu tiên sẽ nằm ở cuối danh sách. Watches : danh sách các biến và biểu thức mà chúng ta cần khảo sát giá trị trong quá trình gỡ rối. Ở đây chúng ta có thể thay đổi giá trị các biến khi chúng đang chạy. Variable : liệt kê các biến cục bộ, các thực thể và các biến tĩnh trong phạm vi của phương thức mà chúng ta đang xem xét. Classes : liệt kê các lớp được sử dụng bởi tiến trình đang được gỡ rối. Chương 1 : Tổng quan về lập trình trên điện thoại di động 22 Màn hình gỡ rối của Sun ONE Studio Nhận xét : Sun ONE Studio là một trong những chương trình phát triển miễn phí đầu tiên cho J2ME. Hầu như tất cả các đặc tính mà một lập trình viên mong đợi đều được tích hợp vào trong công cụ này. Một lập trình viên có hiểu biết vể MIDP và đã có kinh nghiệm trong việc sử dụng Sun ONE Studio có thể dùng nó để phát triển ứng dụng MIDP chỉ sau một vài giờ tìm hiểu. Tuy nhiên, Sun ONE Studio lại thiếu các đặc điểm khác khi lập trình J2ME để có thể giúp nó nổ i trội hơn các trình soạn thảo đối thủ khác. Hầu hết các đặc điểm có được là do được đem từ phiên bản dành cho J2SE sang. Sun ONE Studio là một phiên bản miễn phí. Do đó một số chức năng của nó vẫn chưa thực sự tốt so với các công cụ thương mại khác. Chương 2 : Giới thiệu khái quát về chuẩn J2ME 23 Chương 2 : GIỚI THIỆU KHÁI QUÁT VỀ CHUẨN J2ME 2.1. Nền tảng Java : Khi Sun Microsystems nhận ra rằng việc tạo ra một nền tảng chung để chạy trên tất cả các môi trường là điều không thể thực hiện được, công ty đã quyết định chia công nghệ Java của mình thành 3 phiên bản, mỗi phiên bản được ứng dụng trong một lĩnh vực riêng biệt, các phiên bản đó là : Java 2 Platform, Enterprise Edition (J2EE™) phục vụ cho các nhu cầu về thương mại như phục vụ khác hàng, các vấn đề về phân phối, các vấn đề về nhân sự. Phiên bản này được chạy trên các máy server. Java 2 Platform, Standard Edition (J2SE™) được cung cấp cho thị trường máy tính để bàn trong các máy tính phục vụ văn phòng hay trong gia đình. Java 2 Platform, Micro Edition (J2ME™) chạy trên các máy với tài nguyên hạn chế. Hình vẽ sau minh họa các phiên bản hiện có của Java và lĩnh vực ứng dụng của chúng, bắt đầu từ bên trái là các nền tảng cao cấp sang bên phải là các nền tảng cấp thấp hơn. Java 2 Enterprise Edition hỗ trợ các máy tính dùng trong doanh nghiệp, Java 2 Standard Edition hỗ trợ cho các máy tính các nhân, máy tính để bàn. Java 2 Micro Edition được chia thành 2 loại cho các thiết bị cấp cao (máy PDA cấp cao, điện thoại web) và các thiết bị cấp thấp (điện thoại di động và PDA với khoảng 512KB bộ nhớ). Chương 2 : Giới thiệu khái quát về chuẩn J2ME 24 Hình 2-1 : Kiến trúc J2ME Kiến trúc J2ME được thiết kế để có thể hỗ trợ các thiết bị nhúng khác nhau trên thị trường. Để làm được như thế, môi trường J2ME cung cấp nhiều loại máy ảo Java (Java Virtual Machine) khác nhau. Với các thiết bị cấp thấp, tài nguyên hạn chế, môi trường J2ME cung cấp một cấu hình máy ảo Java rất nhỏ và các thư viện Java chỉ gồm các gói/lớp cần thiết cho thiết bị. Giống như việc các nhà s ản xuất thiết bị phát triển các tính năng khác trong sản phẩm của mình, cấu hình này có thể được mở rộng với các thư viện mới phục vụ cho nhu cầu của thị trường. Để hỗ trợ cho khả năng tùy biến và khả năng mở rộng này, chúng ta có 3 khái niệm sau trong kiến trúc J2ME. Configuration (Cấu hình) : 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 Một configuration định nghĩa các đặc điểm của máy ảo Java và cung cấp các thư viện lớp tối thiểu mà 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 lập trình viên có thể dựa vào môi trường lập trình nhất Chương 2 : Giới thiệu khái quát về chuẩn J2ME 25 quán và thông qua sự nhất quán này, các ứng dụng được tạo ra có thể mang tính độc lập thiết bị cao nhất có thể. Profile : Profile mở rộng configuration bằng cách thêm vào các class để bổ trợ các tính năng cho từng thiết bị chuyên biệt. Mỗi profile định nghĩa một tập hợp các class khác nhau, nên thường ta không thể chuyển một ứng dụng Java viết cho một profile nà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 ta khô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. Một thiết bị có thể hỗ trợ nhiều profile. Optional package : Là các API có thể sử dụng trong nhiều thiết bị hay một họ các thiết bị. Một J2ME option package là một tập các API nằm trên một profile. Một optional package thường chứa các chức năng độc lập với các thiết bị. Mục đích chính của các optional package này là cho phép bổ sung các API trên các profiles. Một thiết bị có thể hỗ trợ nhiều optional package khác nhau. Configurations, profiles và các optional packages sử dụng các tính năng của máy ảo Java (Java Virtual Machine). Máy ảo này chạy trên một hệ điều hành thuộc về phần mềm hệ thống của thiết bị. Quan hệ của chúng được thể hiện qua hình vẽ sau : Chương 2 : Giới thiệu khái quát về chuẩn J2ME 26 Hình 2-2 : Các thành phần trong kiến trúc J2ME Configuration : Trong môi trường J2ME, một ứng dụng được viết cho một profile riêng biệt nào đó, profile này lại mở rộng từ một configuration. Vì thế, tất cả các đặc điểm của một configuration sẽ được giữ lại trong profile có thể được sử dụng bởi ứng dụng viết cho profile này. Một configuration định nghĩa một nền Java cho các thiết bị có các đặc tính tương tự nhau (chẳng h ạn như về bộ nhớ, tốc độ xử lý,…). Một configuration sẽ xác định : • Các tính năng của ngôn ngữ Java được hỗ trợ. • Các tính năng của máy ảo Java được hỗ trợ. • Thư viện chuẩn và các API . Nói một cách đơn giản, một configuration định nghĩa một đặc tả mà các nhà sản xuất thiết bị và những người xây dựng profile phải tuân theo. Tất cả các thi ết bị có chung đặc tính (bộ nhớ, tốc độ xử lý) phải “đồng ý” cài đặt đúng các đặc điểm được xác định và những người xây dựng profile chỉ được sử dụng các đặc tính được định nghĩa trong configuration. Một lập trình viên viết chương trình game cho điện Chương 2 : Giới thiệu khái quát về chuẩn J2ME 27 thoại Samsung thì có thể sửa đổi chương trình của mì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 Anywhere” của Java đã không còn đúng nữa, nhưng chú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 : a) CLDC - Connected Limited Device Configuration : CLDC được thiết kế để nhắm vào thị trường các thiết bị cấp thấp (low-end), các thiết bị này thông thường là máy nhắn tin, máy điện thoại di động và PDA. Các thiết bị này có giao diện đơn giản, bộ nhớ khoảng 32K đến 512 KB bộ nhớ, băng thông nhỏ, trong các thiết bị này, việc truyền thông trên mạng không dựa vào giao thức TCP/IP. 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ụng Java, ví dụ như là Midlet. b) CDC - Connected Device Configuration : CDC được đưa ra nhắm đến các thiết bị có tính nă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. Các thiết bị thuộc loại này bao gồm các hộp điều khiển TV, tivi Internet, điện thoại Internet, các thiết bị giải trí, định hướng. Các thiết bị này có giao diện phong phú, bộ nhớ nhiều hơn (thông thường là trên 2Mb) và có bộ xử lý mạnh hơn, băng thông lớn và sử dụng giao thức TCP/IP. 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 ứng dụng J2ME. Tuy nhiên, chú ý rằng đối với các thiết bị cấp thấp, do hạn chế về tài nguyê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ác tí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 hỗ trợ các phép tính toán dấu phẩy động, nên máy ảo thuộc CLDC không được hỗ trợ kiểu float và double. [...]... java. io.DataOutputStream java. io.InputStream java. io.InputStreamReader java. io.OutputStream java. io.OutputStreamWriter java. io.PrintStream java. io.Reader java. io.Writer • Calendar and Time Classes java. util.Calendar java. util.Date java. util.TimeZone • Utility Classes java. lang.Math java. util.Random 30 Chương 2 : Giới thiệu khái quát về chuẩn J2ME • Exception Classes java. io.EOFException java. io.InterruptedIOException java. io.IOException... Classes) java. lang.Boolean java. lang.Byte java. lang.Character java. lang.Integer java. lang.Long java. lang.Short • Collection Classes java. util.Enumeration (interface) java. util.Hashtable java. util.Stack java. util.Vector • Các lớp nhập/xuất (Input/output Classes) java. io.ByteArrayInputStream java. io.ByteArrayOutputStream java. io.DataInput (interface) java. io.DataInputStream java. io.DataOutput (interface) java. io.DataOutputStream... quản lý việc hiển thị dữ liệu trên mà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 20 03 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ó rất nhiều đời điện thoại hỗ trợ MIDP 2.0 như Nokia 6600, Sony... KHÔNG hỗ trợ các tính năng sau : • 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ài nguyê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ính nà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ước khi nó bị xóa được đẩy về phía các lập trình viên • Không hỗ trợ JNI • Hỗ trợ. .. java. io.IOException java. io.UnsupportedEncodingException java. io.UTFDataFormatException java. lang.ArithmeticException java. lang.ArrayIndexOutOfBoundsException java. lang.ArrayStoreException java. lang.ClassCastException java. lang.ClassNotFoundException java. lang.Exception java. lang.IllegalAccessException java. lang.IllegalArgumentException java. lang.IllegalMonitorStateException java. lang.IllegalThreadStateException java. lang.IndexOutOfBoundsException... java. lang.IndexOutOfBoundsException java. lang.InstantiationException java. lang.InterruptedException java. lang.NegativeArraySizeException java. lang.NullPointerException java. lang.NumberFormatException java. lang.RuntimeException java. lang.SecurityException java. lang.StringIndexOutOfBoundsException java. util.EmptyStackException java. util.NoSuchElementException • Error Classes java. lang.Error java. lang.OutOfMemoryError java. lang.VirtualMachineError... thiết bị, chỉ có một phần mã dùng để quản lý bộ nhớ, điều khiển lỗi, xử lý sự kiện… là phụ thuộc vào thiết bị 2 .3 MIDP : 2 .3. 1 Định nghĩa : Đây là Profile được định nghĩa dành riêng cho các thiết bị di động và là thành phần chính trong J2ME MIDP cung cấp các chức năng cơ bản cho hầu hết các dòng thiết bị di động phổ biến nhất như các máy điện thoại di động và các máy PDA Tuy nhiên MIDP cũng có nhiều hạn... cầu khoảng 160 KB để chạy máy ảo Java và các thư viện cơ bản Do đó, chỉ có một số lớp trong J2SE là được giữ lại trong CLDC : • Các lớp hệ thống (system classes) java. lang.Class java. lang.Object java. lang.Runnable (interface) java. lang.Runtime java. lang.String 29 Chương 2 : Giới thiệu khái quát về chuẩn J2ME java. lang.StringBuffer java. lang.System java. lang.Thread java. lang.Throwable • Các lớp thuộc... System.getProperty("microedition.encoding") o Lấy tên và phiên bản của cấu hình (configuration) System.getProperty("microedition.configuration") o Lấy tên của các profile được hỗ trợ : System.getProperty("microedition.profiles") K Virtual Machine : KVM là một máy ảo Java phù hợp với CLDC mà Sun MicroSystems đã phát triển KVM được thiết kế nhỏ và hiệu quả, KVM được viết bằng C để có thể hỗ trợ tốt tính năng... điều hành trên các thiết bị thì thay đổi tùy theo thiết bị, do đó, MIDP không quá khắt khe về các yêu cầu phần mềm Sau đây là một số yêu cầu : • Hệ điều hành trên các thiết bị phải cung cấp khả năng xử lý ngoại lệ, xử lý ngắt, và phải chạy được máy ảo Java • Hỗ trợ vẽ ảnh bitmap ra màn hình • Dùng một trong 3 loại thiết bị nhập đã liệt kê ở trên, • Hỗ trợ đọc và ghi dữ liệu từ bộ nhớ chính 2 .3. 3 Các khả . bị di động phổ biến nhất như các máy điện thoại di động và các máy PDA. Tuy nhiên MIDP cũng có nhiều hạn chế lớn cũng vì chỉ được thiết kế cho các máy di động có cấu hình rất thấp. 2 .3. 2 • 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ên màn hình điện thoại. • Hỗ trợ. cấp thấp hơn. Java 2 Enterprise Edition hỗ trợ các máy tính dùng trong doanh nghiệp, Java 2 Standard Edition hỗ trợ cho các máy tính các nhân, máy tính để bàn. Java 2 Micro Edition được chia