Trong lĩnh vực lập trình, Package là một khái niệm rất quen thuộc. Với những ai thường xuyên làm việc với ngôn ngữ Java, khái niệm này càng trở nên quan trọng. Vậy cụ thể Package là gì? Các bạn hãy cùng Tino Group đi tìm câu trả lời qua bài viết dưới đây nhé!
Định nghĩa Package
Package là gì?
Package (gói) là một tập hợp các Class (lớp), Interface (giao diện) và gói con có liên quan với nhau. Hiểu đơn giản, Package tương tự như những thư mục khác nhau trên máy tính. Khi đó, bạn có thể giữ các trang HTML trong một thư mục, hình ảnh trong một thư mục khác và các tập lệnh hoặc ứng dụng trong một thư mục khác nữa.
Vì phần mềm được viết bằng ngôn ngữ lập trình Java bao gồm hàng trăm hoặc hàng nghìn Class riêng lẻ, nên việc giữ cho mọi thứ có tổ chức sẽ được thực hiện bằng cách đặt các Class và Interface có liên quan thành các Package.
Lợi ích của Package
- Các Package được sử dụng để tránh việc xung đột trong khi đặt tên, kiểm soát truy cập, giúp bạn tìm kiếm và sử dụng các Class, Interface,… một cách dễ dàng hơn. Đồng thời, việc phân loại Class và Interface sẽ giúp quá trình bảo trì trở nên đơn giản.
- Khi thực hiện một dự án với Package, bạn có thể quan sát cấu tạo cũng như biết được ai là người viết dự án này.
- Package được trang bị tính năng bảo mật quyền truy cập, giúp bạn yên tâm về tính an toàn khi sử dụng.
Phân loại Package
Built-in Packages (Package có sẵn hay Package từ Java API)
Java API là một thư viện chứa các Class miễn phí đã được viết sẵn và được đưa vào môi trường phát triển Java.
Các Package có sẵn sẽ chứa các thành phần giúp quản lý dữ liệu đầu vào, lập trình cơ sở dữ liệu,…
Thư viện được chia thành Package và Class. Người dùng có thể nhập một Class duy nhất hoặc toàn bộ các Package chứa tất cả các Class đã được chỉ định.
Các Package phổ biến được tích hợp sẵn trong Java gồm:
- java.lang: Chứa các Class hỗ trợ ngôn ngữ (ví dụ: Class được định nghĩa các kiểu dữ liệu nguyên thủy, các phép toán). Package này sẽ được import tự động.
- java.io: Chứa Class hỗ trợ input/output (I/O).
- java.util: Chứa các Class tiện ích thực hiện các cấu trúc dữ liệu như danh sách liên kết, dictionary và hỗ trợ cho những hoạt động date/time.
- java.applet: Chứa các Class cho phép tạo Applet.
- java.awt: Chứa các Class để triển khai những thành phần cho giao diện người dùng đồ họa (button, menu,…).
- java.net: Chứa các lớp để hỗ trợ các thao tác trong mạng (network).
Bạn có thể tham khảo thêm trên trang web của Oracle tại đây.
Package do người dùng tự định nghĩa
Đây là các Package do người dùng tự định nghĩa.
Bài viết sẽ sử dụng Eclipse IDE để làm ví dụ demo. Cách tạo Package như sau:
Bước 1: Để tạo Package trong Java, bạn nhấn chuột phải vào thư mục src trong project và chọn New -> Package.
Bước 2: Nhập tên package rồi nhấn Finish là xong.
Sau đó bạn sẽ New (tạo mới) các Class, Interface,… có liên quan với nhau vào Package vừa đặt để gõ code.
Lưu ý: Một Package này có thể nằm trong một Package khác. Vì thế, trong mỗi Package, bạn cũng có thể tạo một Package mới.
Giả sử: trong Package demo vừa tạo, bạn sẽ New một file Class có tên là HelloWorld.
Vì Class HelloWorld nằm trong Package demo, nên ở trên cùng của đoạn code, Eclipse IDE sẽ tự động thêm vào câu lệnh Package demo.
Mặt khác, Package newbie có rất nhiều Class trong đó. Do đó, để sử dụng được các Class ở Package newbie trong Class HelloWorld ở Package demo, bạn phải import Class đó.
Cú pháp:
import + <tên package>.<tên class>
Ví dụ: để sử dụng Class Array trong Package newbie, bạn sẽ khai báo như hình minh họa bên dưới:
Hoặc muốn import tất cả các Class trong một Package, bạn chỉ cần sử dụng ký tự *:
import <tên package>.* (Giả sử: import newbie.*)
Như vậy, trong Class HelloWorld ở Package demo , bạn đã có thể sử dụng tất cả các Class trong có trong Package newbie rồi nhé!
Lưu ý khi sử dụng Package trong Java
- Bạn hãy đặt tên cho Package theo thứ tự ngược lại với tên miền. Ví dụ: trường đại học có thể đặt tên theo dạng college.tech.ee, college.art.history,…
- Dù các Package khác nhau nhưng Class vẫn có thể trùng tên. Trong trường hợp này, bạn phải import đầy đủ tên package và tên class để phân biệt.
- Có 4 cách truy cập vào các Java Package gồm: Private, Protected, Public và Default.
- Bạn có thể thêm nhiều Class vào một Package đơn giản bằng cách sử dụng tên Package ở phần đầu chương trình và lưu lại ở trong thư mục Package. Để xác định được một Class công khai, bạn cần tệp java mới hoặc có thể thêm một Class mới vào tệp hiện có và chỉnh sửa lại.
- Các Package nhỏ bên trong Package lớn được gọi là Subpackage hay Package con. Bạn cần nhập chúng một cách rõ ràng.
Trên đây là một số thông tin về Package trong Java. Hy vọng bài viết sẽ thực sự hữu ích đối với những ai đang mới bước chân vào ngành lập trình nói chung và ngôn ngữ Java nói riêng. Chúc bạn thành công!
Những câu hỏi thường gặp
Có những cách nào để truy cập vào Package?
Có 4 cách truy cập vào Package gồm:
- Private: Chỉ có thể truy cập bởi chính Class đó
- Protected: Được truy cập bởi các Class trong cùng một Package (bao gồm subpackage)
- Public: Được truy cập bằng tất cả các Class dù cùng một Package hay khác Package
- Default: Được truy cập bởi Class trong cùng Package (không bao gồm subpackage)
Làm sao để truy cập một Package từ Package khác?
Có 3 cách để truy cập một Package từ Package khác:
- Sử dụng packagename.*: Với cách này, tất cả các Class hay Interface của các Package đều có thể truy cập được, nhưng các Package con thì không.
- Sử dụng packagename.classname: Bạn chỉ có thể truy cập được tới Class đã được khai báo của Package.
- Sử dụng tên đầy đủ: Bạn chỉ được phép truy cập tới Class đã được khai báo của Package và không cần sử dụng từ khóa để import. Tuy nhiên, bạn phải sử dụng tên đầy đủ mỗi khi truy cập vào các Class hay interface
Các Class trong cùng một Package có cần import không?
Các Class trong cùng một Package không cần phải import. Vì cơ bản Package được dùng để gom các Class, Interface,… có liên quan với nhau để tiện sử dụng.
Eclipse IDE là gì?
Eclipse IDE được biết đến là một môi trường phát triển tích hợp (IDE) cho Java và một số ngôn ngữ lập trình khác như C, C ++, PHP, và Ruby … Môi trường phát triển này bao gồm các công cụ phát triển Java Eclipse (JDT) cho Java, Eclipse CDT cho C/C ++, Eclipse PDT cho PHP,…
Eclipse và các plugin khác từ nền tảng này được phát hành theo giấy phép Eclipse Public License (EPL). EPL sẽ đảm bảo Eclipse được tải xuống và cài đặt hoàn toàn miễn phí cũng như cho phép sửa đổi bởi cộng đồng.