Java là gì? Tổng quan về ngôn ngữ lập trình java
Java là gì?
Java là một ngôn ngữ lập trình hướng đối tượng được sử dụng để phát triển phần mềm, trang web, trò chơi và ứng dụng trên thiết bị di động.
Java được tạo ra bởi James Gosling và các đồng nghiệp tại Sun Microsystems vào năm 1991. Lúc đầu, Java được phát triển để viết phần mềm cho các sản phẩm gia dụng và có tên gọi là Oak.
Java được phát hành chính thức năm 1994 và từ năm 2010, Oracle đã mua lại Java từ Sun Microsystems.
Java được xây dựng với phương châm “Viết một lần, chạy khắp mọi nơi” (Write Once, Run Anywhere – WORA). Điều này có nghĩa là mã nguồn Java có thể chạy trên mọi nền tảng khác nhau thông qua việc sử dụng một môi trường thực thi tương thích với nền tảng đó.
Hãy xem thêm về công việc của một nhà phát triển Java tại đây.
Đặc điểm của ngôn ngữ lập trình Java
Giống với C++, tuyệt đối hướng đối tượng
Trong quá trình phát triển ngôn ngữ mới để chạy trên nhiều nền tảng, các kỹ sư của Sun Microsystems muốn tạo ra một ngôn ngữ dễ học và quen thuộc với đa số lập trình viên. Vì vậy, họ đã tái sử dụng cú pháp từ C và C++.
Tuy nhiên, trong Java, sử dụng con trỏ đã bị loại bỏ để đảm bảo sự an toàn và dễ sử dụng hơn. Các tính năng như overload, goto và các cấu trúc như struct và union cũng được loại bỏ khỏi Java.
Độc lập với phần cứng và hệ điều hành
Một chương trình viết bằng Java có thể chạy trên nhiều môi trường khác nhau. Điều này được gọi là khả năng “cross-platform”. Khả năng độc lập phần cứng và hệ điều hành được thể hiện ở hai cấp độ: cấp độ mã nguồn và cấp độ nhị phân.
Ở cấp độ mã nguồn: Kiểu dữ liệu trong Java nhất quán trên tất cả các hệ điều hành và phần cứng khác nhau. Java có một bộ thư viện riêng để hỗ trợ vấn đề này. Chương trình viết bằng Java có thể được biên dịch trên nhiều loại máy khác nhau mà không gặp vấn đề.
Ở cấp độ nhị phân: Mã đã được biên dịch có thể chạy trên nhiều nền tảng khác nhau mà không cần biên dịch lại mã nguồn. Tuy nhiên, cần phải có Máy ảo Java để thông dịch mã này.
Ngôn ngữ thông dịch
Ngôn ngữ lập trình thường được chia thành hai loại (tuỳ thuộc vào cách thức thực thi ngôn ngữ đó): thông dịch và biên dịch.
- Thông dịch (Interpreter): Nó dịch và chạy từng câu lệnh, và mỗi lần chạy lại phải dịch lại.
- Biên dịch (Compiler): Lập trình sau khi biên dịch sẽ tạo ra một file thực thi (thường có đuôi .exe), và file thực thi này có thể được sử dụng mà không cần biên dịch lại.
Ngôn ngữ lập trình Java thuộc loại thông dịch. Cụ thể hơn, Java là loại ngôn ngữ vừa thông dịch vừa biên dịch. Quá trình này diễn ra như sau:
Khi viết mã, hệ thống sẽ tạo ra một file .java. Khi mã nguồn của chương trình được biên dịch, nó sẽ được dịch thành mã byte code. Máy ảo Java (Java Virtual Machine – JVM) sẽ thông dịch mã byte code này thành mã máy (hay mã native) khi yêu cầu chạy chương trình.
Ưu điểm: Phương pháp này giúp mã nguồn Java có thể chạy trên nhiều nền tảng khác nhau, miễn là JVM hỗ trợ nền tảng đó.
Nhược điểm: Tương tự như các ngôn ngữ thông dịch khác, quá trình thực thi mã Java chậm hơn các ngôn ngữ biên dịch khác (tuy nhiên nó vẫn ở mức chấp nhận được).
Cơ chế thu gom rác tự động
Khi tạo đối tượng trong Java, JRE sẽ tự động cấp phát không gian bộ nhớ cho các đối tượng trên heap.
Trong các ngôn ngữ như C và C++, bạn phải tự giải phóng vùng nhớ đã cấp phát để tránh rò rỉ bộ nhớ và làm giảm hiệu suất chương trình. Java hỗ trợ bạn trong việc này, nghĩa là bạn không cần phải gọi lệnh giải phóng bộ nhớ. Bộ thu gom rác của Java sẽ tự động thu hồi bộ nhớ đã cấp phát khi không còn tham chiếu nào đến vùng nhớ đó.
Đa luồng
Java hỗ trợ lập trình đa luồng để thực hiện các công việc đồng thời. Đồng thời, nó cũng cung cấp giải pháp đồng bộ giữa các luồng (sử dụng độ ưu tiên…).
Tính an toàn và bảo mật
- Tính an toàn
Ngôn ngữ lập trình Java đặt yêu cầu nghiêm ngặt về kiểu dữ liệu.
Dữ liệu phải được khai báo rõ ràng.
Không sử dụng con trỏ và các phép toán liên quan đến con trỏ.
Java kiểm soát việc truy cập vào mảng và chuỗi. Nó không cho phép sử dụng các kỹ thuật tràn. Do đó, các truy cập sẽ không vượt qua kích thước của mảng hoặc chuỗi.
Quá trình cấp phát và giải phóng bộ nhớ được thực hiện tự động.
Cơ chế xử lý lỗi giúp việc xử lý và phục hồi lỗi dễ dàng hơn.
- Tính bảo mật
Java cung cấp một môi trường quản lý các chương trình với nhiều cấp độ khác nhau.
Cấp độ 1: Chỉ cho phép truy cập dữ liệu và phương thức thông qua giao diện mà lớp cung cấp.
Cấp độ 2: Trình biên dịch kiểm soát mã nguồn để đảm bảo tuân thủ các quy tắc của ngôn ngữ Java trước khi thông dịch.
Cấp độ 3: Trình thông dịch sẽ kiểm tra mã byte code để đảm bảo tuân thủ các quy tắc và quy định trước khi thực thi.
Cấp độ 4: Java kiểm soát việc tải lớp vào bộ nhớ để giới hạn truy cập trước khi nạp vào hệ thống.
Máy ảo Java (JVM – Java Virtual Machine)
Để đảm bảo tính đa nền, Java sử dụng cơ chế Máy ảo Java.
ByteCode là ngôn ngữ của Máy ảo Java tương tự như các lệnh nhị phân của máy tính thực.
Một chương trình viết bằng Java (với phần mở rộng .java) phải được biên dịch thành tập tin thực thi trên Máy ảo Java (với phần mở rộng .class). Tập tin thực thi này chứa các chỉ thị dưới dạng mã Bytecode được Máy ảo Java hiểu.
Khi thực hiện một chương trình, Máy ảo Java sẽ thông dịch các chỉ thị Bytecode thành các lệnh nhị phân thực sự trên máy tính (còn được gọi là khả năng khả chuyển).
Thực tế, Máy ảo Java là một chương trình thông dịch. Vì vậy, các hệ điều hành khác nhau sẽ có các Máy ảo khác nhau. Để chạy một ứng dụng Java trên một hệ điều hành cụ thể, bạn cần cài đặt Máy ảo tương ứng cho hệ điều hành đó.
JVM cung cấp môi trường thực thi cho chương trình Java (còn được gọi là tính độc lập với nền tảng).
Có nhiều JVM dành cho các nền tảng khác nhau như Windows, Linux và Mac.
Các loại ứng dụng được phát triển sử dụng Java
Các phiên bản của Java
Java Standard Edition (Java SE) – Là một nền tảng cơ bản cho việc phát triển giao diện điều khiển, ứng dụng mạng và các ứng dụng Win Form.
Java Enterprise Edition (Java EE) – Được xây dựng trên nền tảng Java SE, hỗ trợ việc phát triển ứng dụng web, ứng dụng cấp doanh nghiệp, v.v.
Java Mobile Edition (Java ME) – Là nền tảng cho việc phát triển các ứng dụng nhúng trên các thiết bị di động như điện thoại di động, v.v.
Các thành phần của Java SE Platform
Java SE Platform bao gồm hai thành phần chính:
- JRE (Java Runtime Environment): cung cấp JVM (Java Virtual Machine) và thư viện được sử dụng để chạy chương trình Java.
- JDK (Java Development Kit): còn được gọi là bộ công cụ phát triển Java, bao gồm trình biên dịch và trình gỡ lỗi được sử dụng để phát triển các ứng dụng Java.