Giống như hầu hết những ngôn ngữ lập trình hướng đối tượng khác, Java bao gồm: một ngôn ngữ, một môi trường, một giao diện ứng dụng Java và nhiều lớp thư viện. Những lớp riêng này có đặc tính riêng là tái sử dụng lại, đây cũng là điểm mạnh mà Java khác với ngôn ngữ khác. Ngoài những tính năng trên Java còn có khả năng xử lý đa luồng. Ngôn ngữ này thật sự cơ động nên nó rất thích hợp cho các ứng dụng trên mạng và một số ứng dụng desktop khác. Ngoài ra nó còn có các đặc tính cần thiết như: Hỗ trợ chuỗi, đồ hoạ, kiểm soát lỗi, đa phương tiện, làm việc theo mô hình client/server, linh động và hiệu quả… các tính năng trên thực sự là những gì mà các doanh nghiệp và tổ chức hiện nay đang cần, để đáp ứng chính xác các yêu cầu xử lý thông tin của họ.
- Java có một sức mạnh đầy ấn tượng và là chủ đề đang được tranh luận
nhiều nhất hiện nay. Java có những tính năng vượt trội hơn so với các ngôn ngữ khác như sau.
o Là một ngôn ngữ chạy trên môi trường độc lập, mã nguồn mở do
hãng Sun cung cấp.
o Chiếm rất ít dung lượng lưu trữ so với các ngôn ngữ khác.
o Là một ngôn ngữ lập trình đơn giản, hướng đối tượng, an toàn, độc
lập với cấu trúc, dễ di chuyển, hiệu suất cao, đa luồng, và có tính động.
- Java là một môi trường độc lập, đó là một lợi thế quan trọng cho phép
Java hơn hẳn những ngôn ngữ khác, đặc biệt là cho những hệ thống cần làm việc trên nhiều môi trường khác nhau, Java là một môi trường độc lập ở cả trên nền hệ thống lẫn dưới mức thấp như hệ xử lý nhị phân. Nó có khả năng chuyển từ hệ thống máy tính này sang hệ thống máy tính khác không phụ thuộc vào cấu trúc của máy hay hệ điều hành hoạt động trên máy.
- Tuy nhiên Java có nhược điểm là thực thi chương trình chậm (do phải thông dịch lại và chạy trên một máy ảo) khi cài đặt các ứng dụng Java thường rất phức tạp. Vì thế sức cạnh tranh trong các ứng dụng trên máy tính rất thấp.
Nhưng với những ưu điểm tuyệt vời trên nên Java rất mạnh trong các thiết bị điện tử cầm tay và trên máy chủ như các hỗ trợ tương đối với các trình khách từ các thư viện riêng điển hình như Javamail thì việc lựa chọn ngôn ngữ java là rất xác đáng.
Javamail
Javamail cung cấp một API chuẩn và thông dụng để quản lí thư điện tử. Nó cho phép các nhà cung cấp dịch vụ cung cấp các cho người dùng một giao diện chuẩn cho các hệ thống tin nhắn sử dụng ngôn ngữ lập trình java dựa trên các chuẩn hoặc các đặc quyền. Sử dụng API này các ứng dụng có thể truy cập tới các kho chứa tin nhắn và soạn các tin nhắn để gửi đi.
Javamail được xây dựng trên một tập các lớp ảo. Các lớp này tạo nên một mô hình là tập hợp các mảnh của hệ thống thư chuẩn. Những lớp này bao gồm:
- Tin nhắn: Lớp ảo thể hiện một tin nhắn thư điện tử. Javamail thực hiện chuẩn nhắn tin MIME Internet và RFC822. Lớp MIMEMessage mở rộng lớp Message để diễn tả một tin nhắn điện tử kiểu MIME.
- Lưu trữ: lớp ảo này thể hiện một cơ sở dữ liệu các tin nhắn được được
duy trì bởi một máy chủ thư điện tử (Mail server) và được nhóm lại bởi người dùng. Mỗi Store sử dụng một phương thức truy cập riêng có thể là POP3, IMAP hay SMTP.
- Folder: lớp ảo này cung cấp một cách thức để các tin nhắn được tổ chức theo cấu trúc phân cấp. Mỗi Folder(cây thư mục) có thể chứa nhiều tin nhắn hay có thể chứa các Folder khác. Một máy chủ thư điện tử cung cấp cho mỗi người dùngmột Folder (thư mục) mặc định và người dùng có thể tạo thêm các thư mục con cũng như các file trong thư mục đó.
- Trasport: lớp ảo này thể hiện một phương thức giao vận nhất định. Một đối tượng Transport dùng một giao thức giao vận riêng để gửi tin nhắn. Mỗi nhà cung cấp dịch vụ, thực thi các lớp phải theo hệ thống hay giao
thức cụ thể của mình. Ví dụ một nhà cung cấp IMAP thực thi Javamail API sử dụng giao thức IMAP4. Các máy khách sử dụng thực thi này để thao tác với thư điện tử.
IMAP SMTP
Hình vẽ: chỉ ra một máy khách sử dụng thực thi IMAP4 để đọc thư điện tử và một thực thi SMTP để gửi thư đi. (chúng có thể từ một hay nhiều nhà cung cấp khác nhau)