Platform là một môi trường phần cứng hoặc phần mềm để chạy chương trình . Ví dụ như Microsoft Windows, Mac OS , Linux ,... là các platform . Java platform là tên cho một nhóm các chương trình của Sun cho phép phát triển và chạy chương trình viết bằng ngôn ngữ Java
Java platform có 2 thành phần :
- JVM (máy ảo java)
- API ( Java Application Programming Interface )
Bạn đã được giới thiệu về máy ảo Java ở phần trên,bây giờ chúng ta hãy nói về API ? API là gì ?
API là một tập hợp lớn các phần mềm đã được làm sẳn rất hữu dụng .Các phần mềm đó được nhóm lại trong những thư viện liên quan với nhau .Những thư viện đó được gọi là các gói (packages).
Tổng quan về java platform
* javac biên dịch mã nguồn sang dạng byte code (file *.class)
* javathông dịch và chạy file *.class
Đọc thêm
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.
Trước đã có 1 bài viết về lịch sử phát triển của ngôn ngữ lập trình C/C++, bài này xin đưa ra cái nhìn đầu tiên 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
2. 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 mộ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 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 trướ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ư trong 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 bộ nhớ.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.Di độ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 mã máy.Để 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 perfprmance):
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.6. Ứ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 class API.
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.
JRE (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ìnhJava. 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
0 comments: