EJB2 so với 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 giới thiệu EJB, 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ã doanh nghiệp back-end thường được các lập trình viên triển khai lại. Do đó, EJB đã được giới thiệu để giải quyết các vấn đề phổ biến này như sự kiên trì, tính toàn vẹn giao dịch và bảo mật. EJB cung cấp các cách tiêu chuẩn để xử lý các sự cố phía sau này, bằng cách chỉ định cách máy chủ ứng dụng xử lý các giao dịch, tích hợp với các dịch vụ JPA (Java Persistence API), xử lý kiểm soát đồng thời, xử lý các sự kiện JMS (Dịch vụ thông báo Java), giải quyết các vấn đề đặt tên với JNDI ( Giao diện thư mục và đặt tên Java), phát triển các chương trình bảo mật với JCE (Java Cryptography Extension) và JAAS (Dịch vụ xác thực và ủy quyền Java), triển khai các thành phần, giao tiếp từ xa với RMI-IIOP (Giao diện gọi từ phương thức Java từ xa qua Giao thức liên kết mạng Internet) , phát triển dịch vụ web, gọi các phương thức không đồng bộ và sử dụng dịch vụ Timer.
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 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à tổng hợ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 cuốn Bean Bean một lần và chạy bất cứ nơi nào mà không cần biên dịch lại (tuân thủ cách viết một lần, chạy bất cứ nơi nào khẩu hiệu của ngôn ngữ lập trình Java). Hơn nữa, EJB2 dự định cho phép các thành phần được phát triển bởi các nhà cung cấp khác nhau dễ dàng tương tác và cho phép các nhà cung cấp viết phần mở rộng cho các 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 các lập trình viê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 mô tả triển khai đã được sử dụng trong các phiên bản trước. EJB3 chứa một giao diện kinh doanh và một bean thực thể cụ thể có thể thực hiện giao diện kinh doanh đó, loại bỏ nhu cầu sử dụng giao diện home / remote và tệp ejb-jar.xml. Hiệu suất tổng thể của EJB3 được cải thiện hơn nhiều so với EJB2, và có sự gia tăng đáng kể về 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 thiện rõ rệt về cấu hình và hiệu năng so với EJB2. Một lý do cho sự cải thiện hiệu suất này là việc sử dụng POJO (Đối tượng Java cũ đơn giản) với siêu dữ liệu và 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 giao diện Home / Remote và các giao diện khác (ví dụ: SessionBean), loại bỏ nhu cầu sử dụng các phương thức gọi lại container (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ụ, thật 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 rất nhẹ (trái ngược với các thực thể EJB2 nặng, thực hiện 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, 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 bean 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 (Máy ảo Java) độc lập mà không phải sử dụng các bộ chứa (điều này là có thể vì nó không thực hiện các giao diện chuẩn). Không giống như EJB2, EJB3 có thể dễ dàng cắm được với các nhà cung cấp kiên trì được cung cấp bởi các bên thứ ba. 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 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à có sự giảm đáng kể chi phí hiệu năng so với EJB2.