Chính xác thì Java EE là gì?


162

Tôi đã làm Java SE được vài năm và chuyển sang Java EE. Tuy nhiên, tôi gặp một số khó khăn khi hiểu một số khía cạnh của Java EE.

  1. Có phải Java EE chỉ là một đặc tả? Ý tôi là: EJB Java EE?

  2. EJB / Spring có triển khai Java EE khác nhau không?

Tôi rất tiếc khi hỏi nhưng tôi có một số khó khăn để hiểu Java EE là gì.

Ai đó có thể giải thích Java EE là gì không? Còn EJB?



2
Bạn nên cắt câu hỏi này thành hai câu hỏi, một câu hỏi trùng lặp, câu hỏi còn lại tôi nghĩ là không được trả lời trong liên kết đó.
Kheldar

2
Trên thực tế, bạn đã đọc wiki thẻ [java-ee] chưa?
Paŭlo Ebermann


cũng: ai-
exec

Câu trả lời:


187

Có phải Java EE chỉ là một đặc tả? Ý tôi là: EJB Java EE?

Java EE thực sự là một đặc tả trừu tượng . Bất kỳ ai cũng sẵn sàng để phát triển và cung cấp một triển khai làm việc của đặc tả. Các triển khai cụ thể là các máy chủ ứng dụng, như WildFly , TomEE , GlassFish , Liberty , WebLogic , v.v. Ngoài ra còn có các thùng chứa servlet chỉ thực hiện phần JSP / Servlet của API Java EE khổng lồ, như Tomcat , Jetty , Vân vân.

Chúng tôi, các nhà phát triển Java EE, nên viết mã sử dụng các đặc điểm kỹ thuật (ví dụ: nhập khẩu chỉ javax.* lớp trong mã của chúng tôi thay vì các lớp học cụ thể thực hiện như org.jboss.wildfly.*, com.sun.glassfish.*, vv) và sau đó chúng tôi sẽ có thể chạy mã của chúng tôi trên bất kỳ thực hiện (do đó, trên bất kỳ máy chủ ứng dụng). Nếu bạn quen thuộc với JDBC, về cơ bản, đó là khái niệm giống như cách trình điều khiển JDBC hoạt động. Xem thêm áo dài Nói một cách đơn giản nhất, nhà máy là gì?

Các tải Java EE SDK từ Oracle.com chứa cơ bản máy chủ GlassFish cùng một loạt các tài liệu và các ví dụ và tùy chọn cũng NetBeans IDE. Bạn không cần nó nếu bạn muốn một máy chủ và / hoặc IDE khác.

EJB là một phần của đặc tả Java EE. Hãy nhìn xem, đó là trong API Java EE . Các máy chủ ứng dụng Java EE chính thức hỗ trợ nó ra khỏi hộp, nhưng các thùng chứa JSP / Servlet đơn giản thì không.

Xem thêm:


EJB / Spring có triển khai Java EE khác nhau không?

Không, như đã nói, EJB là một phần của Java EE. Spring là một khung độc lập thay thế và cải thiện nhiều phần của Java EE. Spring không nhất thiết yêu cầu Java EE để chạy. Một thùng chứa servlet xương trần như Tomcat là đủ. Nói một cách đơn giản, Spring là đối thủ cạnh tranh của Java EE. Ví dụ: "Spring" (độc lập) cạnh tranh EJB / JTA, Spring MVC cạnh tranh với JSF / JAX-RS, Spring DI / IoC / AOP cạnh tranh CDI, Spring Security cạnh tranh JAAS / JASPIC, v.v.

Quay trở lại thời J2EE / EJB2 cũ, API EJB2 rất tệ để thực hiện và duy trì. Mùa xuân sau đó là một sự thay thế tốt hơn nhiều so với EJB2. Nhưng kể từ EJB3 (Java EE 5), API EJB đã được cải thiện rất nhiều dựa trên các bài học rút ra từ Spring. Kể từ CDI (Java EE 6), thực sự không có lý do để xem xét lại một khung công tác khác như Spring để giúp các nhà phát triển dễ dàng hơn trong việc phát triển các lớp dịch vụ khác.

Chỉ khi bạn đang sử dụng một thùng chứa servlet xương cốt như Tomcat và không thể chuyển sang máy chủ Java EE, thì Spring mới hấp dẫn hơn khi cài đặt Spring trên Tomcat dễ dàng hơn. Không thể cài đặt, ví dụ như bộ chứa EJB trên Tomcat mà không sửa đổi máy chủ, về cơ bản bạn sẽ phát minh lại TomEE.

Xem thêm:


2
Vì vậy, Java EE có thể được nói là xác định hỗ trợ nào nên tồn tại cho một ứng dụng JEE điển hình để chạy?
James P.

4
@James: Vâng. Khá nhiều thứ trong API Java EE là trừu tượng. Java SE API cũng có một số phần trừu tượng, ví dụ JDBC, JAXP, JAXB, v.v.
BalusC

3
"Không thực sự có lý do để xem xét lại một khuôn khổ khác như Spring để làm cho các nhà phát triển dễ dàng hơn." -> Thông tin thực sự có giá trị.
jacktrades

@BalusC: Xin chào, Là liên kết chính thức của Sun Java EE .... bị hỏng, nếu bạn cung cấp một liên kết tương tự như vậy, nó sẽ hữu ích cho ai đó.
Abdul Rahman

Để chạy khung công tác Spring hoàn chỉnh, bộ chứa Servlet sẽ đủ, bộ chứa Servlet là [máy chủ web + bộ chứa web (thực hiện servlet api)] khi chạy Java EE, bạn cần máy chủ ứng dụng như Glassfish. Container Servlet sẽ không đủ. Servlet container là một tập hợp con của máy chủ ứng dụng. Làm thế nào để tôi hiểu điều này?
trao đổi quá mức

11

Java Enterprise Edition (Java EE) là một đặc tả ô tham chiếu một số đặc tả chi tiết khác, trong đó Enterprise JavaBeans (EJB) là một trong những đặc tả quan trọng hơn.

Đọc này - nó giải thích sự khác biệt giữa Java EE và Spring

Cảm ơn...


4
  • Nguồn - Nền tảng Java 2, Phiên bản doanh nghiệp (J2EE) xác định tiêu chuẩn để phát triển các ứng dụng doanh nghiệp đa nhiệm dựa trên thành phần. J2EE đơn giản hóa việc xây dựng các ứng dụng doanh nghiệp có thể di động, có thể mở rộng và tích hợp dễ dàng với các ứng dụng và dữ liệu cũ.

  • Nguồn - Công nghệ JavaBeans (EJB) là kiến ​​trúc thành phần phía máy chủ cho Nền tảng Java, Phiên bản doanh nghiệp (Java EE). Công nghệ EJB cho phép phát triển nhanh chóng và đơn giản hóa các ứng dụng phân tán, giao dịch, bảo mật và di động dựa trên công nghệ Java.

  • Có phải Java EE chỉ là một đặc tả? Ý tôi là: EJB Java EE?

    • Java EE là một đặc điểm kỹ thuật.

    • EJB là kiến ​​trúc thành phần phía máy chủ cho Java EE

  • EJB / Spring có triển khai Java EE khác nhau không?

    • Cả EJB và Spring đều là các khung khác nhau theo Java EE.

6
Có lẽ không hữu ích lắm khi trích dẫn văn bản cổ (2005) từ một phiên bản cổ của đặc tả (J2EE). OP đặc biệt yêu cầu Java EE, hiện thân của J2EE.
Arjan Tijms

-5

Nói một cách đơn giản - JavaEE là một nền tảng.

Nó được tạo thành từ nhiều thông số kỹ thuật chỉ là API. Việc triển khai cụ thể cụ thể của các API này được gọi là 'Triển khai tham chiếu'

  1. EJB chỉ là một đặc điểm kỹ thuật trong nền tảng JavaEE
  2. Không, Spring là một khung ứng dụng có thể cho phép bạn / có hỗ trợ cho bạn phát triển các ứng dụng JavaEE

EJB là Đậu Java doanh nghiệp


4
Câu trả lời này không thêm bất cứ điều gì vào câu trả lời trước. Hơn nữa, nó không chính xác: chỉ có một triển khai cụ thể là Tham chiếu, những cái khác thì không. Một điều nhỏ: Spring tích hợp với JavaEE, nhưng có thể hoạt động mà không cần nó tốt.
Tair

@tair Có chỉ có 1 triển khai cụ thể được coi là 'Tham chiếu', ví dụ JPA có nhiều triển khai nhưng chỉ có EclipseLink là RI. Khi tôi đề cập đến RI, tôi có ý nghĩa trong các API khác nhau. Tôi nghĩ rằng bạn đã hiểu nhầm câu trả lời của tôi ở trên. Ngoài ra, vâng, Spring tích hợp với JavaEE, đó là những gì tôi đã đề cập ở trên.
triển phần mềm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.