2012-01-09 29 views
6

Tôi mới sử dụng Java EE và thấy rằng các EJB còn sống và tốt trong cộng đồng Java/Oracle thuần túy. Tuy nhiên, tất cả mọi người trong công việc đều tỏ vẻ ghê tởm trên khuôn mặt của họ bất cứ khi nào người khác thậm chí còn viết cụm từ "EJB", điều đó khiến tôi nghĩ rằng họ đang trở nên bị tuyệt chủng hoặc bị thay thế bởi các đội phát triển hiện đại với một số công nghệ phần mềm trung gian khác.Các EJB và Phát triển Java Hiện đại

Giống như JSP đã nhường chỗ cho các công nghệ chế độ xem trung tâm JSF, điều này có đúng với EJB không? Dù bằng cách nào, một số lựa chọn thay thế phổ biến cho EJB là gì và chúng khác nhau như thế nào? Lợi ích hoặc tính năng nào mà họ cung cấp qua EJB?

+1

Các câu hỏi tương tự đã được hỏi ở đây trước đây. Hãy xem các câu hỏi sau - [what-use-are-ejbs] (http://stackoverflow.com/questions/5579890/what-use-are-ejbs), [trong-tình huống-được-ejbs-được sử dụng] (http://stackoverflow.com/questions/4773927/in-what-situations-are-ejbs-used-are-they-required-in-websites-web-applicatio) và [spring-vs-ejb] (http: //stackoverflow.com/questions/1779169/spring-vs-ejb-can-spring-replace-ejb) – CoolBeans

Trả lời

9

Phiên bản đầu tiên của EJB được giới thiệu vào cuối những năm 1990.

Cái nhìn ghê tởm trên đồng nghiệp của bạn phải đối mặt khi EJB được đề cập có thể là hậu quả của các mẫu sử dụng rất phức tạp và rắc rối của hai phiên bản đầu tiên của EJB (ví dụ: mô tả triển khai xml phức tạp).

3.03.1 là những cải tiến chính về tính dễ sử dụng.

Một được ưa thích khác là Spring framework + Hibernate/JPA

2

Khi chúng được giới thiệu, EJB là giải pháp để tìm kiếm sự cố và một giải pháp cao cấp ở đó.

EJB được cho là cung cấp cách để chương trình xác định đơn vị công việc sao cho máy chủ ứng dụng "chứa" EJB sẽ xử lý tất cả các bit khó hơn, như cân bằng tải, vị trí, lỗi, bảo mật, Trong thực tế, khi tất cả các nhà phát triển đều phát triển ngôn ngữ mới, việc triển khai đã không thực sự sẵn sàng cho tất cả các công việc nặng nhọc, họ có thể có các tính năng nhưng cấu hình và triển khai chắc chắn là một cơn ác mộng. Nó không giúp cho thông số EJB ở thông lượng trong suốt thời gian và hiệu suất của ứng cử viên trường hợp sử dụng chính, Entity Bean, đã thiếu nghiêm trọng.

Trong trường hợp của mình, chúng tôi đã phát triển các EJB để xử lý những gì luôn là quy trình xử lý hàng loạt - mỗi ngày một lần có một bộ giao dịch, thực hiện một số công cụ cơ sở dữ liệu, sau đó gửi đầu ra cho các bên liên quan khác nhau và tạo báo cáo. Chúng tôi không cần luồng hoặc cân bằng tải, chưa kể đến hầu hết các tính năng EJB khác. Thứ được sử dụng nhiều nhất là cách tiếp cận trung tâm trên web đối với các ứng dụng. Các ứng dụng whold có thể đã được thực hiện với một số công việc hàng loạt và một vài trang web.

+0

Tôi bằng cách nào đó nhớ mục đích ban đầu đã nêu của EJB là cung cấp một mô hình thành phần phân tán, với ý tưởng rằng bạn có thể mua các thành phần trên thị trường từ các nhà cung cấp. Ví dụ. thành phần tính thuế.Ý tưởng này không bao giờ cất cánh, nhưng có vẻ như nhiều người không đồng ý trong công nghệ ban đầu, vì vậy một “người triển khai bean” có thể tùy chỉnh bean (nguồn đóng) để làm việc trong môi trường đích vẫn gợi ý cho ý tưởng này. –

14

đồng nghiệp của bạn có thể đã thấy chỉ EJB2 trở về trước, đó thực sự là những con thú xấu xa mà rất ít người rất thích sử dụng.

Trong EJB2, Đối với khung công tác đơn giản nhất, các giao diện phải được triển khai, với các phương pháp vòng đời điên mà nhà phát triển yêu cầu cung cấp, nhưng không liên quan gì đến mục đích (doanh nghiệp) của nhà phát triển. Một vài hiện vật như vậy phải được cung cấp.

Ngoài ra, mỗi bean phải được giữ đồng bộ với các mục nhập trong bộ mô tả triển khai rất chi tiết và khó đọc (tệp XML). Như thể đó không phải là xúc phạm đủ để một nhà phát triển, công cụ đặc biệt đã được sử dụng để 'tăng cường' đậu và để tạo ra các lớp proxy, bộ xương và sơ khai. Những điều OO phổ biến như kế thừa không được hỗ trợ. Có một loại tiêm, nhưng một loại thuốc kỳ lạ đã tồn tại với việc đưa mọi thứ vào một loại bản đồ (thư mục thực sự) liên kết với mỗi loại đậu.

Mô hình EJB 1 ban đầu thực thi tất cả giao tiếp là từ xa và tất cả các đối tượng được phân phối (EJB ban đầu chỉ được xem là công nghệ truy cập từ xa).Vì vậy, để có được những lợi ích của EJB bạn cũng bị buộc phải làm cho kiến ​​trúc của bạn được phân phối, ngay cả khi điều này là hoàn toàn không cần thiết.

Có lẽ sự xúc phạm lớn nhất của tất cả là khái niệm về Entity Bean (không bị nhầm lẫn với các thực thể JPA). Những lỗi lầm với loại đậu này thật tuyệt vời đến nỗi ngay cả những người ủng hộ EJB lớn nhất vào thời điểm đó cũng không thể giới thiệu nó với bất cứ ai.

Sau đó, như là một vấn đề rất thực tế, khả năng tương thích giữa việc triển khai EJB không phải là rất tốt để nói rằng ít nhất. Đặc biệt là Entity Beans yêu cầu số lượng lớn các cấu hình cụ thể của nhà cung cấp.

Để hoàn thành tất cả, việc triển khai EJB yêu cầu các máy chủ ứng dụng nặng (về kích thước được cài đặt và bộ nhớ bắt buộc), nguồn đóng và khá đắt tiền (do đó ngăn chặn các công ty nâng cấp hoặc chuyển đổi) trở lại). Tôi không thể nhớ nhiều người viết blog về công nghệ vào thời điểm đó, và theo như tôi nhớ thì công nghệ này chủ yếu là do đội ngũ bán hàng cung cấp cho các nhà quản lý của các tập đoàn lớn.

Thật không ngạc nhiên khi công nghệ này không thực sự được yêu thích bởi nhà phát triển trung bình.

Mặt trời vừa kịp nhận thức được rằng công nghệ đang đi theo hướng hoàn toàn sai và quay 180 ° và bắt đầu nỗ lực tái cơ cấu lớn.

Kết quả là, EJB 3 (2006) là một cách tiếp cận rất lành mạnh và nhẹ nhàng. Không có giao diện khung cần thiết để thực thi, không có XML yêu cầu, chỉ có một bean duy nhất phải được mã hóa (chỉ là POJO đơn giản), có các mặc định sane ở mọi nơi (quy ước trên cấu hình), không có công cụ đặc biệt nào được yêu cầu (javac bình thường sẽ làm), và sử dụng đậu đơn giản tại địa phương thực sự là trường hợp phổ biến hiện nay.

Thực thể Đậu bị thiếu sót đến mức chúng bị rơi hoàn toàn và được thay thế bằng phương pháp tiếp cận được san bằng hơn nhiều bởi TopLink và Hibernate trong số những người khác.

Kết hợp tính năng này với nhiều ứng dụng miễn phí, nhẹ và mã nguồn mở, kết hợp với nhiều blogger nổi tiếng ủng hộ công nghệ (ví dụ: Adam Bien, Rezha Rahman, Gavin King) và sự nổi tiếng trở nên dễ hiểu .

Đã có một số hướng dẫn di chuyển "Spring to Java EE" được xuất bản gần đây và số phiếu bầu rất thuận lợi tại các trang tin tức khác nhau với nhiều người ủng hộ EJB như một công nghệ rất tốt . Điều này sẽ không thể tưởng tượng được nửa thập kỷ trước (khi EJB 3 vừa được phát hành và vẫn chưa được biết đến nhiều).

Cách thay thế phổ biến nhất cho EJB là Spring Core (Spring Beans). Tại thời điểm này tôi nghĩ rằng không có lợi thế lớn nhất định mùa xuân có hơn EJB và cách khác xung quanh. Hai công nghệ này rất giống nhau. Spring cung cấp một số tiện ích tiện lợi hơn, trong khi EJB là khái niệm nhẹ hơn (không có XML). Cả hai lợi thế là hơi chủ quan. Họ thường được lấy cảm hứng từ chức năng của nhau và ai là người đi trước thường phụ thuộc vào công nghệ nào cuối cùng đã phát hành một phiên bản mới lớn.

Các vấn đề liên quan