Bài 3: Giới thiệu sơ lược về Java
1. Lịch sử ra đời
Cuối năm 1990, James Gosling và các cộng sự được công ty Sun Microsystems giao nhiệm vụ xây dựng phần mềm lập trình cho các mặt hàng điện tử dân dụng nhằm mục đích cài chương trình vào các bộ xử lý của các thiết bị như VCR, lò nướng, PDA (personal data assistant).
Lúc đầu Gosling và các cộng sự định chọn ngôn ngữ C++ nhưng thấy rằng C++ có những hạn chế. Chương trình viết bằng C++ khi chuyển sang chạy trên một số hệ thống máy có bộ vi xử lý khác thì đòi hỏi phải biên dịch lại. Gosling, Mike Sheridan và Patrick Naughton khởi xướng dự án ngôn ngữ Java vào tháng 6 năm 1991, ngôn ngữ mới dựa trên nền tảng ngôn ngữ C và C++ và đặt tên là Oak (cây sồi, vì phòng làm việc của Gosling nhìn ra một cây sồi).
Cho mãi tới năm 1995, Oak đã được đổi tên thành Java bởi vì cái tên Oak đã được đăng ký trước đó bởi một công ty tên Oak Technologies.
Java là tên một hòn đảo của Indonesia nơi đầu tiên sản xuất ra cà phê. Đó là lý do tại sao biểu tượng của java là cốc coffee.
Mục đích của Java để phát triển ứng dụng cho thiết bị điện tử thông minh, để tạo các trang web có nội dụng động (applet). Hiện nay Java được sử dụng để phát triển nhiều loại ứng dụng khác nhau như cơ sở dữ liệu, mạng, Iternet, game, viễn thông, …
2. Một số đặc tính của Java
Đơn giản (simple): Java tương tự như C++ nhưng bỏ bớt các đặc tính phức tạp của C++ như quản lý bộ nhớ, con trỏ (pointer), chồng toán tử, không dùng include, bỏ struct, union. Java được kế thừa từ C++ và được loại bỏ đi các tính năng khó nhất của C++ nên java dễ dàng sử dụng.
Tính khả chuyển (portable): Tính khả chuyển của Java do trình biên dịch tạo mã byte không phụ thuộc hệ thống máy sử dụng. Mã byte là một tập hợp các câu lệnh tương tự như mã máy, nó được tạo ra khi một chương trình Java được biên dịch xong. “Viết một lần, chạy nhiều nơi (Write Once, Run Anywhere)”
Tính 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, không thể viết một ứng dụng hướng thủ tục trong Java.
- 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 main của một chương trình viết bằng Java 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 (muilti inheritance) như trong C++ mà thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa.
Phân tán (distributed): Tính phân tán nhắm đến phân bố ứng dụng trên mạng, ứng dụng độc lập platform. Cụ thể là Java có hỗ trợ công nghệ lập trình RMI, CORBA, JavaBean. Các công nghệ này cho phép sử dụng lại các lớp đã tạo ra, triệu gọi các phương thức (method) hoặc các đối tượng từ một máy ở xa.
Đa luồng, đa tính trình (multithread): Đặc tính này của Java cho phép tạo nhiều tiến trình, tiểu trình có thể chạy song son cùng một thời điểm và có thể tương tác với nhau.
Tính bảo mật: Kiểm tra an toàn code trước khi thực thi, có nhiều mức kiểm tra bảo mật –> Môi trường thực thi an toàn
- Mức 1: Mức ngôn ngữ, nhờ tính bao gói dữ liệu của OOP, không cho phép truy cập trực tiếp bộ nhớ mà phải thông qua method.
- Mức 2: Mức compiler, kiểm tra an toàn cho code trước khi biên dịch.
- Mức 3: Mức interpreter, trước khi bytecode được thực thi, được kiểm tra an toàn.
- Mức 4: Mức class, các class trước khi nạp được kiểm tra an toàn.
Biên dịch và thông dịch:
- Java là một ngôn ngữ lập trình có khả năng biên dịch và khả năng 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 dịch sang mã máy.
- Java class file có thể được dùng ở bất kỳ flatform nào.
- Các file tài nguyên –> trình biên dịch javac –> class file độc lập thiết bị
- Class file –> trình thông dịch javac –> mã máy thực thi, không cần liên kết (link)
Giải phóng bộ nhớ (Garbage collection):
- Java cung cấp một tiến trình mức hệ thống để theo dõi việc cấp phát bộ nhớ
- Đánh dấu và giải phóng các vùng nhớ không còn được sử dụng
- Được tiến hành tự động
- Cơ chế hoạt động phụ thuộc vào các phiên bản máy ảo
3. Các phiên bản đã phát hành:
Phiên bản | Thời gian |
---|---|
JDK Beta | 1995 |
JDK 1.0 | Ngày 23 tháng 1 năm 1996 |
JDK 1.1 | Ngày 19 tháng 2 năm 1997 |
J2SE 1.2 | Ngày 8 tháng 12 năm 1998 |
J2SE 1.3 | Ngày 8 tháng 5 năm 2000 |
J2SE 1.4 | Ngày 6 tháng 2 năm 2002 |
J2SE 5.0 | Ngày 30 tháng 9 năm 2004 |
Java SE 6 | Ngày 11 tháng 12 năm 2006 |
Java SE 7 | Ngày 28 tháng 7 năm 2011 |
Java SE 8 | Ngày 18 tháng 3 năm 2014 |
Java SE 9 | Ngày 21 tháng 9 năm 2017 |
Java SE 10 | Ngày 20 tháng 3 năm 2018 |
Java SE 11 | Ngày 25 tháng 9 năm 2018 |
Java SE 12 | Ngày 19 tháng 3 năm 2019 |
Java SE 13 | Ngày 17 tháng 9 năm 2019 |
Java SE 14 | Ngày 17 tháng 3 năm 2020 |
Java SE 15 | Ngày 15 tháng 9 năm 2020 |
Java SE 16 | Ngày 16 tháng 3 năm 2021 |
Java được chia làm 3 dạng công nghệ: Java Standard Edition, Java Enterprise Edition, Java Micro Edition.
-
- Java Standard Edition – J2SE: Là nền tảng cốt lõi của lập trình Java. Nó bao gồm các bộ thư viện Java core mà chúng ta cần phải nắm chắc: java.lang; java.io; java.math; java.util; …
- Java Enterprise Edition – J2EE: Cung cấp thêm các thư viện nhằm hỗ trợ cho việc phát triển các chức năng mo-đun hóa, đa tầng chạy trên các ứng dụng server.
- Java Micro Edition – J2ME: Là một nền tảng cho phép phát triển các ứng udngj chạy trên thiết bị di động. Nó chứa dựng một số thư viện trong lõi J2EE và một số thư viện đặc biệt, phù hợp với phần cứng của thiết bị di động.
4. Lập trình Java (J2SE) cần những gì?
Để lập trình được ứng dụng viết bằng ngôn ngữ Java chạy trên máy tính, chúng ta cần các công cụ sau:
- JDK: verson từ 8.x hoặc mới hơn (Bộ công cụ phát tiển ứng dụng Java)
- Môi trường phát tiển tích hợp hay công cụ phát triển phần mềm hay IDE: một công cụ phần mềm giúp ta soạn thảo mã nguồn, biên dịch, liên kết, gỡ rối, …
IDE giúp ta phát triển phần mềm nhanh chóng và hiệu quả hơn. Đơn giản hóa quá trình phát triển phần mềm
Một số IDE dành cho lập trình Java là:- JCreator
- NetBeans
- Eclipse
- TextPad
- BlueJ
- …