Chương 1: Bài 1. Java là gì? - Tại sao bạn nên học lập trình Java?
Chương 1: JAVA CĂN BẢN Bài 1. Java là gì? - Tại sao bạn nên học lập trình Java?
CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN VỀ JAVA
1.1 Java là gì? - Tại sao bạn nên học lập trình Java?
1.1.1 Java là gì?
Java là một một ngôn ngữ lập trình hiện đại, bậc cao, hướng đối tượng, bảo mật và mạnh mẽ. và là một Platform.
Platform: Bất cứ môi trường phần cứng hoặc phần mềm nào mà trong đó có một chương trình chạy, thì được hiểu như là một Platform. Với môi trường runtime riêng cho mình (JRE) và API, Java được gọi là Platform.
Ngôn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems do James Gosling khởi xướng và phát hành vào năm 1995. Phiên bản mới nhất của Java Standard Edition là Java SE 8. Với sự tiến bộ của Java và sự phổ biến rộng rãi của nó, nhiều cấu hình đã được xây dựng để phù hợp với nhiều loại nền tảng khác nhau. Ví dụ: J2EE cho các ứng dụng doanh nghiệp, J2ME cho các ứng dụng di động.
Các phiên bản J2 mới đã được đổi tên thành Java SE, Java EE và Java ME. Phương châm của java là "Write Once, Run Anywhere" - viết một lần chạy nhiều nơi, nghĩa là bạn chỉ cần viết một lần trên window chẳng hạn, sau đó vẫn chương trình đó bạn có thể chạy trên Linux, Android, các thiết bị J2ME...
1.1.2 Các tính năng của Java
Ngôn ngữ lập trình java có các tính năng sau:
- Hướng đối tượng - Trong Java, mọi thứ đều là một Object. Java có thể dễ dàng mở rộng và bảo trì vì nó được xây dựng dựa trên mô hình Object.
- Nền tảng độc lập - Không giống nhiều ngôn ngữ lập trình khác bao gồm cả C và C ++, khi Java được biên dịch, nó không được biên dịch thành ngôn ngữ máy nền tảng cụ thể, thay vào mã byte - nền tảng độc lập. Mã byte này được thông dịch bởi máy ảo (JVM) trên nền tảng nào đó mà nó đang chạy.
- Đơn giản - Java được thiết kế để dễ học. Nếu bạn hiểu khái niệm cơ bản về OOP Java, sẽ rất dễ để trở thành master về java.
- Bảo mật - Với tính năng an toàn của Java, nó cho phép phát triển các hệ thống không có virut, giả mạo. Các kỹ thuật xác thực dựa trên mã hoá khóa công khai.
- Kiến trúc - trung lập - Trình biên dịch Java tạo ra định dạng tệp đối tượng kiến trúc trung lập, làm cho mã biên dịch được thực thi trên nhiều bộ vi xử lý, với sự hiện diện của hệ điều hành Java.
- Portable - Là kiến trúc tập trung và không có khía cạnh thực hiện phụ thuộc của đặc tả này làm cho Java khả chuyển. Trình biên dịch trong Java được viết bằng ANSI C, đó là một tập con POSIX.
- Mạnh mẽ - Java làm nỗ lực để loại trừ các tình huống dễ bị lỗi bằng cách kiểm tra lỗi tại thời gian biên dịch và kiểm tra lỗi tại runtime.
- Đa luồng - Với tính năng đa luồng của Java có thể viết các chương trình có thể thực hiện nhiều tác vụ đồng thời. Tính năng thiết kế này cho phép các nhà phát triển xây dựng các ứng dụng tương tác có thể chạy trơn tru hơn.
- Thông dịch - Mã byte Java được dịch trực tiếp tới các máy tính gốc và không được lưu trữ ở bất cứ đâu.
- Hiệu năng cao - Với việc sử dụng trình biên dịch Just-In-Time, Java cho phép thực hiện hiệu năng cao.
- Phân tán - Java được thiết kế cho môi trường phân tán của Internet.
- Năng động - Java là năng động hơn C hoặc C++ vì nó được thiết kế để thích nghi với môi trường đang phát triển. Các chương trình Java có thể mang một lượng lớn thông tin tại runtime mà có thể được sử dụng để xác minh và giải quyết các truy cập vào các đối tượng tại runtime.
1.1.3 Java được sử dụng để làm gì?
Trước khi tôi trả lời câu hỏi, Java được sử dụng để làm gì, hay lý do tại sao bạn nên chọn Java. Java rất phổ biến và đã thống trị lĩnh vực này từ đầu những năm 2000 đến nay 2020.
Theo tập đoàn SUN, hiện nay có khoảng 3 tỷ thiết bị đang chạy java.
Java đã được sử dụng trong các lĩnh vực khác nhau. Ví dụ:
- Desktop App như acrobat reader, media player, antivirus, ...
- Web App như irctc.co.in, javatpoint.com, ...
- Enterprise App như các ứng dụng về xử lý nghiệp vụ ngân hàng, ...
- Thiết bị Mobile như các ứng dụng Android.
- Hệ thống nhúng
- Smart Card
- Robot
- Game App
1.1.4 Các kiểu của Java App
Có 4 kiểu ứng dụng chính của java app:
1. Standalone App
Standalone App cũng được biết đến như Desktop App hoặc Window-based App. Để tạo ra ứng dụng kiểu này người ta thường sử dụng AWT, Swing hoặc JavaFX framework.
2. Web App
Web App là ứng dụng chạy trên server và tạo được các trang động. Hiện nay, servlet, jsp, struts, jsf, spring... là những công nghệ được sử dụng để tạo Web App trong java.
3. Enterprise App
Một ứng dụng dạng như Banking App, có lợi thế là tính bảo mật cao, cân bằng tải (load balancing) và clustering. Trong java, EJB được sử dụng để tạo các Enterprise App.
4. Mobile App
Mobile App là ứng dụng được tạo ra cho các thiết bị di động. Hiện nay Android và Java ME được sử dụng để chạy các ứng dụng này.
1.1.5 Java Platforms
Có 4 nền tảng Java:
1. Java SE (Java Standard Edition)
Java SE là một nền tảng lập trình Java. Nó bao gồm các API lập trình Java như java.lang, java.io, java.net, java.util, java.sql, java.math, v.v. Nó bao gồm các chủ đề cốt lỗi như OOPs, String, Regex, Exception, Inner classes, Multithreading, I/O Stream, Networking, AWT, Swing, Reflection, Collection, v.v.
2. Java EE (Java Enterprise Edition)
Đây là một nền tảng doanh nghiệp chủ yếu được sử dụng để phát triển các ứng dụng web và doanh nghiệp. Nó được xây dựng trên nền tảng Java SE. Nó bao gồm các chủ đề như Servlet, JSP, Web Services, EJB, JPA , v.v.
3. Java ME (Java Micro Edition)
Đây là một nền tảng vi mô chủ yếu được sử dụng để phát triển các ứng dụng di động.
4. JavaFX
JavaFX là một nền tảng phần mềm phát triển các ứng dụng Internet phong phú (Rich Internet Applications – RIAs) có thể chạy trên nhiều loại thiết bị, nhiều hệ điều hành khác nhau. JavaFX là một giải pháp công nghệ cho GUI trên nền tảng Java nhằm tạo giao diện đồ họa người dùng dựa trên Swing và Java2D.
1.1.6 Tại sao bạn nên học lập trình Java?
Ngoài việc độc lập nền tảng, phong cách "lập trình hướng đối tượng" của Java và sự hấp dẫn rất cao đối với các nhà tuyển dụng IT.
Như tên gọi của nó đã cho thấy, lập trình hướng đối tượng (OOP) sử dụng các đối tượng được định nghĩa đầy đủ - và các mối quan hệ giữa các đối tượng với nhau - để thực hiện các tác vụ khác nhau. Do nền tảng mô-đun tự nhiên của nó, OOP thường làm cho nó dễ dàng hơn, nhanh hơn và rẻ hơn trong phát triển và quản lý phần mềm. Cũng dễ hiểu khi những đặc điểm này buộc các tổ chức và doanh nghiệp ôm lấy Java trong vòng tay rộng mở, nâng ngôn ngữ lập trình này trở thành kỹ năng được mong muốn nhất của các nhà tuyển dụng.
Và trong khi Java là rất "hot" với các nhà tuyển dụng, nó cũng không kém phần nóng bỏng đối với những người thực sự viết ra các chương trình máy tính. Mức lương trung bình của một lập trình viên Java tại Mỹ là $88K đô-la (hơn 1,8 tỷ VNĐ/năm) và Java tạo ra một nguồn cảm hứng bất tận để thu hút rất nhiều người theo đuổi nghề nghiệp cùng với nó.
- Điều kiện tiên quyết để học lập trình Java
Bạn nên có kiến thức cơ bản về lập trình C/C++, và kiến thức tốt cấu trúc dữ liệu và giải thuật.
1.1.7 Ví dụ về Java
Dưới đây là ví dụ về chương trình đơn giản trong java để in "Hello World", xem chi tiết tại đây Hello World
1 2 3 4 5 |
public class HelloWorld { public static void main(String args[]){ System.out.println("Hello Java"); } } |
Kết quả:
1.2 Lịch sử Java
1.2.1 Lịch sử ngôn ngữ lập trình Java
Java được khởi xướng bởi James Gosling và các bạn đồng nghiệp ở Sun Microsystems năm 1991. Từ ý tưởng muốn lập trình để điều khiển mà không phụ thuộc vào loại CPU cho các thiết bị điện tử như tivi, máy giặt, lò nướng... Do đó, họ đã bắt tay vào xây dựng một ngôn ngữ chạy nhanh, gọn, hiệu quả, độc lập thiết bị và ngôn ngữ “Oak” ra đời, sau đó được đổi tên thành Java.
1.2.1.1 Tại sao ban đầu lại có tên là Oak?
- Bởi vì Oak là tên một loại cây rất phổ biến ở các nước như Mỹ, Đức, Romania, … và đước xem như biểu tượng của các nước đó cũng như là biểu hiện cho sức mạnh. Xung quanh văn phòng của James Gosling cũng trồng rất nhiều 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 bốc khói nghi ngút thơm lừng.
1.2.1.2 Tại sao lại đổi tên thành Java?
- Team muốn thu thập để chọn lựa ra một tên mới. Các từ bao gồm dynamic, revolutionary, Silk, jolt, DNA, … Họ muốn cái gì đó mà phản ánh đúng bản chất của công nghệ, đó là: một cuộc cách mạng, có tính động cao, duy nhất, đánh vần dễ dàng, ...
Theo James Gosling thì Java là một trong những lựa chọn hàng đầu cùng với Silk. Tuy nhiên, vì Java có tính duy nhất hơn, nên hầu như tất cả thành viên trong team đều lựa chọn Java.
- Java là một hòn đảo ở Indonesia, ở nơi này sản phẩm coffee đầu tiên được sản xuất (gọi là java coffee).
- Bạn nên nhớ rằng Java chỉ là một tên chứ không phải là tên lược danh.
- Java được phát triển đầu tiên bởi Jamas Gosling tại Sun Microsystems (bât giờ là công ty con của Oracle Coporation) và được công bố năm 1995.
- Năm 1995, tạp chí Time bình chọn Java là một trong 10 sản phẩm tốt nhất năm 1995.
- JDK 1.0 được công bố vào 23/1/1996.
1.2.2 Lịch sử các phiên bản Java
Đã có nhiều phiên bản Java được tạo ra. Phiên bản Java hiện tại là Java SE 8.
- JDK Alpha và Beta (1995)
- JDK 1.0 (23/1/1996)
- JDK 1.1 (19/2/1997)
- J2SE 1.2 (8/12/1998)
- J2SE 1.3 (8/5/2000)
- J2SE 1.4 (6/5/2002)
- J2SE 5.0 (30/9/2004)
- Java SE 6 (11/12/2006)
- Java SE 7 (28/7/2011)
- Java SE 8 (18/3/2014)
- JDK 9, 21 tháng 9 năm 2017
- JDK 10, 20 tháng 3 năm 2018
1.3 Các tính năng của java
Java có rất nhiều tính năng nổi bật. Chúng được biết đến như những thuật ngữ quen thuộc. Các tính năng này đơn giản và dễ dàng để tìm hiểu. Dưới đây là danh sách các tính năng của java:
- Đơn giản (Simple)
- Hướng đối tượng (Object Oriented)
- Độc lập nền tảng (Platform Independent)
- Bảo mật (Secured)
- Robust (Mạnh mẽ)
- Kiến trúc - tập trung (Architecture-neutral)
- Khả chuyển (Portable)
- Năng động (Dynamic)
- Thông dịch (Interpreted)
- Hiệu suất cao (High Performance)
- Đa luồng (Multi-thread)
- Phân tán (Distributed)
1.3.1 Đơn giản
Ngôn ngữ Java có đặc điểm đơn giản là vì:
- Cú pháp dựa trên C++ (vì vậy việc học Java sẽ rất dễ dàng sau khi lập trình viên học C++)
- Gỡ bỏ nhiều đặc điểm gây bối rối và hiếm khi được sử dụng chẳng hạn như các con trỏ tường minh, nạp chồng toán tử, ...
- Bạn không cần xóa các đối tượng mà không được tham chiếu, bởi vì Bộ dọn rác tự động (Garbage Collection) trong Java sẽ làm việc đó thay bạn.
1.3.2 Hướng đối tượng
Hướng đối tượng nghĩa là chúng ta tổ chức phần mềm dưới dạng kết hợp của nhiều loại đối tượng khác nhau, trong đó có sự kết hợp chặt chẽ cả về dữ liệu và hành vi của chúng.
Lập trình hướng đối tượng (OOP) là một phương pháp làm đơn giản hóa việc phát triển và bảo trì phần mềm bằng việc cung cấp một số qui tắc.
Một số khái niệm cơ bản của hướng đối tượng (OOP) là:
- Đối tượng (Object)
- Lớp (Class)
- Tính kế thừa
- Tính đa hình
- Tính trừu tượng
- Tính đóng gói
1.3.3 Độc lập nền tảng
Một Platform là môi trường phần cứng hoặc phần mềm mà một hoặc nhiều chương trình chạy trong đó. Có hai loại Platform, một loại dựa trên phần mềm (software-based) và một loại dựa trên phần cứng (hardware-based). Java cung cấp software-based platform. Java Platform khác với nhiều nền tảng khác ở chỗ nó chạy trên các nền tảng hardware-based khác nhau. Nó có hai thành phần:
- JRE (Java Runtime Environment)
- API (Application Programming Interface)
Java code có thể chạy trên nhiều nền tảng như Windows, Linux, Sun Solaris, Mac/OS, ... Java code được biên dịch bởi Trình biên dịch (Compiler) và được chuyển đổi thành Bytecode. Bytecode này là một code độc lập nền tảng bởi vì nó có thể chạy trên nhiều nền tảng khác nhau. Đó là lý do vì sao java có khẩu hiệu "Viết một lần, Chạy khắp nơi (Write Once and Run Anywhere)".
1.3.4 Bảo mật
Java bảo mật bởi vì:
- Không có con trỏ tường minh.
- Chương trình chạy bên trong máy ảo.
- Classloader: Thêm sự bảo mật bằng việc phân chia package cho các class của hệ thống file trên local mà từ đó chúng được import với các file từ nguồn mạng.
- Bytecode Vertifier: Kiểm tra các đoạn code để tìm ra các phần code không hợp lệ mà có thể truy cập trái phép tới các đối tượng.
- Security Manager: Quyết định xem nguồn resource nào mà một lớp có thể truy cập chẳng hạn như đọc và ghi tới local disk.
Những tính năng bảo mật này được cung cấp bởi Ngôn ngữ Java. Ngoài ra, một vài tính năng bảo mật khác được cung cấp thông qua nhà phát triển như SSL,JAAS,cryptography, ...
1.3.5 Robust (Mạnh mẽ)
Bạn có thể hiểu đơn giản Robust nghĩa là mạnh mẽ. Java sử dụng trình quản lý bộ nhớ mạnh mẽ. Đó là, Java sử dụng ít con trỏ hơn để tránh các vấn đề liên quan tới bảo mật. Bên cạnh đó Java còn có Trình dọn rác tự động (Garbage Collection). Có xử lý ngoại lệ (Exception Handling) và cơ chế kiểm tra kiểu ngoại lệ xảy ra. Đó là những điểm nổi bật khiếm cho Java mạnh mẽ!
1.3.6 Kiến trúc - tập trung
Một ứng dụng được biên dịch trên kiến trúc phần cứng này và ứng dụng đó chạy được trên tất cả các kiến trúc phần cứng khác. vd: Một ứng dụng được biên dịch với vi xử lý 32bit và nó sẽ chạy tốt trên vi xử lý 64bit.
1.3.7 Portable
Java là ngôn ngữ lập trình có tính Portable bởi vì java có thể thực thi ứng dụng của nó trên tất cả các hệ điều hành và phần cứng khác nhau.
1.3.8 Hiệu suất cao
Hiệu suất Java nhanh hơn kể từ khi được thông dịch thành ByteCode, mã nguồn gốc thì chậm hơn so với một số ngôn ngữ biên dịch (ví dụ như C++).
1.3.9 Đa luồng (Multi-thread)
Chúng ta có thể tạo các ứng dụng phân tán trong Java. RMI và EJB được sử dụng để tạo các ứng dụng này. Chúng ta có thể truy cập các file bằng việc gọi các phương thức từ bất cứ thiết bị nào trên internet.
1.3.10 Phân tán (Distributed)
Một Thread là giống như một chương trình riêng rẽ, thực thi một cách đồng thời. Chúng ta có thể viết các chương trình Java mà xử lý nhiều tác vụ cùng một lúc bằng việc định nghĩa nhiều Thread. Lợi thế chính của Multi-thread là nó chia sẻ cùng bộ nhớ. Các Thread là quan trọng cho Multi-media, Web App, ...
Bài kế tiếp: