Java EE bao gồm một số đặc tả kĩ thuật API, như JDBC (Cơ cấu liên nối với cơ sở dữ liệu), RMI (thi hành phương pháp từ xa), thư điện tử (e-mail), JMS (Java Message Service - Dịch vụ thông điệp của Java), Dịch vụ mạng (Web services), XML ..., và đồng thời nó còn định nghĩa cấu trúc liên nối giữa những kĩ thuật này vói nhau. J2EE còn bao gồm một số đặc tả chỉ tồn tại trong các thành phần của nó. Những thành phần này bao gồm Enterprise JavaBean (chủ thể Bean dùng trong kinh doanh), servlet, portlet, JSP và một số các kĩ thuật về dịch vụ mạng (web service). Điều này cho phép nhà phát triển tạo ra một chương trình ứng dụng kinh doanh (enterprise application) không những chỉ có thể sử dụng trên các nền tảng khác nhau, mà còn có thể khuếch trương thành những qui mô lớn hơn và tích hợp với những công nghệ kế thừa từ trước đây. Trình chủ của Java EE có thể quán xuyến các giao dịch (transactions), nhiệm vụ bảo an (security), chức năng đa biến số bất định lượng (arity), tính qui mô hóa (scalability), sự tương tranh (concurrency) và quản lý các thành phần đã được triển khai trong môi trường của nó. Điều này có nghĩa là các nhà phát triển có thể tập trung vào các lôgic thương mại của các thành phần thay vì phải quan tâm đến cơ sở hạ tầng và các nhiệm vụ tích hợp khác.
Các API của Java EE chứa đựng một số kỹ thuật được mở rộng thêm từ những chức năng trong các API của Java SE.
javax.ejb.*
API về chủ thể cấp kinh doanh (Enterprise Java Beans - hay EJB) cung cấp một tập các hàm API mà một khung chứa đối tượng phân tán (distributed object container) phải hỗ trợ để có thể cung cấp tính bền bỉ (persistence), khả năng liên lạc từ xa (dùng RMI), khả năng khống chế tương tranh (concurrency control) và điều khiển truy cập (access control) cho các đối tượng phân tán (distributed objects).javax.servlet
API về Servlets cung cấp một tập các hàm API giữa một khung chứa mạng (web container) và một servlet nhằm đảm nhiệm việc xử lí các yêu cầu và hồi âm các phản ứng.javax.servlet.jsp
Các gói javax.servlet.jsp và javax.servlet.jsp.tagext cung cấp các hàm API về JSP.javax.naming
Các gói javax.naming, javax.naming.directory, javax.naming.event, javax.naming.ldap và javax.naming.spi định nghĩa các hàm API đối với các giao tiếp (Interface) sử dụng tên trong khi truy cập đối tượng và thư mục (Java Naming and Directory Interface - JNDI).java.sql, javax.sql
Các gói java.sql và javax.sql cung cấp các hàm liên nối với cơ sở dữ liệu (Java Database Connectivity - JDBC).java.transaction.*
Các gói này cung cấp các API để quản lý việc giao dịch giữa các nguồn tài nguyên khác nhau (Java Transaction API - JTA).javax.xml.*
Các gói này cung cấp các hàm API để xử lý các tài liệu XML (Java API for XML Processing - JAXP).javax.jms.*
Các gói này cung cấp các hàm API sử dụng trong dịch vụ thông điệp của Java (Java Message Service - JMS).-------------------------------------------------------------------------------------------------------------------------
RMI(hay Remote Method Invocation) là 1 công nghệ giải quyết bài toán distributed object computing, trong đó nó cho phép các đối tượng nằm trên các JVM khác nhau (remote) có thể tương tác với nhau như những đối tượng nằm cùng JVM, mà cụ thể là gọi các method của nhau (method invocation).
EJB(hay Enterprise Java Beans) là 1 công nghệ dựa trên RMI, tức là nó kế thừa các đặc điểm trên của RMI, và ngoài ra nó được thiết kế dạng component-based để giải quyết bài toán modularity. Nó cho phép programmer đóng gói ứng dụng (J2EE) của mình thành các component độc lập, để có thể dễ dàng thay thế hoặc tái sử dụng trong các hệ thống khác.
Nếu như 2 công nghệ trên là đặc trưng của Java, thì Web service lại ko thuộc về một ngôn ngữ nào cả. Vì web service ra đời nhằm giải quyết bài toán integration - Tích hợp các hệ thống/nền tảng khác nhau (thường là dựa vào contract). Một ứng dụng viết bằng Java có thể cung cấp 1 dịch vụ để các ứng dụng viết bằng C# sử dụng. Dựa vào đặc tính quan trọng này, ws có thể được dùng cho những mục đích khác như: modularity (1 hệ thống có thể được tạo bởi nhiều ứng dụng con được viết bằng các ngôn ngữ khác nhau, mỗi ứng dụng con trong đó đảm nhận 1 vai trò & độc lập với các ứng dụng khác), interoperability (các hệ thống khác nhau có thể "hiểu" & làm việc được với nhau).
Trong một số trường hợp, kiến trúc sư hệ thống có thể sử dụng EJB để xây dựng 1 phần của kiến trúc service-oriented (VD: Dùng Entity Beans cho persistent storage - DB). Nhưng trong đại đa số trường hợp không thể sử dụng một mình EJB vì rất khó để tích hợp EJB với các ngôn ngữ khác Java.
Ngoài ra, trong bài toán integration, còn 1 công nghệ/chuẩn khác từ xa xưa là CORBA (hay Common Object Request Broker Architecture). CORBA giống Java RMI ở chỗ đều là object model, chứ ko phải là message model như web service. CORBA cũng cho phép triệu gọi phương thức từ xa như RMI, nhưng lại độc lập nền tảng & ngôn ngữ.
Sự ra đời của web service dần dần thế chỗ của CORBA, có thể một phần vì nó đơn giản hóa phần giao tiếp cho các lập trình viên (như đã nói ở trên, message model & contract thay vì object model)
Không có nhận xét nào:
Đăng nhận xét