intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình web hướng java: Bài 5 - ThS. Trịnh Tuấn Đạt

Chia sẻ: Huynh Thi Thuy | Ngày: | Loại File: PDF | Số trang:0

102
lượt xem
8
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài 5 "Tổng quan về java EE" thuộc bài giảng Lập trình web hướng java trình bày về J2EE, sự phát triển của Enterprise Application Frameworsk, tại sao lựa chọn J2EE, các bước nghiên cứu J2EE,...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình web hướng java: Bài 5 - ThS. Trịnh Tuấn Đạt

  1. 8/28/2011 Nội dung  1. J2EE là gì? Bộ môn Công nghệ Phần mềm Viện CNTT & TT  2. Sự phát triển của các Enterprise Application Trường Đại học Bách Khoa Hà Nội Frameworks  3. Tại sao lựa chọn J2EE? LẬP TRÌNH WEB HƯỚNG JAVA  4. J2EE APIs and Technologies 5. Standard Impl (J2EE 1.4), Compatibility Test Bài 05: Tổng quan về Java EE  Suite (CTS)  6. BluePrints Giảng viên: ThS. Trịnh Tuấn Đạt  7. J2EE và Web Services Bộ môn CNPM  8. Các bước nghiên cứu J2EE Email: trinhtuandat.bk@gmail.com/dattt@soict.hut.edu.vn Enterprise Computing Challenges Key Products Portability Technologies App Servers J2SE™ 1. J2EE là gì? Diverse Web Servers Environments J2EE™ Components Time-to-market JMS Databases Core Competence Servlet Object to DB Assembly JSP tools Integration Connector XML Legacy Data Binding Systems XSLT Databases TP Monitors EIS Systems 3 J2EE là gì? Java™ Platform  Là nền tảng (platform) mở, chuẩn tắc để  phát triển (developing), triển khai (deploying) và quản lý (managing) các ứng dụng doanh nghiệp hướng thành phần (component-based), ứng dụng Web, Server, … Java Technology Enabled Devices Java Technology Enabled Desktop Workgroup Server High-End Server 1
  2. 8/28/2011 JavaTM Platform Java 2 Platform Micro Edition 2. Sự phát triển của các Enterprise Application (J2METM) Optional Packages Frameworks Optional Packages Personal Personal Java 2 Java 2 Basis Profile Profile Enterprise Standard Edition Edition Foundation Profile MIDP (J2EE) (J2SE) Java CDC CLDC Card APIs JVM KVM CardVM 8 * Under development in JCP 2. Sự phát triển của các Enterprise Application Ứng dụng doanh nghiệp (Enterprise Frameworks Applications)  1 tầng (Single tier)  Các thành phần của 1 enterprise application  2 tầng (Two tier)  Presentation logic  3 tầng (Three tier )  Business logic  Dựa trên RPC  Data access logic (và data model) Dựa trên Remote object System services    3 tầng (HTML browser và Web server)  Sự phát triển của 1 enterprise application  Máy chủ ứng dụng độc quyền (Proprietary application server) framework thể hiện ở  Máy chủ ứng dụng chuẩn (Standard application  Cách thức thay đổi linh động như thế nào? server)  Các dịch vụ hệ thống được cung cấp ra sao? Single Tier (Mainframe-based) Single-Tier: Ưu nhược điểm  Dumb terminals kết nối trực tiếp với mainframe  Ưu điểm:  Theo mô hình tập trung (ngược với mô hình phân  Không cần quản lý phía client tán)  Nhất quán dữ liệu (Data consistency) Các xử lý Presentation, business, và data access Nhược điểm:   được thực hiện duy nhất trong 1 ứng dụng ở mainframe  Các thao tác (presentation, data model, business logic) được mix vào lẫn nhau  khó bảo trì & tái sử dụng code. 2
  3. 8/28/2011 Two-Tier Two-Tier  Fat clients giao tiếp với database phía sau  Thuận lợi:  Gửi truy vấn SQL, nhận về dữ liệu thô  DB product independence Cons:  Presentation, Business logic và Data Model  Presentation, data model, business logic được mix lẫn processing logic đều nằm trong ứng dụng  nhau ở client  khó cập nhật & bảo trì client  Data Model đính chặt với mọi client: nếu CSDL thay đổi  tất cả clients đều hỏng SQL request  Các cập nhật phải được tiến hành trên tất cả các clients Database  ác mộng trong bảo trì hệ thống Tạo DB connection cho tất cả client  Tốn tài nguyên, SQL response  khó mở rộng  Trao đổi dữ liệu thô (Raw data)  tốn băng thông Three-Tier (RPC based) Three-tier (RPC based): ưu nhược điểm  Thinner client: business & data model được tách  Ưu điểm: biệt với presentation  Business logic thay đổi linh động hơn so với mô  Business logic và data access logic nằm trên server trung hình 2-tier gian (middle tier server), client xử lý presentation  (Nằm trên middle-tier server)  Middle tier server cần xử lý các dịch vụ hệ thống  Điều khiển tương tranh, đa luồng, transaction, security,  Nhược điểm: persistence, multiplexing, performance, ...  Độ phức tạp cao ở middle-tier server  Client và middle-tier server liên kết khá chặt (So RPC request SQL request với mô hình three-tier object based) RPC response SQL Database  Chưa thực sự tái sử dụng được Code (So với mô response hình three-tier object based) Three-tier (Remote Object based): ưu Three-Tier (Remote Object based) nhược điểm  Business logic và data model phát triển theo mô  Ưu điểm: hình ĐT  Kết nối linh động hơn mô hình RPC Business logic và data model được mô tả “trừu tượng” Tái sử dụng Code tốt hơn   (interface language)  Mô hình đối tượng được sử dụng: CORBA, RMI,  Nhược điểm: DCOM  Vẫn có độ phức tạp ở server trung gian  Interface language trong CORBA là IDL  Interface language trong RMI là Java interface Object request SQL request Database Object response SQL response 3
  4. 8/28/2011 Three-tier (Web Server based): ưu nhược Three-Tier (Web Server) điểm  Browser xử lý presentation logic  Ưu điểm:  Browser giao tiếp với Web server qua giao  Đa dạng cho thiết bị client thức HTTP  Điện thoại di động hỗ trợ J2ME, … Không cần quản lý client  Business logic và data model được xử lý theo  công nghệ “Sinh nội dung động” (CGI,  Nhược điểm: Servlet/JSP, ASP)  Vẫn còn phức tạp ở tầng trung gian SQL HTML request WEB request Server Database HTML response SQL response Xu hướng Single-tier vs. Multi-tier  Chuyển kiến trúc single-tier hoặc two-tier thành kiến trúc multi-tier Single tier Multi-tier  Chuyển từ mô hình nguyên khối (monolithic  No separation  Separation among model) sang mô hình ứng dụng hướng đối among presentation, presentation, business logic, business logic, tượng database database Hard to maintain  More flexible to Chuyển ứng dụng client thành HTML-based   change, i.e. client presentation can change without affecting other tiers Monolithic vs. Object-based Các vấn đề và gải pháp nổi bật  Phức tạp ở middle tier server Monolithic Object-based  Cần nhân bản các dịch vụ hệ thống, giải  1 Binary file  Pluggable parts quyết các vấn đề về  Recompiled,  Reusable  Concurrency control, Transactions relinked, Enables better Load-balancing, Security   redeployed every design time there is a  Easier update  Resource management, Connection pooling change  Implementation  Giải pháp? can be separated from interface  Cần có 1 container chung xử lý toàn bộ dịch vụ  Only interface is hệ thống ở trên published  Giải pháp độc quyền và giải pháp mở, chuẩn 4
  5. 8/28/2011 Giải pháp mở & chuẩn - Open and Giải pháp độc quyền-Proprietary Solution Standard Solution  Sử dụng mô hình "component và container"  Sử dụng mô hình "component và container"  Components đảm nhiệm các business logic trong đó container cung cấp các dịch vụ hệ  Container cung cấp môi trường thực thi kèm các thống theo chuẩn. dịch vụ hệ thống  J2EE: là 1 chuẩn như thế, cho phép linh  Components và container có giao kết chặt động trong code chẽ, rõ ràng nhưng theo cách thức của bên  Dựa trên công nghệ Java và standard-based Java cung cấp programming APIs   Vấn đề: phụ thuộc vào nhà cung cấp  Ví dụ: Tuxedo, .NET Với Developers  Có thể sử dụng bất kỳ J2EE implementation nào để phát triển và triển khai 3. Tại sao lựa chọn J2EE?   Bản chuẩn tắc, chất lượng, miễn phí Bản nâng cao, có phí, đảm bảo scalability và fault- tolerance  Có rất nhiều tài nguyên trong cộng đồng J2EE  books, articles, tutorials, quality code, best practice guidelines, design patterns etc.  Sử dụng các thành phần có sẵn (off-the-shelf) của bên thứ 3 27 Với Vendors Với Business Customers  Vendors: cùng tạo ra các đặc tả  Đảm bảo tính portability cho ứng dụng (specifications), sau đó cạnh tranh trong cài  Có nhiều thực thi để lựa chọn, tùy đặt/thực thi requirements  Trong các lĩnh vực Scalability, Performance,  Price (freetrả phí), scalability (1 CPU  mô Reliability, Availability, và development tools, … hình clustered), reliability, performance, tools, …  Tự do sáng tạo trong cài đặt, vẫn đảm bảo  Luôn có lựa chọn tối ưu tính portability của các ứng dụng  Rất nhiều công cụ phát triển  Không cần create/maintain các APIs cho riêng mình 5
  6. 8/28/2011 J2EE 1.4 APIs and Technologies  J2SE 1.4 (improved)  Servlet 2.4  JAX-RPC (new)  JSP 2.0 4. J2EE APIs & Technologies  Web Service for J2EE  EJB 2.1  J2EE Management  JAXR  J2EE Deployment  Connector 1.5  JMX 1.1  JACC  JMS 1.1  JAXP 1.2  JTA 1.0  JavaMail 1.3  JAF 1.0 31 Java EE 5  JAX-WS 2.0 & JSR 181  Java Persistence 4.1. Servlet &  EJB 3.0 JSP (JavaServer Pages)  JAXB 2.0  JavaSever Faces 1.2 – new to Platform  JSP 2.1 – Unification w/ JSF 1.2  StAX – Pull Parser – new to Platform Servlet là gì? Servlet vs. CGI  Servlets là các Java™ objects, mở rộng chức năng của 1 HTTP server Request Request CGI1 CGI1 Child Child for for CGI1 CGI1  Cho phép sinh động nội dung (Dynamic contents Request Request CGI2 CGI2 CGI CGI Based Child Child for for CGI2 generation) Based Webserver CGI2 Webserver Là lựa chọn ưu việt hơn CGI, NSAPI, ISAPI, Request Request CGI1 CGI1  Child Child for for CGI1 CGI1 ... Request Request Servlet1 Servlet1 Servlet Servlet Based Based Webserver Webserver  Độ hiệu quả Request Servlet1 Request Servlet2 Độc lập Platform và Server Servlet2 Servlet1  JVM JVM  Hỗ trợ quản lý Session Request Servlet1 Servlet2 Servlet2  Nền tảng Java 6
  7. 8/28/2011 Công nghệ JSP?  Cho phép tách biệt business logic khỏi presentation 4.2. EJB  Presentation: dạng HTML hoặc XML/XSLT (Enterprise Java Beans)  Business logic: được thực hiện với Java Beans hoặc custom tags  Bảo trì, tái sử dụng tốt hơn  Dễ mở rộng ứng dụng với custom tags  Dựa trên công nghệ Servlet EJB Technology? Tại sao sử dụng EJB Technology?  Là công nghệ cho các components phía  Tận dụng được các lợi ích của mô hình hướng server thành phần trên server  Tách biệt business logic với system code  Cho phép phát triển và triển khai các ứng  Container cung cấp các system services dụng doanh nghiệp với các tính năng cao  Đảm bảo tính portability cho các components cấp:  Trên các servers khác nhau  Transactional, distributed, multi-tier, portable,  Trên môi trường tính toán khác nhau scalable, secure, …  Cho phép cấu hình tại thời điểm triển khai (deployment-time configuration)  Deployment descriptor (XML file) EJB Architecture Enterprise JavaBeans Enterprise JavaBeans Synchronous communication Asynchronous communication Session Bean Entity Bean Message-Driven Bean Stateless Stateful Bean managed Container managed Persistence Persistence (BMP) (CMP) 7
  8. 8/28/2011 Java Message Service (JMS)  Messaging systems (MOM) cung cấp 4.3. JMS  Giao tiếp linh động (Java Message Service)   Giao tiếp không đồng bộ (Asynchronous communication) Có vai trò như 1 bưu điện tập trung  Lợi ích của các Messaging systems  Flexible, Reliable, Scalable communication systems  Hỗ trợ mô hình: Point-to-Point, Publish & Subscribe  JMS định nghĩa các chuẩn Java APIs cho các messaging systems Connector Architecture  Định nghĩa các API chuẩn tắc để tích hợp công nghệ J2EE với các hệ thống EIS 4.4. Connector Architecture   CICS, SAP, PeopleSoft, etc. Nếu không có Connector architecture, mỗi App server phải cung cấp 1 adaptor riêng cho từng hệ thống EIS  m (# of App servers) x n (# of EIS's) Adaptors  Với Connector architecture, cùng 1 adaptor làm việc được với tất cả App server tuân theo kiến trúc J2EE Connector  1 (common to all App servers) x n (# of EIS's) Adaptors Bài toán m x n nếu không có Connector Architecture 4.5. JAAS (1 thành phần của J2SE 1.4) (Java Authentication & m n Authorization Service) App SAP Server1 App EIS Server2 2 App EIS3 Server3 App EIS4 Server 8
  9. 8/28/2011 JAAS: Authentication JAAS Pluggable Authentication  Dễ dàng chuyển đổi các kỹ thuật xác thực sau:  Userid/password  Smartcard  Kerberos  Biometric (Sinh trắc học)  Cho phép ứng dụng là portable, không quan tâm sử dụng kỹ thuật xác thực nào  JAAS cung cấp các API độc lập với kỹ thuật sử dụng  Cho các ứng dụng Java  Có file cấu hình (login configuration file) chứa thông tin về kỹ thuật áp dụng cho 1 môi trường cụ thể JAAS: Authorization  Không có JAAS, Java platform security dựa trên: 4.6. Các J2EE APIs &  Where the code originated Technologies khác  Who signed the code  JAAS API hỗ trợ thêm:  Who’s running the code   Hỗ trợ User-based authorization JNDI JDBC  Java Naming and Directory Interface  Cung cấp Java API chuẩn tắc giao tiếp với  Được sử dụng bởi các ứng dụng J2EE để CSDL quan hệ định vị tài nguyên & đối tượng (resources &  Sử dụng SQL objects)  Các nhà cung cấp (Vendors) đưa ra các JDBC  Ứng dụng: thông qua định danh để tham chiếu driver tương ứng để Java API gọi đến tới đối tượng  Định danh phải được cấu hình chỉ tới đối tượng và hoặc tài nguyên nào bởi quản trị hệ thống khi triển khai ứng dụng 9
  10. 8/28/2011 J2EE Platform Architecture 4.7. J2EE là 1 kiến trúc End- B2B Applications to-End Existing B2C Applications Applications Web Services Application Server Wireless Enterprise Applications Information Systems J2EE là giải pháp End-to-End N-tier J2EE Architecture Firewall J2EE Application Client Server Enterprise Enterprise Information JavaBeans™ Client Systems (EIS): Client Relational Database, Web Enterprise Legacy Client Server JavaBeans Applications, JSP, Servlets ERP Systems Client HTML/XML Other Services: JNDI, JMS, Enterprise Client Middle JavaMail™ Information WJeBb TT ie E ierr Tier Tier Tier J2EE Containers & Components Applet Container Web Container EJB Container 4.8. J2EE Component & Applet HTTP/ HTTPS JSP Servlet RMI EJB Container Architecture J2SE RMI/IIOP RMI/IIOP JavaMail JDBC JavaMail JDBC JMS JNDI JNDI JTA JMS JTA App Client JAF JAF Container App HTTP/ J2SE Client HTTPS RMI RMI/IIOP JDBC JNDI JMS J2SE J2SE Database 10
  11. 8/28/2011 Containers và Components Containers & Components Containers Components  Containers thực hiện các công việc 1 cách Handle Handle thầm lặng (invisibly)  Concurrency  Presentation  Không có các APIs phức tạp Security Business Logic Đem đến tính simplicity và flexibility cho J2EE     Availability  Scalability  Containers thực thi J2EE  Persistence  Transaction  Gần giống với các components  Life-cycle management  Các nhà sản xuất (Vendors) các containers tự do  Management sáng tạo Vòng đời phát triển ứng dụng J2EE  Viết và biên dịch các thành phần code 4.9. Vòng đời phát triển và  Servlet, JSP, EJB triển khai các ứng dụng J2EE  Viết deployment descriptors cho các components  Từ Java EE 5, có thể thay bằng annotation  Tập hợp các components trong các ready-to- deployable package  Triển khai package trên server Các Roles trong quá trình phát triển ứng Minh họa cho vòng đời dụng J2EE Creation Assembly Deployment  Component provider Created by J2EE Modules Component Assembled and Augmented J2EE APP Processed  Còn được gọi là Bean provider by Application by Deployer Application assembler Developer Assembler  Deploy  Deployer J2EE Container  Platform provider  Còn được gọi là Container provider Enterprise  Tools provider Components  System administrator 11
  12. 8/28/2011 Deployment Descriptor  Chỉ dẫn cho container cách quản lý và điều khiển hoạt động của các J2EE components 4.10. Các thành phần trong  Transaction ứng dụng J2EE Application  Security  Persistence  Cho phép declarative customization (ngược với programming customization)  XML file  Đảm bảo tính portability cho mã nguồn Các thành phần có thể có trong ứng dụng J2EE Các thành phần trong ứng dụng J2EE  Các ứng dụng J2EE 4 tầng: Web Server EJB Server  HTML client, JSP/Servlets, EJB, JDBC/Connector DB & EIS  Các ứng dụng J2EE 3 tầng: Resources  HTML client, JSP/Servlets, JDBC Browser Web Server EJB Server  Các ứng dụng J2EE 3 tầng:  EJB standalone applications, EJB, JDBC/Connector Các ứng dụng B2B Enterprise Stand-alone   Từ J2EE platform đến J2EE platform thông qua trao đổi các JMS hoặc các thông điệp XML Chọn loại nào?  Phụ thuộc vào 1 số yếu tố 5. J2EE 1.4  Requirements của ứng dụng Standard Implementation,  Tầng EJB có sẵn có không Compatibility Suite, Brand  Các tài nguyên cho developer có sẵn có không 12
  13. 8/28/2011 5.1. Standard Implementation 5.2. Compatibility Test Suite (CTS)  Cài đặt cho J2EE 1.4: Sun Java Application  Nhiệm vụ lớn nhất của công nghệ Java™ Server Platform Edition 8 technology:  Cài đặt theo đúng chuẩn đề ra  Write Once, Run Anywhere™  Miễn phí phát triển và triển khai  Ứng dụng Java chạy trên bất kỳ máy ảo java nào  Được cập nhật liên tục  Ứng dụng J2EE chạy được trên J2EE platform bất kỳ   Cần được test J2EE Application Verification Kit (J2EE 5.3. Các sản phẩm cho J2EE Platform AVK) (Brand)  Cách thức test tính portability của ứng dụng  ATG  iPlanet J2EE?  Bea Systems  Macromedia  Sử dụng J2EE RI 1.3.1 và J2EE Application  Borland  NEC Verification Kit (J2EE AVK)  Computer  Oracle  Cách thức test: Associates  Pramati  Static verification  Fujitsu  SilverStream  Dynamic verification  Hitachi  Sybase  Lấy về các kết quả test, kiểm tra đã thỏa  HP  Talarian mãn tất cả các yêu chí chưa.  IBM  Trifork  IONA Đầu tư đảm bảo tính compatibility của Các sản phẩm cho J2EE Platform J2EE  Tools  Sun đầu tư xây dựng các bộ compatibility  IDE’s: Borland JBuilder Enterprise, WebGain test kit Visual Cafe’, IBM Visual Age for Java™, Forte™  Kiểm tra trình độ kỹ sư hàng năm để đảm for Java™, Oracle JDeveloper, Macromedia Kawa bảo có sản phẩm chất lượng  Modeling, Performance, Testing, etc.  Đầu tư vào Testing luôn cao hơn đầu tư vào  Enterprise Integration: Connectors, đặc tả (specification), thực thi Java Message Service (JMS) API, XML (implementation), thương mại (business)  Components  > 10 million $ được đầu tư trong J2EE  Frameworks platform compatibility  Applications 13
  14. 8/28/2011 6. J2EE Blueprint  Các hướng dẫn thực hành, mẫu thiết kế, các nguyên lý thiết kế MVC pattern 6. J2EE Blueprint   Blueprint bao trùm tất cả các tầng  Client tier  Web tier  Business logic (EJB) tier  Database access tier  Có code mẫu/ví dụ đi kèm với J2EE 1.4 SDK  Java Pet Store, Adventure builder Tại sao lựa chọn J2EE cho Web Services?  Web services đơn thuần là 1 trong nhiều kênh dịch vụ của J2EE (để khai thác tầng 7. J2EE và Web Services? business logic)  Không cần thay đổi kiến trúc  Dễ dàng chuyển đổi các J2EE components đã có thành Web services  Rất nhiều ích lợi của J2EE được giữ lại trong Web services  Portability, Scalability, Reliability  Không phụ thuộc vào vendor riêng lẻ nào Mô hình Web services trên J2EE Hỗ trợ hiện tại của J2EE cho Web services  Java APIs cho Web Services đang phát triển rất J2EE Server JSP™/ JavaServlet API / EJB™ Rich Clients nhanh XMLP/SOAP JSP  Web services dựa trên WUST (WSDL, UDDI, SOAP) được JDBC DBMS hỗ trợ rất tốt MIDP XMLP/SOAP  Các tầng Web services tiếp theo đang được phát triển Devices XHTML/WML JMS Connectors  Đã cung cấp các Tools để triển khai các J2EE components thành Web services Existing EJB Apps HTML/XML  J2EE đã định nghĩa framework đầy đủ cho Web Browsers XMLP/SOAP Services (J2EE 1.4, Web services for J2EE) Services 14
  15. 8/28/2011 Các mục tiêu thiết kế của J2EE 1.4 Web Services Framework J2EE 1.4 Web Services Framework  Đảm bảo tính Portability cho các Web  J2EE 1.4 (JSR 151) services component  Web services for J2EE (JSR 109)  Trên các vendor platform khác nhau  JAX-RPC (JSR 101) Trên các operational environment khác nhau JAXR (Java API for XML Registries)    Sử dụng các mô hình lập trình J2EE đã có để  SAAJ (SOAP with Attachments API for Java) thực thi/cài đặt các service  EJB 2.1  Dễ phát triển và triển khai (deploy)  Java APIs mức cao  Sử dụng mô hình triển khai đã có Bước 1: Cho Beginners & Intermediate J2EE Programmers  Tham gia khóa học đầy đủ  Sử dụng J2EE IDE, tùy lựa chọn 8. Các bước nghiên cứu J2EE?  Thử các IDE mã nguồn mở  NetBeans IDE (netbeans.org)  Hỗ trợ J2EE rất tốt  Có rất nhiều tutorials  Eclipse Bước 2: Cho Advanced J2EE Programmers  Tìm hiểu các giải pháp mã nguồn mở  Spring framework (for light-weight framework)  Hibernate (for O/R mapping) Tổng kết  JDO (for transparent persistence)  Struts, WebWork, Tapestry (for Web-tier frameworks)  JUnit (for unit testing)  Log4j (for logging)  ... 15
  16. 8/28/2011 Tổng kết Resources  J2EE là nền tảng để phát triển và triển khai  J2EE Home page các ứng dụng doanh nghiệp hướng thành  java.sun.com/j2ee phần, n-tier, web-based, transactional  J2EE 1.4 SDK java.sun.com/j2ee/1.4/download.html#appserv J2EE là kiến trúc xây dựng theo chuẩn   J2EE 1.4 Tutorial (standard-based architecture)   java.sun.com/j2ee/1.4/download.html#appserv  J2EE tất cả vì cộng đồng  J2EE Blueprints  J2EE phát triển theo yêu cầu của thực tế  java.sun.com/blueprints/enterprise/index.html  NetBeans IDE Homesite  http://www.netbeans.org 16
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
5=>2