XÂY DỰNG BẢN ĐỒ TRÊN ĐIỆN THOẠI DI ĐỘNG CÓ HỖ TRỢ JAVA - 3
lượt xem 20
download
Chương 1 : Tổng quan về lập trình trên điện thoại di động 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 18 Chương 1 : Tổng quan về lập trình trên điện thoại di động 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ổ....
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: XÂY DỰNG BẢN ĐỒ TRÊN ĐIỆN THOẠI DI ĐỘNG CÓ HỖ TRỢ JAVA - 3
- Chương 1 : Tổng quan về lập trình trên điện thoại di động 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 18
- Chương 1 : Tổng quan về lập trình trên điện thoại di động 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. 19
- Chương 1 : Tổng quan về lập trình trên điện thoại di động 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. 20
- Chương 1 : Tổng quan về lập trình trên điện thoại di động 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. 21
- Chương 1 : Tổng quan về lập trình trên điện thoại di động 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. 22
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME 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ớ). 23
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME 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 24
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME 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 : 25
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME 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 26
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME 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. 27
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME CLDC CDC ≥ 256K RAM 32K….512K ≥ 512K ROM 128K….512K Nguồn năng lượng Có giới hạn (nguồn pin) Không giới hạn Network Chậm Nhanh Bảng 2-1 : Phân loại CLDC và CDC Hình vẽ sau minh họa quan hệ giữa CLDC, CDC và Java 2 Standard Edition (J2SE). Theo đó, chúng ta thấy một phần lớn các chức năng trong CLDC và CDC có được do thừa kế từ Java 2 Standard Edition (J2SE). Mỗi lớp được thừa kế từ J2SE phải giống hoặc gần giống với lớp tương ứng trong J2SE. Thêm vào đó, CLDC và CDC có một số đặc tính khác được thiết kế cho các thiết bị nhúng mà J2SE không có (ví dụ như các thành phần giao diện). Hình 2-3 : Quan hệ giữa J2ME configuration và J2SE. 28
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME 2.2. Sự khác nhau giữa ngôn ngữ Java trên CLDC với Java thông thường : Khả năng xử lý số thực : Các phép toán trên số thực thường cần nhiều thời gian để xử lý. Ngoài ra, phần lớn các thiết bị không có phần cứng hỗ trợ cho việc tính toán trên số thực, do đó CLDC không hỗ trợ số thực. Finalization : Trong các lớp được viết bằng J2SE, chúng ta thường định nghĩa một phương thức có tên là finalize(). Phương thức này sẽ được gọi trước khi bộ thu gom rác (garbage collector) thu gom đối tượng. Phương thức này là nơi chúng ta đặt các mã lệnh để giải phóng các tài nguyên đã sử dụng. Tuy nhiên, CLDC không hỗ trợ phương thức finalize(). Xử lý lỗi : Máy ảo Java hỗ trợ rất ít các ngoại lệ xử lý lỗi trong J2SE, lý do của hạn chế này là : • Việc xử lý lỗi trong J2SE là khá toàn diện, và đòi hỏi rất nhiều yêu cầu về tài nguyên hệ thống. • Thông thường, các hệ thống nhúng sẽ cung cấp xử lý lỗi của riêng chúng. Một giải pháp đơn giản cho hầu hết các lỗi nghiêm trọng là thực hiện khởi động lại máy, trong trường hợp này, những lập trình viên không thể xử lý lỗi được vì đã quá trễ. Các lớp thừa kế từ J2SE : CLDC yêu 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 kiểu dữ liệu (Data Type 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 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 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.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 • Internationalization java.io.InputStreamReader java.io.OutputStreamWriter Các đặc tính được hỗ trợ : Có rất ít đặc tính về hệ thống mà chúng ta có thể xem được. Sau đây là danh sách các đặc tính có được và các câu lệnh để truy xuất chúng : o Lấy thông tin về platform của thiết bị : 31
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME System.getProperty("microedition.platform") o Lấy bảng mã ký tự : 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 khả chuyển. Phần lớn mã lệnh của KVM sẽ không thay đổi theo 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 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. Yêu cầu về phần cứng : • Màn hình có kích thước tối thiểu là 96 x 54 pixel. • Có ít nhất một trong các thiết bị nhập sau : bàn phím, màn hình cảm ứng. • Ít nhất 128 KB để chạy các thành phần của MIDP • Ít nhất 8 KB để chạy các ứng dụng để chứa dữ liệu. • Ít nhất 32 KB để chạy Java • Kết nối mạng không dây. 32
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME Các hệ đ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ả năng và hạn chế của MIDP : Các hạn chế của MIDP : MIDP 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ợ hạn chế thao tác bắt lỗi. • Phần lớn các thư viện API cho Swing và AWT không thể sử dụng được trong MIDP. • Không hỗ trợ các tính năng quản lý file và thư mục. Điều này có thể làm chúng ta ngạc nhiên nhưng thực tế là các thiết bị J2ME không có hỗ trợ các thiết bị lưu trữ thông thường như ổ cứng… Tuy nhiên, điều đó không có nghĩa là chúng phải 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. 33
- Chương 2 : Giới thiệu khái quát về chuẩn J2ME Những chức năng MIDP cung cấp : • 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 quen thuộ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ê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 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ó rất nhiều đời điện thoại hỗ trợ MIDP 2.0 như Nokia 6600, Sony Ericsson P900,..). Sau đây là các cải tiến nổi bật so với MIDP 1.0 • Nâng cấp các tính năng bảo mật như : o Download qua mạng an toàn hơn qua việc hỗ trợ giao thức HTTPS. o Kiểm soát việc kết nối giữa máy di động và server: ví dụ như các chương trì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ở rộng các tính năng của Form. Nhiều cải tiến đã được đưa vào API javax.microedition.lcdui trong MIDP 2.0, nhưng các thay đổi lớn nhất (ngoài API cho 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ự mình viết code để quản lý các 34
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Ứng dụng MapInfo xây dựng bản đồ số
65 p | 488 | 240
-
Hướng dẫn sử dụng phần mềm đồ họa Mapinfo - Chương 9
0 p | 260 | 84
-
Tìm hiểu và xây dựng ứng dụng Phone Book Safe Manager trên Android
62 p | 175 | 45
-
Xây dựng bản đồ số hoá với MapInfo 6.0 - Chương 3
16 p | 125 | 37
-
Xây dựng bản đồ số hoá với MapInfo 6.0 - Chương 5
14 p | 125 | 33
-
XÂY DỰNG BẢN ĐỒ TRÊN ĐIỆN THOẠI DI ĐỘNG CÓ HỖ TRỢ JAVA - 1
17 p | 139 | 29
-
Xây dựng bản đồ số hoá với MapInfo 6.0 - Chương 1
6 p | 113 | 22
-
Xây dựng bản đồ số hoá với MapInfo 6.0 - Chương 6
12 p | 91 | 15
-
Phát triển một dạng lược đồ chữ ký số mới dựa trên bài toán RSA
6 p | 88 | 13
-
Giáo trình Thiết kế website (Nghề: Thiết kế đồ họa - Trung cấp): Phần 2 - Trường Cao đẳng Cơ điện Xây dựng Việt Xô
101 p | 55 | 8
-
XÂY DỰNG BẢN ĐỒ TRÊN ĐIỆN THOẠI DI ĐỘNG CÓ HỖ TRỢ JAVA - 7
17 p | 84 | 8
-
Xây dựng ontology trợ giúp ra quyết định về đào tạo cho các trường Đại học ở Việt Nam
10 p | 16 | 5
-
Xây dựng hệ thống thông tin về di tích thành cổ Quảng Trị dựa trên nền GIS và công nghệ 3D
12 p | 103 | 4
-
Bài giảng Xây dựng và triển khai Web Service cho ứng dụng di động - Bài 4: Tương tác giữa Web Services với ứng dụng trên thiết bị di động
36 p | 36 | 4
-
Xây dựng giải pháp công nghệ thông tin phát triển và tối ưu hoá cơ sở dữ liệu sáng chế
5 p | 23 | 4
-
Bài giảng Xây dựng chương trình dịch: Bài 9 - Phương pháp đệ quy trên xuống
20 p | 9 | 3
-
Bài giảng Xây dựng chương trình dịch: Bài 9 - Nguyễn Thị Thu Hương
5 p | 56 | 2
-
Ứng dụng GPS trong xây dựng ứng dụng tra cứu thông tin giao thông đô thị trên điện thoại di động
7 p | 67 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn