Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

[TUT] Phần 2: Giới thiệu về công nghệ Java EE

Vì JavaEE là một tập hợp của rất nhiều các công nghệ khác nhau nên hôm nay chúng ta sẽ dành riêng một bài để nói về các công nghệ bên trong nền tảng JavaEE. 

Với những bạn mới bắt đầu, trước khi đọc bài viết này bạn nên đọc qua topic giới thiệu về kiến trúc phần mềm của mình, ở đó mình sẽ cung cấp 1 chút thông tin về kiến trúc phần mềm để cho các bạn dễ hiểu hơn. 

-----------------------------------------------------------------------------------------------------

Giới thiệu về công nghệ Java EE và sự support của NetBeans IDE


Netbean IDE đã được phát triển trong sự hợp tác chặt chẽ với Java EE và nhóm phát triển GlassFish để cung cấp sự tích hợp chặt chẽ và dễ dàng nhất có thể để sử dụng các đặc điểm kỹ thuật của Java EE.

NetBeans IDE là cách tốt nhất để nhanh chúng tìm hiểu và làm việc trong Java EE. Tài liệu này giới thiệu về các khái niệm chính của Java EE và cách sử dụng chúng khi lập trình.
Bao gồm các chủ đề sau:

  • Sử dụng Annotations thay thế cho các mô tả triển khai.
  • Simplified EJB Software Development
  • Sử dụng Dependency Injection để truy cập tài nguyên
  • Java Persistence Model
  • Web Services
Bạn có thể tìm thêm thông tin về việc phát triển ứng dụng Java EE trong cuốn Java EE 6 Tutorial và Java EE 5 Tutorial.

Annotations thay thế cho Deployment Descriptors

Nền tảng Java EE đơn giản hóa việc triển khai bằng cách loại bỏ sự cần thiết phải mô tả cách thức triển khai trừ cách mô tả triền khai theo yêu cầu của đặc tả Servlet, các file web.xml. Các mô tả triển khai khác như jar.xml.ejb và các mục lien quan đến các Web Services trong web.xml đều đã lạc hậu. Các mô tả triển khai của J2EE 1.4 thường rất phức tạp và rất dễ phạm sai lầm khi sử dụng. 

Thay vào đó, các nền tảng Java EE sử dụng các “chú thích” (Annotation) . Các chú thích đó tương tự như Java modifier trong Java SE (public, private, protected) mà bạn thường hay sử dụng. Ví dụ, đặc tả EJB3 là một tập hợp con của các đặc tả Java EE. Nó định nghĩa các annotation cho các loại Bean, các loại Interface, các quan hệ tài nguyên, các thuộc tính giao dịch, bảo mật, v…v… Một bộ annotations tương tự được cung cấp cho các dịch vụ web, đó là đặc tả JAX-WS 2.0. Một số annotations được dùng để tạo ra các artifacts. Các annotations khác được sử dụng để viết tài liệu cho code của bạn. Còn những các khác cung cấp các dịch vụ như tăng cường an ninh hay runtime-specific logic. Tóm lại, nền tản Java EE cung cấp các annotations cho các nhiệm vụ sau đây:

  • Định nghĩa và sử dụng Web services.
  • Phát triển các phần mềm ứng dụng EJB.
  • Ánh xạ các lớp công nghệ Java tới XML.
  • Ánh xạ các lớp công nghệ Java tới cơ sở dữ liệu.
  • Ánh xạ các phương thức (methods) sang thao tác (operations).
  • Quy định các phụ thuộc bên ngoài.
  • Quy định các thông tin về việc triển khai, bao gồm các thuộc tính về an ninh.

Các annotations được đánh dấu bằng một ký tự @. Trong IDE, khi bạn tạo ra một type sử dụng các annotations trong Java EE, các placeholders có liên quan sẽ được cung cấp trong đoạn mã được tạo ra. Ví dụ, khi bạn sử dụng IDE để tạo ra một session bean không có trạng thái, các đoạn mã sau đây sẽ được tạo ra, bao gồm cả @Stateless() annotation:

Code:
package mypackage; import javax.ejb.*; @Stateless() public class HelloWorldSessionBean implements mypackage.HelloWorldSessionLocal { }
Code completion cung cấp cho bạn các thuộc tính của annotation cho các mục. Ví dụ, khi bạn nhận Ctrl-Space trong khung của một annotation @WebService(), bạn sẽ thấy như sau:
IMG

Mỗi thuộc tính có một giá trị mặc định. Do đó, bạn không cần phải xác định bất kỳ thuộc tính nào trừ khi bạn muốn sử dụng một giá trị khác các giá trị mặc định. Trong trường hợp đơn giản, chỉ cần giá trị mặc định là đủ, có nghĩa là bạn thậm chí không cần phải cũng cấp thuộc tính nào cả.

Việc phát triển phần mềm qua EJB được đơn giản hóa

EJB 3.0 API mới khiến cho việc phát triển phần mềm trở nên dễ dàng hơn bằng cách giảm và đơn giản hóa số lượng công việc cần thiết của nhà phát triển. Nói cách khác, sẽ có ít class hơn và ít code hơn. Điều này là có thể, bởi ngày các nhiều công việc đều có thể thực hiện bởi container. Đây là một số chức năng và lợi ích của EJB 3:

  • Ít các class và interface hơn. Bạn không còn phải cần đến các interfaces cho các đối tượng EJB bởi vì bây giờ, container sẽ chịu trách nhiệm về việc đưa ra các phương thức cần thiết. Bạn chỉ cần cung cấp một Business interface. Bạn có thể sử dụng annotations để khai báo các thành phần EJB của bạn và các container sẽ quản lý cách giao dịch.
  • Không còn các đặc tả triển khai. Bạn có thể sử dụng annotations trực tiếp trong lớp để báo cho container về các phụ thuộc và cấu hình mà bạn đã định nghĩa trong mô tả triển khai. Nếu không có hướng dẫn cụ thể, container sẽ dử dụng các quy tắc mặc định để xử lý các tình huống thường gặp
  • Tra cứu đơn giản. EJBContext cho phép bạn tra cứu các đối tượng trong JNDI trực tiếp trong class.
  • Đơn giản mô hình quan hệ giữa các đối tượng. Java Persistence API làm cho mô hình đối tượng-quan hệ đơn giản hơn và rõ ràng hơn bằng cách cho phép bạn sử dụng annotations trong POJOs để ánh xạ các đối tượng Java tới các CSDL quan hệ.
Trong IDE, bạn có thể code các Enterprise Beans giống như các Java Class khác. Sử dụng code completion và gợi ý khi soạn thảo để thực hiện đúng các phương thức và giữ cho các Classes đồng bộ với các Interfaces của chúng. Bạn không cần phải sử dụng các lệnh đặc biệt và các Dialog box để tạo ra những thứ như Business Methods hay Web Services operations, mặc dù các lệnh đó vẫn có sẵn để giúp bạn làm quen với cú pháp của mã lệnh Java EE.

Sử dụng Dependency Injection để truy cập tài nguyên


Dependency Injection cho phép một đối tượng sử dụng các annotations để yêu cầu các tài nguyên bên ngoài một cách trực tiếp. Điều này sẽ khiến cho mã lệnh của bạn dễ đọc hơn bởi bạn không cần phải làm lộn xộn chương trình với việc tạo các tài nguyên và tra cứu code. Bạn có thể sử dụng việc cung cấp tài nguyên trong các thành phần EJB, web container và clients. 

Để yêu cầu sự cung cấp một tài nguyên, một thành phần. Ta sử dụng annotation @Resource, hoặc trong trường hợp phải sử dụng các tài nguyên đặc biệt, có thể sử dụng annotation @EJB và @WebServiceRef. Các tài nguyên có thể được cung câp bao gồm:

  • Đối tượng SessionContext
  • Đối tượng DataSources
  • Entity Manager interface
  • Các Enterprise beans
  • Web Services
  • Message queues và topic
  • Kết nối để điều phối tài nguyên (Connection factories for resource adapters)

Trong IDE, Source Editor cung cấp toàn bộ Code Completion cho các annotations về cung cấp tài nguyên có trong nền tảng Java EE. Ngoài ra, IDE sẽ tự động cung cấp các tài nguyên cho các file của bạn khi bạn chạy các lệnh gọi EJB và sử dụng CSDL.

Java Persistence API Model 


Nền tảng Java EE giới thiệu Java Persistence API, được phát triển như một phần của JSR-220. Java Persistence API cũng có thể được sử dụng bên ngoài các thành phần EJB, ví dụ, trong các ứng dụng web và ứng dụng clients và cũng có thể sử dụng bên ngoài nền tảng Java EE hoặc trong các ứng dụng Java SE.

Java Persistence API có các tính năng chính sau:

  • Các thực thể là POJOs. Không giống như các thành phần EJB sử dụng Container-managed Persistence, các đối tượng thực thể sử dụng các API mới không còn là các thành phần và cũng không còn cần thiết trong module EJB.
  • Chuẩn hóa lược đồ đối tượng-quan hệ. Các đặc điểm kỹ thuật mới chuẩn hóa cách thức xử lý lược đồ đối tượng-quan hệ, giải phóng các nhà phát triển khỏi việc phải học các đặc điểm kỹ thuật cụ thể của các nhà cung cấp. Các Java Persistence API sử dụng các annotations để xác định thông tin về đối tượng-quan hệ. Nhưng vẫn hỗ trợ mô tả XML.
  • Các queries được đặt tên. Một query được đặt tên là một static query được thể hiện trong metadata. Các queries có thể là Java Persistence API hoặc là query thuần túy. Điều này làm cho việc sử dụng các truy vấn trở nên đơn giản. Các quy tắc đóng gói đơn giản. Bởi vì thực thể Beans chỉ là những class Java đơn giản, chúng có thể được đóng gói ở bất kỳ nơi nào trong một ứng dụng Java EE. Ví dụ, thực thể beans có thể là một phần của EJB JAR, application-client JAR, WEB-INF/lib, WEB-INF/classes hoặc thậm chí chí là một phần của utility JAR trong một file Enterprise Application Archive (EAR). Với những quy tắc đóng gói đơn giản, bạn không phải tạo một EAR file để sử dụng các thực thể beans trong một ứng dụng web hoặc một ứng dụng client.
  • Tách rời các thực thể. Vì các thực thể beans là các POJO. nó có thể được xếp tuần tự và gửi qua mạng tới một địa chỉ khác. Kết quả là bạn không phải sử dụng các đối tượng chuyển giao dữ liệu (Data Transfer Object – DTO).
  • EntityManager API. Lập trình ứng dụng hiện nay sử dụng EntityManager API để thực hiện các thao tác Create Read Update Delete (CRUD) có liên quan đến thực thể.

IDE cung cấp công cụ để làm việc với Java Persistence API mới. Bạn có thể tạo ra các lớp thực thể tự động tự CSDL hoặc code các lớp thực thể bằng tay. IDE cũng cung cấp các templates và công cụ thiết kế giao diện để tạo và bào trì các persistence unit. Xem bài sau “Bắt đầu với các ứng dụng Java EE 6” cho các thông tin về việc sử dụng Java Persistence API.

Web services

Trong nền tảng Java EE, việc sử dụng các annotations đã cải thiện và đơn giản hóa việc hỗ trợ web services. Trong đó có: JSR 224, Java API for XML-Based Web Services (JAX-WS) 2.0, JSR 222, Java Architecture for XML Binding (JAXB) 2.0; and JSR 181, Web Services Metadata for the Java Platform.

JAX-WS 2.0

JAX-WS 2.0 là các API mới cho các Web services trên nền tảng Java EE. Tiếp theo JAX-RPC 1.1, JAX-WS 2.0 vẫn giữ nguyên mô hình RPC về phát triển phần mềm, trong khi cải thiện trên nhiều mặt: liên kết dữ liệu (data binding), giao thức (protocol) và vận chuyển độc lập (transport independence), hỗ trợ cho phong cách REST của Web Services và dễ dàng phát triển.

Một khác biệt quan trọng từ JAX-RPC 1.1 là tất cả các dữ liệu lên kết đã được chuyển giao cho JAXB 2.0 Điều này cho phép các Web Services dựa trên JAX-WS sử dụng 100% XML Schema, cải thiện khả năng tương tác và dễ sử dụng. Cả 2 công nghệ đều được tích hợp. Khi bắt đầu từ các lớp công nghệ Java. JAXB 2.0 có thể tạo ra các tài liệu XML Schema và tự động đưa chúng vào tài liệu Web Service Description Language (WSDL), người dùng sẽ tránh khỏi các lỗi khi nhập liệu bằng tay.

Ngoài ra, JAX-WS 2.0 hỗ trợ SOAP 1.1, SOAP 1.2 và XML/HTTP. JAX-WS 2.0 cho phép các nhà cung cấp hỗ trợ các giao thức bổ sung và mã hóa để cho hiệu suất tốt hơn. Ví dụ như FAST Infoset hoặc cho các ứng dụng đặc biệt. Web Services sử dụng các attachments để tối ứu hóa việc gửi và nhận các file dữ liệu nhị phân lớn có thể tận dụng lợi thế của MTOM/XOP (viết tắt của Message Transmission Optimization Mechanism/XML-binary Optimized Packaging – Cơ chế tối ưu hóa truyền thông/ Tối ưu hóa việc đóng gói XML) . Trước khi có công nghệ Java EE, định nghĩa một Web Service cần các mô tả rất dài dòng và khó sử dụng. Bây giờ nó đã dễ dàng như việc đặt annotation @WebService trong các lớp Java. Tất cả các phương thức public trên class được tự động xuất ra như các hoạt động của Web Services, tất cả các tham số đều được ánh xạ tới các kiểu dữ liệu XML Schema qua JAXB 2.0
Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

thanks bài viết hữu ích
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng