Java

Duy Văn | 05/03/2025


Java là một ngôn ngữ lập trình cực kỳ phổ biến, được rất nhiều người sử dụng. Các hệ thống CNTT trên thế giới cũng sử dụng rất nhiều Java, để phục vụ các mục đích:

  • Phát triển ứng dụng di động
  • Phát triển ứng dụng máy tính, web
  • Web servers
  • Games
  • Kết nối database
  • …

Java hoạt động trên nhiều hệ điều hành, từ Windows, Mac, Linux, Raspberry Pi,… cũng không thể không kể đến tuổi thơ của nhiều người khi chơi các con game điện thoại Nokia, các con Game này đều được viết bằng Java.

Java vẫn là ngôn ngữ lập trình phổ biến nhất thế giới và yêu cầu về Java trên thị trường việc làm luôn cao

Java khá đơn giản và dễ sử dụng, open source và miễn phí

Bản chất syntax của nó cũng giống C++ và C#, nên nếu bạn đã từng học qua các ngôn ngữ này thì việc học Java sẽ dễ dàng hơn

Cài đặt Java

Cách đơn giản nhất để cài đặt Java là tải về các bộ JDK (Java Development Kit) từ trang chủ của Oracle. Bạn có thể tìm kiếm “download JDK” trên Google và chọn phiên bản phù hợp với hệ điều hành của bạn

Sau đó với lệnh terminal hoặc cmd, bạn có thể kiểm tra xem Java đã được cài đặt thành công chưa bằng cách gõ lệnh sau:

java -version

Để ví dụ chạy thử thì chúng ta sẽ thí nghiệm với đoạn code huyền thoại để in “Hello Word”

public class Main{
  public static void main(String[] args){
    System.out.println("Hello world");
  }
}

Chúng ta sẽ lưu lại đoạn code trên làm một file tên Main.java. Sau đó, bước đầu tiên là compile nó với

javac Main.java

Sau khi đã compile mà không có lỗi lầm gì, chạy lệnh để thực thi code

java Main
Hello world

Đặc điểm của Java

Java về bản chất là lai tạo giữa ngôn ngữ biên dịch và thông dịch. Với bộ Java DK cơ bản, khi thực hiện javac, nó sẽ biên dịch ra một byte-code để Java Virtual Machine (JVM) hiểu, sau đó JVM - với vai trò là trình thông dịch, sẽ đọc byte-code và chạy code

Java không biên dịch code ra hướng dẫn cho hệ điều hành hay phần cứng, tuy nhiên JVM bây giờ có thể sử dụng kỹ thuật JIT(Just In Time compilation) để biên dịch ra byte-code có thể hiểu được bởi CPU và chạy ngay lập tức

Với hướng tiếp cận sử dụng trình thông dịch JVM, đoạn bytecode sau khi được compile có thể chạy được trên bất kỳ nền tảng nào miễn là JVM chạy được trên nền tảng đấy. Tuy nhiên, xét từ góc độ hiệu năng, làm như trên vô hình chung là đang tự tạo ra một rào cản hiệu năng khi trình thông dịch sẽ làm giảm hiệu năng của ứng dụng, mỗi lần gọi một method, bytecode sẽ phải được thông dịch một lần

Để giải quyết vấn đề hiệu năng trên các use case không thay đổi môi trường thì nhu cầu cần có hiện tại là một bước bổ sung để biên dịch tiếp bytecode này cho CPU. JIT sinh ra để JVM có thể biên dịch các phần hot code - mã thường xuyên được gọi thành mã máy giúp tăng tốc độ thực thi, machine code được tạo ra sẽ được lưu trong cache để dùng lại về sau, giảm việc dựa giẫm vào bytecode của trình thông dịch

Ngoài ra JIT còn sử dụng một số kỹ thuật tối ưu mã như là hợp nhất (code inlining), bỏ đi mã chết (dead code elimination) và tối ưu vòng lặp (loop optimization)

HotSpot là trình JIT mặc định của khá nhiều bản phân phối của JVM bao gồm OpenJDL và OracleJDK, nó bao gồm hai compiler:

  • C1: biên dịch nhanh cho các ứng dụng nhỏ, tối ưu cho việc khởi động ứng dụng
  • C2: biên dịch tối ưu hoá cao, cung cấp hiệu năng tối đa cho ứng dụng cần nhiều tài nguyên, cần xử lý như ứng dụng lớn, web services, áp dụng nhiều kỹ thuật tối ưu

Table of contents