Много съм объркан с различните рамки на Java. Искам да създам проект за java сървър, за да предложа някаква уеб услуга Restful, но наистина не знам коя рамка да избера. Каква е разликата между JSF, EJB, Hibernate и Spring? Моля, помогнете ми да ги разбера по-добре.
Каква е разликата между EJB, хибернация, пролет и JSF? [затворено]
Отговори (4)
Това са рамки за различни слоеве.
JSF е за слоя изглед (уеб), това е компонентно ориентирана рамка (всяка част от страница е компонент, има състояние) като Wicket или Tapestry и за разлика от рамки за действие като Spring MVC, Struts или райета
Книги: Core JavaServer Faces (3-то издание)
Уроци: CoreServlets.comEJB 3.x е контейнер, който е част от стека JavaEE. Той прави неща като инжектиране на зависимости и управление на жизнения цикъл на боб. Обикновено се нуждаете от пълен JavaEE сървър за приложения за EJB3
Уроци: Урок за JavaEE 6: EJB
Книги: EJB 3 в действиеSpring също е контейнер, но Spring може да работи във всеки Java код (прост основен клас, аплет, уеб приложение или JavaEE корпоративно приложение). Spring може да прави почти всичко, което EJB може да прави и много повече, но бих казал, че е най-известен с инжектиране на зависимости и ненатрапчиво управление на транзакции
Онлайн справочници (отлични)
Книги: Не можах да намеря добра книга на английски за Spring 3.x, въпреки че няколко са в процес на създаванеHibernate беше първият голям ORM (Object relational mapper) на платформата Java и като такава силно вдъхнови JPA (който е част от стандарта EJB3, но може да се използва без EJB контейнер). Бих предложил да кодирате срещу JPA и да използвате само хибернация като доставчик, по този начин можете лесно да превключите към EclipseLink и т.н.
Книги: Pro JPA 2: Овладяване на Java™ Persistence API (не е специфично за хибернация),
Постоянство на Java с хибернация (остарява малко)
- JSF: GUI рамка - нямате нужда от това, ако искате само да внедрите бекенд
- EJB: стандарт за разпределени компоненти, преди беше ужасно сложен, но версия 3 на стандарта е доста лесна за използване. Това може да е част от вашето решение.
- Hibernate: Обектно-релационна рамка за картографиране. Той послужи като вдъхновение за стандарта JPA (Java Persistence Architecture), който сега се поддържа както от Hibernate, така и от EJB.
- Spring: рамка за приложения, която прави всякакви неща, сред които инжектиране на зависимости, уеб GUI и AOP.
Ако обаче искате да правите REST, най-важният стандарт за вас е JAX-RS. Можете да го използвате или в рамките на Spring, или с EJB. За постоянство можете да използвате Hibernate или внедряването на JPA на EJB контейнер като Glassfish
EJB е Enterprise Java Bean – вижте връзката за описание, но по същество това е Java „по подразбиране“ начин за писане на корпоративно приложение.
Hibernate е ORM рамка; начин за картографиране на обектите/класовете във вашето приложение към таблиците на базата данни. Това е свързано с това как запазвате данните си в база данни.
Spring е контейнер за IoC/Dependency Injection, който предоставя много полезни и добре тествани абстракции, за да улесни живота ви. Spring е нещо като своя собствена рамка за приложения.
JSF е Java Server Faces, технология за преглед на Java уеб приложения.
Бихте използвали или EJB, ИЛИ Spring. Можете да използвате Hibernate като ваше изпълнение на постоянство, ако желаете, с което и да е; не е нужно да правите това. За уеб услугите на RESTFul всъщност не се нуждаете от JSF.
Хората са много доволни от пролетта - препоръчвам да използвате това...
- JSF - Лица на Java сървър -> Уеб потребителски интерфейс
- EJB - Enterprise Java Beans -> Компоненти, които са със състояние (ориентирани към сесия) или без състояние (услуги), управлявани от съобщения (асинхронни)
- Hibernate - Persistence Service като други реализации на JPA (Eclipselink, OpenJPA или Toplink)
- Spring е друг свят без EJB, който може да интегрира други технологии за изглед. Доста е гъвкав.
Трябва да решите между JEE5/6 и пролетта. Вземете червеното или синьото хапче, не използвайте и двете.