EJB2 vs EJB3
EJB (Enterprise JavaBeans) là một API Java (Giao diện Lập trình Ứng dụng) được tìm thấy trong đặc tả Java EE (Nền tảng Java, Phiên bản Doanh nghiệp). EJB mô tả một mô hình kiến trúc để phát triển các ứng dụng doanh nghiệp. Đây là mô hình phía máy chủ được quản lý có khả năng nắm bắt logic nghiệp vụ của ứng dụng doanh nghiệp. IBM là người sáng tạo ban đầu của EJB, người đã phát triển nó vào năm 1997. Sun Microsystems đã áp dụng nó vào năm 1999.
Trước khi EJB ra đời, người ta thấy rằng các giải pháp cho các vấn đề được tìm thấy trong mã nghiệp vụ back-end thường được các lập trình viên thực hiện lại. Do đó, EJB đã được giới thiệu để giải quyết những vấn đề phổ biến này như tính bền bỉ, tính toàn vẹn của giao dịch và tính bảo mật. EJB cung cấp các cách tiêu chuẩn để xử lý các sự cố back end này, bằng cách chỉ định cách máy chủ ứng dụng sẽ xử lý các giao dịch, tích hợp với các dịch vụ JPA (Java Persistence API), xử lý điều khiển đồng thời, xử lý các Sự kiện JMS (Java Message Service), giải quyết các vấn đề đặt tên với JNDI (Giao diện đặt tên và thư mục Java), phát triển các chương trình an toàn với JCE (Java Cryptography Extension) và JAAS (Java Authentication and Authorization Service), triển khai các thành phần, giao tiếp từ xa với RMI-IIOP (Java Remote Method Invocation interface over the Internet Inter-Orb Protocol), phát triển các dịch vụ web, gọi các phương thức không đồng bộ và sử dụng dịch vụ Bộ hẹn giờ.
EJB2
EJB2 (EJB 2.0) được phát hành vào ngày 22 tháng 8 năm 2001. Nó mô tả đặc điểm kỹ thuật để phát triển các ứng dụng hướng đối tượng phân tán trong Java bằng cách kết hợp các công cụ được phát triển bởi các nhà cung cấp khác nhau. Một trong những mục tiêu chính của EJB2 là cho phép các lập trình viên phát triển các ứng dụng doanh nghiệp dễ dàng hơn mà không cần phải hiểu các chi tiết cấp thấp, chẳng hạn như đa luồng và gộp kết nối. Một mục tiêu khác là cho phép các lập trình viên viết một “Bean” một lần và chạy ở bất cứ đâu mà không cần biên dịch lại (tuân theo khẩu hiệu “viết một lần, chạy mọi nơi” của ngôn ngữ lập trình Java). Hơn nữa, EJB2 có ý định cho phép các thành phần do các nhà cung cấp khác nhau phát triển dễ dàng tương tác với nhau và cho phép các nhà cung cấp viết phần mở rộng cho sản phẩm của họ có thể hỗ trợ EJB.
EJB3
EJB3 (EJB 3.0) được phát hành vào ngày 11 tháng 5 năm 2006. EJB3 làm cho cuộc sống của các lập trình viên trở nên rất dễ dàng bằng cách cho phép họ sử dụng các chú thích thay cho các bộ mô tả triển khai đã được sử dụng trong các phiên bản trước. EJB3 chứa giao diện nghiệp vụ và một bean thực thể cụ thể có thể triển khai giao diện nghiệp vụ đó, loại bỏ nhu cầu sử dụng giao diện gia đình / từ xa và tệp ejb-jar.xml. Hiệu suất tổng thể của EJB3 được cải thiện nhiều so với EJB2 và có sự gia tăng đáng kể về khả năng cấu hình, tính linh hoạt và tính di động trong phiên bản EJB này.
Sự khác biệt giữa EJB2 và EJB3 là gì?
EJB3 có sự cải tiến đáng chú ý về cấu hình và hiệu suất so với EJB2. Một lý do cho việc cải thiện hiệu suất này là việc sử dụng POJO (Đối tượng Java cũ) với siêu dữ liệu và Bộ mô tả triển khai XML của EJB3 thay vì tra cứu JNDI được sử dụng trong EJB2 cho các tham chiếu đối tượng. Cấu hình của EJB3 đơn giản hơn nhiều vì lập trình viên không cần triển khai các giao diện Home / Remote và các giao diện khác (ví dụ: SessionBean), điều này loại bỏ nhu cầu sử dụng các phương thức gọi lại vùng chứa (chẳng hạn như ejbActivate và ejbStore).
Hơn nữa, EJB3 tốt hơn EJB2 trong các lĩnh vực linh hoạt và tính di động. Ví dụ, có thể dễ dàng chuyển đổi các thực thể EJB3 thành DAO (Đối tượng truy cập dữ liệu) và ngược lại vì các thực thể EJB3 nhẹ (trái ngược với các thực thể EJB2 nặng, triển khai các giao diện đã đề cập ở trên). Các truy vấn cơ sở dữ liệu được viết bằng EJB3 rất linh hoạt vì nó sử dụng EJB-QL đã được tinh chỉnh, thay cho phiên bản cũ hơn của EJB-QL, vốn có một số hạn chế. EJB3 loại bỏ tất cả các vấn đề về tính di động của EJB2 (sử dụng các đậu thực thể để truy cập cơ sở dữ liệu) bằng cách hỗ trợ JPA tổng quát hơn cho tất cả các giao dịch dữ liệu.
Không giống như EJB2, cần một bộ chứa EJB để thực thi, EJB3 có thể được thực thi trong một JVM độc lập (Máy ảo Java) mà không cần phải sử dụng bộ chứa (điều này có thể xảy ra vì nó không triển khai các giao diện tiêu chuẩn). Không giống như EJB2, EJB3 có thể dễ dàng cắm vào với các nhà cung cấp lâu dài do các bên thứ ba cung cấp. Một sự khác biệt quan trọng khác giữa EJB3 và EJB2 là EJB3 có thể sử dụng bảo mật dựa trên chú thích, trong khi EJB2 sử dụng bảo mật dựa trên bộ mô tả triển khai. Điều này có nghĩa là các tác vụ cấu hình và thiết lập dễ dàng hơn nhiều trong EJB3 và giảm đáng kể chi phí hiệu suất so với EJB2.