Kiến thức nền tảng
Đây đã là ngôn ngữ lập trình thứ N
trong hành trình tự học mà mình đang thực hiện các bài viết chia sẻ kiến thức tại đây. Vì vậy các bài viết tản mạn tại đây sẽ tránh giải thích lại những khái niệm căn bản mà mình đã nghiệm thu được khi học JavaScript
và C
.
Nếu như bạn đã cùng đồng hành từ Series Tự Học Lập Trình Web đầu tiên thì sẽ cần lướt qua thêm Sub-Series C
của Series Một Số Mô Hình Lập Trình Phổ Biến để có thể bắt đầu đọc Series này. Còn trong trường hợp bạn đến với bài viết này từ một nguồn nào đó khác thì khả năng cao là bạn hiểu về các khái niệm lập trình căn bản và Java
nhiều hơn so với một newbie
mất gốc đang tự học lại như mình.
Ngôn ngữ & Môi trường
Ngôn ngữ Java
được thiết kế bởi kỹ sư phần mềm James Gosling
và ra mắt phiên bản đầu tiên vào năm 1995, hiện tại đang được phát triển bởi Oracle
và được sử dụng trên hai nền tảng chính:
JVM - Java Virtual Machine
– máy ảoJava
được thiết kế để làm môi trường vận hành trung gian giữa lập trình viên và các hệ điều hành máy tính nhưWindows
,Linux
,BSD
, v.v…ART - Android RunTime
– máy ảoAndroid
được thiết kế để làm môi trường vận hành trung gian giữa lập trình viên và phiên bảnLinux
đặc biệt doGoogle
hiệu chỉnh dành riêng cho các thiết bịAndroid
.
Hai môi trường vận hành này cung cấp bộ giao diện lập trình API
có phần khác nhau, tuy nhiên về mặt hỗ trợ các tính năng ở cấp độ cú pháp ngôn ngữ Java
thì ART
hỗ trợ đầy đủ các tính năng tương đương với JVM
phiên bản LTS - Long Term Support
.
Phần chung giữa hai bộ giao diện lập trình trên ART
và JVM
chủ yếu là về các cấu trúc dữ liệu dựng sẵn và các module
hỗ trợ giao tiếp mạng network
. Phần khác nhau là ART
có thêm các thư viện hỗ trợ vẽ giao diện đồ họa người dùng và điều khiển các module
phần cứng của các thiết bị Android
, còn JVM
có thêm các thư viện hỗ trợ dựng giao diện đồ họa người dùng cho môi trường máy tính nếu không kể thêm phiên bản hỗ trợ phát triển các ứng dụng doanh nghiệp J2EE
:
ART:
Android SDK API
JVM:
JDK 17 LTS API
Các bài viết trong Series này sẽ tản mạn trong phạm vi tính năng của ngôn ngữ Java
ở cấp độ cú pháp và giao diện lập trình Android API
. Tuy nhiên, để khởi đầu thì việc in kết quả vận hành code ra cửa sổ dòng lệnh của máy tính sẽ đơn giản hơn nhiều so với việc tạo ra và build
một project Android
vì vậy nên chúng ta sẽ chưa cần quan tâm tới ART
.
Tải về JDK:
Sau khi tải về và cài đặt xong JDK
, ở cửa sổ dòng lệnh, chúng ta có thể gõ lệnh kiểm tra phiên bản của trình biên dịch javac
.
1 2 3 | javac --version javac 17.0.6 |
Trình biên dịch này sẽ giúp chuyển đổi code Java
mà chúng ta viết sang code vận hành có thể hiểu được bởi máy ảo JVM
. Sau đó, máy ảo JVM
sẽ có nhiệm vụ chuyển tải lại logic công việc cần thực hiện cho hệ điều hành máy tính mà chúng ta đang sử dụng.
Chương trình Hello, World!
Code Java
mà chúng ta viết sẽ được đặt trong các tệp văn bản thuần có định dạng .java
. Mỗi tệp này sẽ chỉ được chứa duy nhất một khối code định nghĩa ở cấp tổng quan cao nhất của tệp, đó có thể là code định nghĩa một class
, hay một interface
, hay một enum
.
1 2 3 4 5 6 7 8 | <span class="token keyword">class</span> <span class="token class-name">HelloWorld</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> main <span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> $args<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span>println <span class="token punctuation">(</span><span class="token string">"Hello, World!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Máy ảo JVM
sẽ có thể bắt đầu thực thi chương trình từ một phương thức static main
của một class
bất kỳ như trong code ví dụ trên. Để biên dịch code chúng ta gõ lệnh:
1 2 3 | cd learn-java-language && cd hello-world javac HelloWorld.java |
Sau đó trong thư mục project
sẽ xuất hiện thêm tệp thực thi cùng tên với tệp mã nguồn HelloWorld
nhưng có định dạng .class
. Lúc này để bắt đầu chạy chương trình bằng JVM
, chúng ta gõ lệnh:
1 2 3 | java HelloWorld Hello, World! |
Nhìn chung thì chúng ta đang có cú pháp định nghĩa class
đã khá quen thuộc như trong JavaScript
. Ở đây Java
được triển khai là một ngôn ngữ định kiểu tĩnh static-typing
giống như C
, vì vậy nên ở phía trước mỗi yếu tố định danh như tên trường dữ liệu, tên phương thức, tên tham số, tên biến cục bộ, chúng ta sẽ có thêm các từ khóa định kiểu.
Chúng ta đang có main
đang được định nghĩa kiểu void
, vì vậy nên không cần có lệnh return
kết thúc; Tham số args
là mảng các chuỗi ký tự được truyền nối tiếp vào sau lệnh java HelloWorld.class
. Riêng từ khóa public
được gọi là nhãn điều chỉnh mức hiển thị access modifier
sẽ được đề cập đến trong một bài viết khác.