spring vs jee

2

Z tego co czytam tutaj na forum to widzę, ze Spring jest alternatywą dla JEE. Czy dla projektu ma znaczenie, która technologia zostałaby wybrana przez programistów w firmie? Ciekawi mnie to, ponieważ chciałbym dowiedzieć się co charakteryzuje projekty robione przez Spring (są np. szybciej robione, ale trudniejsze do customizacji?). Chyba jakieś projektowe różnice muszą mieć te frameworki skoro oba frameworki są w grze. Co konkretnie przeważnie przemawia, żeby wybrać konkretny framework?

1

JEE jest to standard a jako standard rozwija się wolniej niz konkurencja (Spring) który w większości przypadków pozbywa się boilerplate'u JEE (JMSTemplate,RestTemplate, JDBC etc.) oraz dodaje szereg nowych bibliotek ułatwiających korzystanie z niestandardowych rozwiązań, np. NoSQL ( Spring Data Cassandra, Spring Data Neo4j etc. ) czy API do Sociali. Spring wspiera JSR 330 czyli adnotacje CDI( @Named, @Inject etc.) i w większości ładnie się integruje ze standardami JEE. Generalnie w mojej karierze korzystanie z JEE to była w większości nie znajomość zespołu ze Springiem. Jeśli team znał Springa i JEE to zawsze był wybierany Spring, ale również ze względu na jego podprojekty typu Spring Data, Spring Integration, Spring Boot etc..

Generalnie Spring ma większe możliwości, rozwija się szybciej niż standard, wsparcie Social Network (Facebook, Linkedin etc.), wsparcie dla JPA, REST, NoSql, JMS, Integration, + Spring Security(vs Apache Shiro/JAAS) + Spring Boot.

Jedyny plus to chyba EJB w pewnych przypadkach i może JSF. Ale mamy też Vaadina zamiast JSF'a i system szablononów np. Thymeleaf dla Springa

0

Nie byłoby lepiej gdyby przepisali Springa na CDI? :P Byłby to wtedy taki zbiór rozszerzeń do standardowej JEE

1

JEE to tylko specyfikacja. Wiele serwerów aplikacyjnych dysponuje możliwościami, którym brak standardowemu Springowi np. taki WebLogic (Fusion Apps). Spring intensywnie wykorzystuje JEE np. w Bean Validation, JPA, Servlety/Filtry, JMS.

Spring jest innowacyjny. JEE standaryzuje to co już jest i jest dobre. Np. do JEE 7 trafiły operacje Batch znane jako Spring Batch.

Korzystając z JEE można korzystać z niestandardowych bibliotek. Np. ja w projekcie JEE korzystałem ze Spring Security w celu integracji z AD. Można Spotkać projekty wykorzystujące jednocześnie JEE i Springa. Czasem jest to uzasadnione.

Wielką siłą Springa są biblioteki dodatkowe, których nie ma w standardzie i nigdy nie będzie. Nie ma jednoznacznej odpowiedzi, która technologia jest lepsza. Ja bym to określił jako współkonkurencja. Wybór technologii zależy od projektu, czasem się miesza. Naucz się jednego i drugiego.

Najczęściej firmy decydujące się na JEE chcą mieć wsparcie i sprawdzone i dobrze wytestowane zabawki od gigantów jak Oracle czy IBM. I różne bajery załączone do ich serwerów aplikacyjnych jak np. szyny integracyjne czy transakcyjne message brokery do zastosowań krytycznych. :) Z drugiej strony możesz użyć ich z poziomu Springa korzystając z płatnego serwera aplikacyjnego. Są różne drogi.

1

W rzeczywistości często korzyta się po trochu z obu. Bo wiele projektów pisanych w Springu mimo wszystko korzysta np. z JPA, JMS, JAX-WS czy JAXB.

1

czy w JEE jest jakis substytut do Spring Data albo jaks podobna biblioteka nie oparta na springu?

znalazlem:
http://ctpconsulting.github.io/query/1.0.0.Alpha5/index.html
http://deltaspike.apache.org/documentation/data.html

0

@margor90 czyli uzywasz po prostu entity managera?

0

@margor90
Thx. Tak wlasnie myslalem.

A wracajac do spring data to chyba to delta spike jest czyms co warto sprawdzic jesli w ogole.

Ja za chwile bede uzywal wildfly a to delta spike jest wymienione, ze z nim wspolpracuje .

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0