Sun, công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí để các nhà phát triển có thể tải về, học Java, xây dựng các ứ
Trang 1LỜI NÓI ĐẦU
Java là một công nghệ xây dựng các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21 Nó được coi là công nghệ mang tính cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần
Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các bộ xử lý bên trong máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác Không chỉ là một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó máy ảo Java, bộ thông dịch có vai trò trung tâm Sun, công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí để các nhà phát triển có thể tải về, học Java, xây dựng các ứng dụng Java và triển khai chúng trên các hệ điều hành có hỗ trợ Java Khi nhắc đến Java người ta không còn chỉ nhắc đến Java như là một ngôn ngữ mà nhắc đến Java như là một công nghệ hay một nền tảng phát triển
Cũng như nhiều trường Đại học khác, Viện Đại Học Mở Hà Nội từ lâu đã đưa Java vào chương trình giảng dạy cho sinh viên Bài tập lớn này nhằm mục đích giúp sinh viên tìm hiểu và bước đầu làm quen với lập trình Java
Xin chân thành cảm ơn thầy Dương Thăng Long đã hướng dẫn và giúp đỡ em thực hiện bài tập này!
Trang 2MỤC LỤC
I.Giới thiệu tổng quan về Java……… …1
1.Nền tảng được thiết lập cho Java……… … … 1
2.Ngôn ngữ lập trình Java……….…….2
3.Sự ra đời của Java……… 2
4.Triết lý của Java……….3
5.Một số đặc điểm của Java……… ……4
6.Ứng dụng……… 7
7.Một vài khái niệm……….7
II Giới thiệu tổng quan về J2ME……….9
1 Lịch sử phát triển……… 9
2 Tại sao chúng ta chọn J2ME……….9
3 Kiến trúc của J2ME………9
4 Giới thiệu MIDP……….12
III Bài tập thực hành……… 13
1 Đề bài……… 13
2 Nội dung mã nguồn (source code)……… 14
Trang 3I.GIỚI THIỆU TỔNG QUAN VỀ JAVA
Ngôn ngữ lập trình Java là một trong những chủ đề được nói đến nhiều nhất trong thế giới hiện nay, và logo của Java - một tách cà phê bốc khói, cùng các applet Java, tràn ngập khắp nơi trên World Wide Web Vậy, hiện tượng Java có
gì đặc biệt, và tại sao nó lại có thể làm thay đổi bộ mặt của thế giới điện toán? Tuy nhiên, Java là một ngôn ngữ lập trình có những khác biệt Để thực sự hiểu được sức mạnh của Java và các nguyên nhân làm cho nó nhanh chóng được ưa chuộng, bạn phải xem xét hoàn cảnh khai sinh ra nó và bầu không khí mà nó đã sống để nắm bắt lấy khả nǎng sáng tạo của nền công nghiệp máy tính Dưới đây
là cái nhìn tổng quan về ngôn ngữ lập trình Java và công nghệ Java
1.Nền tảng được thiết lập cho Java
Vào cuối thập niên 80 và đầu thập niên 90, ngôn ngữ lập trình hướng đối tượng C++ được sử dụng phổ biến Dường như các lập trình viên đã tìm được một ngôn ngữ lập trình hoàn hảo Bởi vì C++ pha trộn tính hiệu quả cao và các yếu
tố phong cách C với mô hình hướng đối tượng Tuy nhiên, cũng như trong quá khứ, một lần nữa đã thay đổi sự phát triển của ngôn ngữ máy tính Chỉ trong vòng vài năm, World Wide Web và Internet đã đến với số đông Điều này chuẩn
bị cho một cuộc cách mạng trong ngôn ngữ lập trình, về cơ bản dẫn đến sự ra đời của Java
Java là một công nghệ xây dựng các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21 Nó được coi là công nghệ mang tính cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần Ngày nay, Java là một nền tảng tất yếu của các ứng dụng quy mô lớn của các doanh nghiệp nhờ vào khả năng mở rộng cũng như những nền tảng vô cùng phong phú mà nó cung cấp
Sun Microsystem (SUN viết tắt của Stanford University Network), công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí Java đã trải qua 3 bước phát triển quan trọng: Java 1.0 gắn liền với bản JDK đầu tiên, Java 2 gắn với JDK 1.2 và Java 5 gắn với J2SDK 1.5
Trang 42.Ngôn ngữ lập trình Java
Ngôn ngữ lập trình Java là ngôn ngữ hướng đối tượng (tựa C++) do SUN đưa ra vào giữa thập niên 90 Khác với phần lớn ngôn ngữ lập trình thông thường, thay
vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy Bằng cách này, Java thường chạy nhanh hơn những ngôn ngữ lập trình thông dịch khác như Python, Perl, PHP, và khả chuyển hơn các ngôn ngữ lập trình biên dịch như C++ Không nên lẫn lộn Java với JavaScript, mặc dù 2 ngôn ngữ đó giống tên và cùng loại cú pháp như C
Ngày nay, đối với Java người ta không còn nhắc đến như là 1 ngôn ngữ lập trình mà nhắc đến một công nghệ hay một nền tảng phát triển, nó bao gồm các
bộ phận:
* Máy ảo Java: JVM
* Bộ công cụ phát triển: J2SDK
* Các đặc tả chi tiết kĩ thuật (specifications)
* Ngôn ngữ lập trình (programming language)
* Các công nghệ đi kèm như JSP, Servlet, EJB, JDBC, JNDI, JMX, RMI … và framework như Struts, Spring, JSF, Hibernate, JavaFX
3.Sự ra đời của Java
Ngôn ngữ lập trình Java do James Gosling và các cộng sự trong nhóm Green Team của Công ty Sun Microsystem phát triển Được thai nghén như là một kiểu ngôn ngữ dùng cho các thiết bị tiêu dùng, SUN giới thiệu Java năm 1995 như một thứ ngôn ngữ lập trình dành cho các trình duyệt Web Java nhanh chóng được áp dụng để xây dựng các công cụ hàng đầu cho các doanh nghiệp cũng như trong các ứng dụng tối quan trọng
Đáng ngạc nhiên là sự thúc đẩy ban đầu của Java không phải là Internet Thay
vào đó động cơ chính là sự cần thiết của một ngôn ngữ có nền tảng độc lập
(hay là kiến trúc trung lập) có thể được dùng để tạo ra phần mềm được nhúng trong nhiều thiết bị tiêu dùng điện tử khác nhau Ta có thể đoán được, nhiều kiểu CPU được dùng như là bộ điều khiển Vấn đề rắc rối đối với C và C++ (hay hầu hết các ngôn ngữ khác) là chúng được thiết kế để được biên dịch cho
Trang 5một đối tượng nhất định Mặc dù có thể biên dịch một chương trình C++ cho bất cứ loại CPU nào, để làm điều đó đòi hỏi một trình biên dịch C++ đầy đủ cho CPU đó Vấn đề là trình biên dịch đó rất đắt đỏ và mất nhiều thời gian để tạo ra
nó Vì vậy cần một giải pháp dễ dàng và hiệu quả hơn
Trong nỗ lực để tìm ra giải pháp đó, Gosling và các đồng nghiệp bắt đầu làm việc trên một ngôn ngữ linh động và độc lập với nền tảng, nó có thể được dùng
để sinh ra mã có thể thực thi được trên các CPU khác nhau dưới các môi trường khác nhau
Sau hơn 18 tháng để phát triển phiên bản đầu tiên, nhóm đặt tên cho ngôn ngữ
là Oak (có nghĩa là cây sồi, do bên ngoài cơ quan của ông Gosling có trồng nhiều loại cây này) Sau này Gosling biết tên Oak đã được sử dụng cho một
ngôn ngữ lập trình từ trước đó nên đổi tên là Java - đây là tên gọi của một hòn đảo ở Indonexia, nơi nhóm nghiên cứu phát triển đã chọn để đặt tên cho ngôn ngữ lập trình mới trong một chuyến đi tham quan và làm việc trên hòn đảo này Hòn đảo Java này là nơi rất nổi tiếng với nhiều khu vườn trồng cafe, đó chính là
lý do chúng ta thường thấy biểu tượng ly café trong nhiều sản phẩm phần mềm, công cụ lập trình Java của Sun cũng như một số hãng phần mềm khác đưa ra Java có vô số những tính năng rất hấp dẫn đối với người phát triển như mô hình hướng đối tượng, cấu trúc mã rất dễ hiểu dựa trên C/C++ nhưng có tính liên kết
và logic nhất quán cao hơn, có ít các cấu trúc không an toàn, ít các tính năng xử
lý cấp thấp hơn, cơ chế “dọn dẹp” bộ nhớ tự động tích hợp sẵn và đặc biệt là có khả năng chạy trên nhiều nền phần cứng khác nhau
4.Triết lý của Java
Write Once, Run Anywhere
Tất cả các chương trình muốn thực thi được thì phải được biên dịch ra mã máy
Mã máy của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU Intel, CPU Solarix, CPU Macintosh … là khác nhau), vì vậy trước đây một chương trình sau khi được biên dịch xong chỉ có thể chạy được trên một kiến trúc CPU cụ thể nào đó Đối với CPU Intel chúng ta có thể chạy các hệ điều hành như Microsoft Windows, Unix,Linux, OS/2, …
Chương trình thực thi được trên Windows được biên dịch dưới dạng file có đuôi EXE còn trên Linux thì được biên dịch dưới dạng file có đuôi ELF, vì vậy
Trang 6trước đây một chương trình chạy được trên Windows muốn chạy được trên hệ điều hành khác như Linux chẳng hạn thì phải chỉnh sửa và biên dịch lại
Ngôn ngữ lập trình Java ra đời, nhờ vào máy ảo Java mà khó khăn nêu trên đã được khắc phục Một chương trình viết bằng ngôn ngữ lập trình Java sẽ được biên dịch ra mã của máy ảo java (mã java bytecode) Sau đó máy ảo Java chịu trách nhiệm chuyển mã java bytecode thành mã máy tương ứng Sun Microsystem chịu trách nhiệm phát triển các máy ảo Java chạy trên các hệ điều hành trên các kiến trúc CPU khác nhau
Để đánh giá hết ý nghĩa của tính độc lập với hệ máy này, hãy tưởng tượng bạn
là một nhà biên soạn phần mềm, bạn mới đưa ra một trình duyệt Web dùng cho Windows 3.1 Do yêu cầu, bạn phải phát triển một sản phẩm giống như vậy nhưng dành cho người sử dụng các hệ điều hành khác như Mac OS, Unix hay các version khác của Windows (ví dụ 95 và NT) Để tiếp cận những thị trường
đó, bạn phải sửa lại chương trình trên cơ sở hệ mới nếu không muốn nói là bạn
có thể soạn thảo lại toàn bộ Nhưng với Java bản chỉ phải biên soạn một lần và
nó sẽ hoạt động trên mọi hệ thống, mọi hệ điều hành, miễn là bạn có một trình thông dịch Java hoạt động trong lúc chạy
5.Một số đặc điểm của Java
Đơn giản (simple):
Java đơn giản vì, mặc dù dựa trên cơ sở C++ nhưng Sun đã cẩn thận lược bỏ các tính năng khó nhất của C++ để làm cho ngôn ngữ này dễ sử dụng hơn Là một ngôn ngữ lập trình hoàn toàn mới, nó buộc phải có dáng vẻ và sự cảm nhận tương tự như các ngôn ngữ phổ biến hiện hành đồng thời đòi hỏi khoảng thời gian huấn luyện lại tối thiểu và thân thiện hơn với người dùng
Do đơn giản, ngôn ngữ này cũng rất nhỏ - nên nhớ rằng từ đầu nó đã được xây dựng để dùng cho điện tử dân dụng như đầu chạy bằng video và hộp điều khiển
từ xa, những thiết bị có không gian lưu trữ rất hạn chế
Hướng đối tượng (Object Oriented):
Hướng đối tượng trong Java tương tự như C++ nhưng Java là một ngôn ngữ lập trình hướng đối tượng hoàn toàn Tất cả mọi thứ đề cập đến trong Java đều liên quan đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương trình viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp Hướng đối tượng trong Java không có tính đa kế thừa (multi inheritance) như
Trang 7trong C++ mà thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa Vấn đề này sẽ được bàn chi tiết trong phần sau
Hiểu mạng (network-savvy):
Java được lập ra để hoạt động trên mạng và có các thủ tục để có thể quản lý các giao thức mạng như TCP/IP, FTP và HTTP Nói cách khác, Java được xây dựng
để thực hiện hoàn toàn thích hợp trên Internet Chương trình Java thậm chí có thể xâm nhập vào các đối thượng khác thông qua Internet bằng cách sử dụng URL (địa chỉ Web) để định vị chúng
Mạnh mẽ (robust):
Khả năng mạnh phải phù hợp với thiết kế của ngôn ngữ, và hướng nó vào việc khắc phục những hư hỏng bộ nhớ và đảm bảo tính toán vẹn dữ liệu Ví dụ, Java
có tính năng "automatic garbage collection" (tự động thu gom rác) - có nghĩa là
bộ nhớ được giải phóng một cách tự động - nên lập trình viên không phải bận tâm về việc quản lý bộ nhớ và nhờ đó ít có xu hướng làm những việc gây hỏng
An toàn (secure):
Khả năng hướng mạng của Java tự động đưa ra yêu cầu về an toàn Đặc tính an toàn của ngôn ngữ lập trình này bắt nguồn từ việc nó có những phần hạn chế được cài sẵn nhằm đề phòng các chương trình Java thực hiện những chức năng như ghi vào ổ cứng của người dùng hay cho phép virus từ mạng hoặc từ môi trường phân tán thâm nhập vào
Độc lập với cấu trúc (architecture neutral):
Đây là thuộc tính đặc sắc nhất của Java Java được tạo ra với tiêu chí "Viết (code) một lần, thực thi khắp nơi" ("Write Once, Run Anywhere" (WORA)) Tính năng biên dịch một lần và chạy nhiều nền có thể đạt được nhờ just-in-time compiler (JIT), chuyển mã bytecode của Java sang mã máy khi chương trình đang chạy Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện có máy ảo java thích hợp hỗ trợ nền tảng đó Môi trường thực thi của Sun Microsystems hiện hỗ trợ Sun Solaris, Linux, Mac OS, FreeBSD, Windows và nhiều hệ thống cài đặt trên các thiết bị di động
Trang 8Di động (portable):
Đối với một phạm vi rộng, Java là loại có thể di chuyển nhờ khả năng độc lập với hệ máy Đồng thời, các loại dữ liệu, giao diện, cũng như dáng vẻ và cảm nhận của Java đều giống nhau trên mọi hệ máy Hệ thống các thành phần của java cũng có tính di động cao - nó được viết bằng Java
Thông dịch (Interpreter):
Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch Chương trình nguồn viết bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch thành tập tin có đuôi *.class và sau đó sẽ được trình thông dịch thông dịch thành
Để chạy Java bytecode, cần cài đặt JRE (Java Runtime Environment) JRE cung cấp các thư viện cơ bản, Java Virtual Machine, plugin cho trình duyệt, và những thứ khác
Tốc độ cao (high performance):
Khi Sun Microsystems mô tả Java có tốc độ cao, có lẽ họ muốn nói về mã bytecode được thông dịch hiệu quả như thế nào ( Java thường chạy nhanh hơn những ngôn ngữ lập trình thông dịch khác như Python, Perl, PHP ) Về tốc độ các applet hay chương trình Java thì nói chung đều chậm hơn các chương trình Java thì nói chung đều chậm hơn các chương trình được biên dịch viết bằng C+ +, vì chương trình này đã được tối ưu hoá từ trước cho hệ máy nhất định Java
đã phải trả giá về hiệu suất cho tính không phụ thuộc hệ của nó
Đa luồng (multithreaded):
Đa luồng có nghĩa là ngôn ngữ Java cho phép xây dựng trình ứng dụng, trong
đo, nhiều quá trình có thể xảy ra đồng thời Tính đa luồng cho phép các nhà lập trình có thể biên soạn phần mềm đáp ứng tốt hơn, tương tác tốt hơn, và thực hiện theo thời gian thực
Tính động (dynamic):
Java động vì nó được thiết kế để đáp ứng với môi trường tác nghiệp luôn trong tình trạng thay đổi Khi có yêu cầu mới xuất hiện trên thị trường, các loại đối tượng mới có thể được bổ sung vào ngay
Trang 96.Ứng dụng
Ban đầu, Java chủ yếu dùng để phát triển các applet, các ứng dụng nhúng vào trình duyệt, góp phần làm sinh động các trang web tĩnh vốn hết sức tẻ nhạt hồi
dó Tuy nhiên, cùng với sự phát triển của công nghệ thông tin và nhu cầu của xã hội, Java applet đã dần mất đi vị trí của nó và thay vào đó, các công ty, cộng đồng ủng hộ Java đã phát triển nó theo một hướng khác Hiện nay, công nghệ Java được chia làm ba bộ phận hỗ trợ cho việc phát triển nhiều loại hình ứng dụng khác nhau cụ thể như:
J2SE (Java Standard Edition)Gồm các đặc tả, công cụ, API của nhân Java
giúp phát triển các ứng dụng trên desktop và định nghĩa các phần thuộc nhân của Java: platform cho phát triển và thực thi các ứng dụng Java trên desktop và server, cũng như các thiết bị nhúng, và môi trường thời gian thực
J2EE (Java Enterprise Edition) Gồm các đặc tả, công cụ, API mở rộng J2SE
để phát triển các ứng dụng qui mô doanh nghiệp, chủ yếu để chạy trên máy chủ (server) Bộ phận hay được nhắc đến nhất của công nghệ này là công nghệ Servlet/JSP: sử dụng Java để làm các ứng dụng web
J2ME (Java Micro Edition) Gồm các đặc tả, công cụ, API mở rộng để phát
triển các ứng dụng Java chạy trên điện thoại di động, thẻ thông minh, thiết bị điện tử cầm tay, robo và những ứng dụng điện tử khác
7.Một vài khái niệm
SDK (Software Development Kit) thường là khái niệm chỉ một bộ công cụ lập
trình, tiện ích, tài liệu và các thư viện API JDK hay J2SDK là sdk dùng cho
Java do Sun Microsystems phát triển JDK cung cấp các tiện ích command line dùng để biên dịch và chạy các ứng dụng java (lệnh javac, java ), các công cụ lập trình, như trình biên dịch và tìm lỗi, javadoc và hệ thống thư viện các java
JVM (Java virtual machine) là máy ảo java Các class java sau khi build sẽ
sinh ra các file java byte code (các file class và jar) Các file này thì chỉ có mình JVM hiểu mà thôi Và JVM sẽ đọc các file này và sinh ra mã tương ứng với từng hệ điều hành (window, linux, mac ) Đây cũng chính là lý do làm cho java có thể "write one run anywhere" Để dễ hình dung, bạn có thể nghĩ rằng JVM trên Windows chính là jre\bin\java.exe và jre\bin\javaw.exe và các DLL của 2 file exe này
Trang 10JRE (Java Runtime Environment) - môi trường thực thi Java, cung cấp các
Java API, máy ảo Java (Java Virtual Machine hay JVM) và các thành phần cần thiết khác để chạy các applet và ứng dụng viết bằng ngôn ngữ lập trình Java Môi trường thực thi Java không có các công cụ và tiện ích như là các trình biên dịch hay các trình gỡ lỗi để phát triển các applet và các ứng dụng
Java Runtime library là thư viện các class đã được compiled sẵn và đặt trong
file jre\lib\rt.jar Các class java.lang.String, java.lang.Object, nằm trong gói jar này
JRE = JVM + Java Runtime library: bạn sẽ thấy java.exe, javaw.exe và rt.jar
trong thư mục cài đặt jre
JDK = JRE + tools (javac.exe, keytool.exe, ) + document (help, samples, ) + src.zip
Người cài gói JDK chủ yếu là các lập trình viên Java, khi họ muốn dùng các tools của JDK để compile mã nguồn sau đó chạy chương trình Java đã được compile này (dùng JRE của JDK) JDK có tích hợp sẵn private JRE, nếu bạn là người sử dụng chỉ muốn thực thi chương trình java thì chỉ cần cài Public JRE chứ không cần cài cả JDK
II GIỚI THIỆU TỔNG QUAN VỀ J2ME
Có lẻ nhắc đến J2ME tất cả chúng ta đểu biết nó làm một nền tảng lập trình của Sun dùng để phát triển các ứng dụng và game cho các thiết bị di động Để tìm hiểu về J2ME trước tiên chúng ta cùng đi tìm hiểu từ những khái niệm cơ bản
1 Lịch sử phát triển
a) 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 mới là Java 2 Micro Edition, hay viết tắt là J2ME Đúng với tên gọi, J2ME là nền tảng cho các thiết bị có tính chất nhỏ, gọn: