- Khóa học Offline tại Hà Nội
- Khóa học Java Online tại Udemy
- Giới thiệu Java
- Java là gì?
- Lịch sử Java
- Tổng quan
- Cài đặt Java
- Cách thiết lập Path
- Chương trình Hello World
- Phân tích chương trình Hello World
- Cú pháp Java cơ bản
- JDK, JRE và JVM
- Biến trong Java
- Kiểu dữ liệu
- Toán tử
- Các kiểu vòng lặp
- Lệnh if, switch
- Đối tượng Number
- Đối tượng Character
- Khái niệm OOP
- Lớp và Đối tượng
- Phương thức
- Nạp chồng phương thức (Overloading)
- Constructor
- Từ khóa static
- Từ khóa this
- Tính kế thừa (IS-A)
- Quan hệ (HAS-A)
- Ghi đè phương thức (Overriding)
- Kiểu trả về Covariant
- Từ khóa super
- Từ khóa final
- Tính đa hình
- Dynamic Binding
- Toán tử instanceof
- Tính trừu tượng
- Lớp abstract
- Interface
- Lớp abstract vs Interface
- Java Package
- Các kiểu Modifier
- Non-Access Modifier
- Access Modifier
- Tính bao đóng
- Lớp Object
- Nhân bản đối tượng
- Mảng (Array)
- Lớp Wrapper
- Gọi bởi giá trị
- Từ khóa strictfp
- Date & Time
- Regular Expression
- File và I/O
- ByteArrayInputStream
- DataInputStream
- ByteArrayOutputStream
- DataOutputStream
- Lớp File
- Lớp FileReader
- Lớp FileWriter
- Đối tượng String
- Immutable String
- So sánh chuỗi
- Nối chuỗi
- Chuỗi con
- Phương thức của lớp String
- Lớp StringBuffer
- Lớp StringBuilder
- String vs StringBuffer
- StringBuilder vs StringBuffer
- Phương thức toString()
- Lớp StringTokenizer
- Exception là gì
- Khối try-catch
- Khối finally
- Từ khóa throw
- Từ khóa throws
- ExceptionHandling vs MethodOverriding
- Custom Exception
- Cấu trúc dữ liệu
- Enumeration Interface
- Lớp BitSet
- Lớp Vector
- Lớp Stack
- Lớp Dictionary
- Lớp Properties
- Java Collection
- Collection Interface
- List Interface
- Set Interface
- SortedSet Interface
- MapEntry Interface
- Lớp ArrayList
Tổng quan về Java
Java có rất nhiều đặc điểm và tính năng nổi bật. Dưới đây là một số đặc điểm của Java mà bạn có thể dễ dàng biết và tìm hiểu:
Đơn giản
Hướng đối tượng
Độc lập nền tảng
Bảo mật
Robust
Độc lập cấu trúc
Portable
Dynamic
Thông dịch
Hiệu suất cao
Đa luồng (Multi-thread)
Distributed
Đơn giản
Bạn có thể hiểu rằng, đặc điểm đơn giản của Java là do:
Thứ nhất, cú pháp của nó dựa trên C++ (vì thế nó khá dễ dàng cho các sinh viên sau khi đã học C++ tại năm đầu đại học).
Thứ hai, 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ử, …
Và cuối cùng, bạn không cần xóa các đối tượng mà không được tham chiếu, bởi vì hãy để những thứ đó cho Bộ dọn rác tự động (Garbage Collection) trong Java.
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 một sự kết hợp của nhiều loại đối tượng khác nhau mà kết hợp chặt chẽ cả về dữ liệu lẫn 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à duy 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 bao đóng
Độ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 trong đó một chương trình chạy. 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. Nó có hai thành phần:
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 Bộ 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. Với lý do này, đến đây bạn có thể hiểu được tại sao khi nói về Java, người ta thường nói đến khẩu hiệu: Viết một lần, Chạy khắp nơi (Write Once and Run Anywhere).
Bảo mật
Java là an toàn bởi vì:
Không có con trỏ tường minh.
Chương trình chạy bên trong các hộp thiết bị ảo.
Classloader: Thêm sự bảo vệ bằng việc phân biệt riêng rẽ các package cho các lớp của hệ thống local file 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, lập trình viên còn có thể cung cấp một số tính năng bảo mật khác thông qua SSL, JAAS, …
Robust
Bạn có thể hiểu đơn giản Robust nghĩa là mạnh mẽ. Java sử dụng hệ quản trị 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 đó còn có Trình dọn rác tự động (Garbage Collection) trong Java. Đó là Xử lý ngoại lệ (Exception Handling) và kiểm tra kiểu. Tất cả những thứ này là cho Java là Robust.
Độc lập cấu trúc
Đó là không có đặc điểm nào mà phụ thuộc vào trình triển khai, ví dụ như kích cỡ của kiểu dữ liệu gốc đã được thiết lập.
Portable
Chúng ta có thể mang Java Bytecode tới bất cứ nền tảng nào.
Hiệu suất cao
Với việc sử dụng Just-In-Time compilers, Java giúp nâng cao hiệu năng, giúp việc debug được dễ dàng cũng như nhanh chóng phát hiện lỗi.
Phân tán (Distributed)
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.
Đa luồng (Multi-thread)
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 học Java phổ biến tại vietjack.com: