Java Virtual Machine là gì? Kiến trúc thiết kế của máy ảo Java.

Java Virtual Machine là gì? Kiến trúc thiết kế của máy ảo Java.

Java Virtual Machine (JVM) hay còn gọi là máy ảo JAVA là môi trường giả lập giao tiếp thực thi được tạo ra với mục đích chạy các đoạn code được viết bằng ngôn ngữ lập trình JAVA. Nói đến máy ảo Java là người ta nói đến khái niệm thông dịch và khả chuyển trong các chương trình được phát triển trên ngôn ngữ JAVA.

Tính thông dịch và khả chuyển trong các chương trình được tạo bằng JAVA.

Nếu bạn là một lập trình viên chắc cũng có lần đâu đó sẽ nghe nói tới java thực thi chương trình rất chậm bởi vì nó là ngôn ngữ thông dịch. Tuy nhiên chính vì lý do nó là ngôn ngữ thông dịch mà JAVA phát triển mạnh mẽ như thế. Đúng là mã biên dịch hầu như chạy nhanh hơn mã thông dịch, những cũng chẳng sai khi dùng mã thông dịch để phát triển vì nó rẻ hơn, nhanh hơn và linh động hơn.

Java, để thực sự là môt ngôn ngữ độc lập với hệ nền nó cần được phát triền theo kiến trúc là một ngôn ngữ thông dịch. Nó chạy không nhanh bằng mã biên dịch nhưng cũng không chạy chậm hơn. Trong trường hợp đảm bảo tốc độ chương trình và bị buộc yêu cầu phải xử lý cực nhanh ở một số tác vụ thì java cũng có thể sử dụng các API cơ bản của hệ thống.

Thuận lợi và lợi ích của mã thông dịch vượt trội so với các ảnh hưởng xấu mà nó đem lại, bạn hãy quên đi cái nhận định này vì thời điểm mà máy tính cá nhân chỉ có khoảng 4mb bộ nhớ đã cách chúng ta rất xa rồi. Theo định lý moore thì tốc độ phát triển của phần mềm không bao giờ đuổi theo kịp tốc phát triển của xử lý của phần cứng, trong thời đại mà chi phí bỏ ra để thêm tài nguyên phần cứng không đáng là bao nhiêu trong việc gia tăng thời gian hoàn thành việc phát triển phần mềm thì yếu tố chạy chậm của chương trình thông dịch là có thể bỏ qua. Bời vì Java là thông dịch nên nó khả chuyển hơn. Nếu hệ điều hành có thể cài đặt và chạy trình thông dịch Java Runtime Enviroment(JRE) thì đối với các chương trình viết bằng JAVA đều chạy chính xác những yêu cầu mà nó được thiết kế.

Các chương trình thông dịch dễ dàng được cập nhật hơn nhiều, việc fix các lỗi bảo mật tập trung hết ở JRE sẽ giúp cho chúng ta tiết kiệm rất nhiều chi phí bảo dưỡng phần mềm hơn là phải code lại kiến trúc phần mềm và biên dịch lại thêm nhiều lần nữa. Trong Java việc thông dịch lại mang tính tự động. Trình thông dịch phát hiện tập tin mã byte đã lỗi thời so với tập tin mã nguồn và biên dịch lại trương trình khi nó được nạp.

Nhờ vào bản chất thông dịch của java mà tính liên kết cũng được hỗ trợ một cách mạnh mẽ hơn và linh động hơn. Hệ thống thực thi của Java hỗ trợ tải những liên kết động giữa những lớp cục bộ và những lớp được tải xuống từ internet. Đặc tính này cung cấp nền tảng để lập trình WEB.

JAVA API và JAVA Development Kit (JDK)

Java API chính là những gì tinh túy nhất và là điều làm cho Java trở nên thực sự hấp dẫn và hữu dụng. Java Api gồm tập hợp những gói được phân phối dưới dạng các tập tin class cùng với JDK (Java Development Kit) bộ công cụ dùng để hỗ trợ toàn diện nhà phát triền trên nền tảng java được sun cung cấp. Gói công cụ này cung cấp những quy định giao diện chung cho việc phát triển chương trình Java trên tất cả các hệ nền mà máy ảo java (JVM) có thể chạy. Java Api cung cấp mọi khả năng cần thiết để phát triển những chương trình điều khiển, chương trình dựa trên cửa sổ ( win form), phần mềm mạng server/client, các ứng dụng android.Chính điều này đã thực sự mang lại lợi ích to lớn cho người lập trình và là điểm sáng giá nhất của java.

9 gói cơ bản trong java
9 gói cơ bản trong java

Java Api có tám gói core cơ bản  và một gói debug kể từ lúc ra đời, các API sau này được phát triển và thêm vào cũng như cập nhật sửa đổi đều xoay quanh 9 packages này. Khái niệm gói api (package) cũng được ra đời và định nghĩa từ ngôn ngữ Java, “GÓI” là tập hợp các đối tượng, các hàm, các method có quan hệ lẫn nhau. Gói trong java chưa lớp (classes), giao diện (interfaces) và những biệt lệ (exceptions).

Class trong java: là đơn vị cơ bản hình thành nền tảng cho sự phát triền phần mềm hướng đối tượng trong JAVA. Lớp chưa các biến và phương thức. Biến là nơi chứa dữ liệu. Phương thức thực hiện những hoạt động trên lớp và trên biến của nó. Ví dụ, có 1 lớp trong gói java.awt gọi là Rectangle. Lớp này chứa những biến xác định vị trí và chiều kích thước của hình chữ nhật, các phường thức như move (di chuyển) và resize (chỉnh kích thước) thực hiện “những hành vi trên hình chữ nhật”.

Interface trong java: là tập hợp những phương thức có quan hệ với nhau. Ví dụ giao diện DataInput trong gói java.io. Nó xác định tập hợp những phường thức phải được định nghĩa cho một lớp để thực hiện giao diện DataInput.

Exceptions trong java: là những biến cố làm thay đổi tiến trình bình thường của việc thực thi chương trình.

Java API là nền tảng dùng để phát triển các chương trình trên ngôn JAVA. Bạn viết các chương trình JAVA bằng cách dùng Java APi như là một khuôn mẫu và xây dựng khối. Bạn dùng API để xây dựng những đối tượng và các thực thể của lớp API, thực hiện giao diện API và đáp lại những biệt lệ của API. Những đối tượng này được chương trình ứng dụng của bạn sử dụng, chính chương trình tự nó là một thực thể của lớp Java API. Hãy nghĩ rằng chương trình của bạn là môt tập hợp đối tượng làm việc với nhau để hỗ trợ những hoạt động chung. Bạn cũng có thể tạo lớp, giao diện, và những biệt lệ cho riêng bạn dựa trên những gì đã được định nghĩa trong API. Bạn có thể tập hợp chúng vào những gói riêng biệt để tích hợp bên trong và mỡ rộng Java API.

java JDK 9
java JDK 9

Để nghiên cứu java, bạn phải nghiên cứu ngôn ngữ Java, học cách dùng JAVA API và cách sử dụng bộ công cụ phát triển JDK. Mục đích của JDK là cung cấp một tập hợp đầy dủ các công cụ (tools) cho việc phát triển, thử nghiệm, cung cấp tài liệu (document) và thi hành những chương trình con và chương trình java. JDK cung cấp các công cụ hỗ trợ cho những hoạt động này. Nó bao gồm bảy chương trình cơ bản dưới đây:

Tên chương trìnhMô tả
javacTrình biên dịch
javaTrình thông dịch
jdbTrình gỡ rối
javapTrình dịch ngược
appletviewerTrình xem chương trình alphabet
javadocTrình tạo tài liêu lập trình
javahTrình tạo tập tin header của C/C++

Thông thường khi lập trình bằng java chúng ta sẽ dùng một trình soạn thảo plantext ( chương trình giúp tạo các văn bản thuần ký tự không có mã đánh dấu như word) để phát triển một chương trình từ các tập tin java. Những tập tin java này chứa source code mã nguồn khai báo giao diện va lớp của java. Tập tin này có phần mở rộng là “.java”.

Chu trình hoạt động của một lớp trong java
Chu trình hoạt động của một lớp trong java

Trình biên dịch của Java là javac: dùng để chuyển tập tin này thành các tập tin có thể thi hành bởi trình thông dịch java. Tập tin này là tập tin mãm byte với phần mỡ rộng là “.class”.

Trình thông dịch của Java là java: thực thi những lớp từ tập tin mã byte (.class). Nó kiểm tra tính toàn vẹn, hoạt động chính xác và tính an toàn cảu mỗi lớp khi chúng được nạp, thực thi và tương tác với hệ điều hành máy chủ, với môi trường lập trình cửa sổ và phương tiện truyền thông để đưa ra các chương trình mong muốn.

Trình gỡ rối jbb: giống như trình thông dịch, trong đó jdb  thi hành những lớp Java đã được biên dịch thành mã bytes, và nó cũng cung cấp những khả năng đặc biệt để chấm dứt chế độ thi hành chương trình ở một điểm (break point) được chọn và hiển thị những giá trị của các biến. Khả năng này rất hữu ích trong việc tìm lỗi lập trình.

Trình dịch ngược javap: chuyển những tập tin mã byte của java thành các lớp, biến và phương thức đã được biên dịch thành mã byte. Nó cũng xác định các chỉ thị mã byte dùng để xử lý cho mỗi phương thức. TRình dịch ngược là công cụ thuận tiện cho việc phục hồi lại mã nguồn những của lớp Javađã được biên dịch mà không có mã nguồn.

Trình hiển thị nội dung appletviewer: hiển thị những chương trình con của java chứa trong trang web. Trình bày đặt trong hệ thống tập tin cục bộ hoặc có thể lấy ở một địa điểm web. Nó thường được dùng để kiểm tra những chương trình con mà bạn đang phát triển.

Công cụ sinh tài liệu tự động javadoc: dùng để chuyển đổi những phần của tập tin nguồn thành những tập tin HTML. HTML là ngôn ngữ dùng để viết trang web. Những tập tin html được tạo bở javadoc là các tài liệu mô tả về lớp, biến, phương thức, giao diện và những biệt lệ chứa trong tập tin nguồn của java dựa trên những lệnh đặc biệt được thêm vào những tập tin này.

Công cụ tạo tập tin header trong C++ javah: dùng để tạo tập tin nguồn và tập tin đầu cảu ngôn ngữ C từ một tập tin mã byte ủa java. Những tập tin này được javah tạo ra và dùng để phát triển các phương thức bản ngữ (navite method) – là những lớp được viết bằng ngôn ngữ không phải java mà biên dịch ra có thể chạy trên hệ thống cơ sở.

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.