JavaRush /Blog Java /Random-PL /Co musisz wiedzieć o Springu: historia, kluczowe moduły, ...

Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE

Opublikowano w grupie Random-PL
Cześć! W tej chwili najpopularniejszym kierunkiem rozwoju programisty ze znajomością języka Java jest tworzenie stron internetowych. Oczywiście dla tej specjalności istnieje lista technologii wymaganych do studiowania. Jednym z głównych jest Wiosna . Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 1Możesz argumentować, że zamiast tego możesz nauczyć się języka Java EE . To oczywiście prawda, jednak obecnie zdecydowana większość nowych projektów wykorzystuje Spring , co uczyniło go praktycznie domyślną, obowiązkową technologią dla programisty Java. A jeśli chcesz nadążać za potrzebami rynku, będziesz musiał go przestudiować. Dziś chciałbym porozmawiać o Springu , a mianowicie nieco rozszerzyć Waszą wizję na ten temat: opowiedzieć o historii jego powstania, kluczowych różnicach w stosunku do stosu Java EE oraz przedstawić krótki przegląd kluczowych komponentów stosu Spring . Zacznijmy! Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 2

1. Jak i kiedy pojawiła się wiosna i w co ewoluowała z biegiem czasu

Wszystko zaczęło się w październiku 2002 roku , kiedy Rod Johnson napisał książkę „Expert One-onOne J2EE Design and Development”: Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 3W tej książce, opublikowanej przez Wrox , autor opisuje stan rozwoju Java dla przedsiębiorstw w tamtym czasie i wskazuje szereg wady środowisk Java EE i komponentowych (Enterprise Java Bean)EJB . Jednocześnie Rod Johnson proponuje prostsze rozwiązanie oparte na zwykłych klasach Java (POJO - zwykłe stare obiekty Java) i wstrzykiwaniu zależności. W książce wyjaśnia, w jaki sposób można stworzyć wysokiej jakości, skalowalną aplikację do rezerwacji online bez użycia EJB. Te. jasno pokazał, jak usunąć złożoność tworzenia aplikacji i umożliwić użycie prostych JavaBeans, aby osiągnąć wszystko, co wcześniej było możliwe tylko przy użyciu EJB. Jednak zakres Springa nie ogranicza się do tworzenia komponentów oprogramowania działających po stronie serwera. Każda aplikacja Java może korzystać z zalet frameworka pod względem prostoty, testowalności i luźnego powiązania. Jego projekt deweloperski J2EE stał się natychmiastowym hitem. Duża część kodu aplikacji, udostępnionego bezpłatnie w ramach książki, nadawała się do ponownego wykorzystania i wielu programistów wkrótce zaczęło używać go w swoich projektach. Wrox miał stronę internetową książki z kodem źródłowym i poprawkami. Utworzyli także forum internetowe poświęcone książce. W lutym 2003 programiści Jürgen Heller i Jann Karoff przekonali Roda Johnsona do stworzenia projektu open source opartego na kodzie frameworka. Od tego momentu Rod, Jurgen i Yann rozpoczęli współpracę, aby stworzyć coś zupełnie nowego. Tak naprawdę to Yann Karoff wymyślił nazwę „Wiosna” dla nowego frameworka. Miało to na myśli to, że wiosna jest jak wiosna: nowy początek po „zimie” tradycyjnego J2EE.
  • W czerwcu 2003 roku wydano Spring 0.9 na licencji Apache 2.0.
  • Wiosna 1.0 została wydana w marcu 2004 roku. Co ciekawe, jeszcze przed wydaniem Springa 1.0, poprzednia wersja 0.9 została bardzo dobrze przyjęta i została powszechnie przyjęta.
  • W sierpniu 2004 roku Rod Johnson, Jürgen Heller, Keith Donald i Colin Sampaleanu byli współzałożycielami Interface21 , firmy konsultingowej, szkoleniowej i wspierającej Spring.
  • Październik 2006: wypuszczono wersję Spring 2.0, która upraszcza pliki konfiguracyjne XML.
  • Wiosna 2.5, wydana w listopadzie 2007, wprowadziła konfiguracje adnotacji.
  • Spring 3.2, wydany w grudniu 2012, wprowadził konfigurację Java, obsługiwał Java 7, Hibernate 4, Servlet 3.0, a także wymagał co najmniej Java 1.5.
  • Yann Karoff opuścił zespół wcześnie. Rod Johnson opuścił wiosenny zespół w 2012 roku. Jürgen Heller jest nadal aktywnym członkiem zespołu programistów Springa.
  • Wiosna 4.0 wydana w 2014 roku dodała obsługę Java 8.
  • Również w 2014 roku zaprezentowano światu Spring Boot.
  • Wiosna 5.0 została wydana w 2017 roku. Podobnie jak Spring Boot 2.x, który obsługuje Spring 5.
  • Właściwie w ten sposób nasz ulubiony framework stał się tym, co znamy teraz.

2. Wiosna kontra Java EE

Dokonajmy małego porównania dwóch kluczowych stosów Java dla twórców stron internetowych: Spring i Java EE. Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 4
JavaEE
Zalety Wady
  • Aplikacje napisane w Java EE uznawane są za bardziej niezawodne, bezpieczne i skalowalne
  • Java EE to zatwierdzony w branży standard API
  • Bazuje głównie na adnotacjach i CDI (wstrzykiwaniu kontekstu i zależności), podobnie jak Spring
  • Wdrożenie w oparciu o kontenery EJB i POJO
  • Złożone aplikacje z dużą liczbą transakcji są obsługiwane przez JEE bardzo dobrze
  • Pomyślnie stosowany w skalowalnych aplikacjach monolitycznych
  • Java EE ma swój własny język OOP zawierający specyficzny styl i składnię
  • Bardzo złożone środowisko tworzenia aplikacji, które jest trudne do zrozumienia dla początkujących (a czasem także dla starszych osób)
  • Ostateczny koszt projektu, obejmujący projektowanie, wdrożenie i rozwój aplikacji, może być zaporowy
Java EE, licencjonowana przez firmę Oracle, jest przeznaczona dla organizacji i firm, które wymagają szeroko adaptowalnego, dystrybuowalnego środowiska do tworzenia aplikacji przeznaczonych dla rynku masowego. Podobnie jak Spring, Java EE zawiera dodatkowe biblioteki dostępu do baz danych (JDBC, JPA), zdalnego wywoływania inżynierii (RMI), informacji (JMS), administrowania siecią, przetwarzania XML i charakteryzuje standardowe interfejsy API dla korporacyjnych komponentów JavaBeans, portletów, serwletów, stron serwera Java, itp. Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 5Podstawowym celem Java EE jest rozwikłanie głównych problemów napotykanych przez programistów w związku z tworzeniem bieżących aplikacji przy użyciu różnych interfejsów API. Jednocześnie rozwój w Java EE charakteryzuje się wysokim poziomem złożoności, co stawia poprzeczkę zbyt wysoko nie tylko dla początkujących. Doświadczonym specjalistom może być trudno zrozumieć już napisaną funkcjonalność, dlatego rozwój w Java EE trwa dłużej i odpowiednio jest droższy. O Java EE w skrócie możemy powiedzieć tak: Złożone, ale elastyczne. Cóż, teraz porozmawiajmy trochę o wiośnie . Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 6
Wiosna
Zalety Wady
  • Pozwala efektywnie organizować interakcje obiektów
  • Prostsze niż Java EE
  • Zaimplementowany w oparciu o IOC i AOP , co zapewnia luźne łączenie aplikacji
  • Działa w oparciu o konfigurację XML, Groovy lub adnotacji
  • Umożliwia używanie zwykłych, starych obiektów Java — POJO, programiści nie potrzebują kontenera korporacyjnego, takiego jak serwer aplikacji
  • Zapewnia programistom Java wysoki poziom modułowości
  • Zapewnia implementacje bibliotek Java EE, ale na swój sposób, znacznie ułatwiając ich użycie
  • Licencja Open Source
  • Spring Boot znacznie upraszcza początkową konfigurację aplikacji
  • Kod aplikacji Spring jest ogólnie łatwy do przetestowania
  • Wiosnę stosunkowo trudno jest rozwinąć, ponieważ brakuje jej wyraźnego skupienia
  • Dla nowego programisty Java nauka frameworka Spring może być wyzwaniem (ale wciąż łatwiejsza niż Java EE)
  • Spring jest wolniejszy niż Java EE
Spring to framework Java typu open source dla dużych firm. Framework Spring ma na celu zapewnienie najprostszej możliwej implementacji pomysłów J2EE i wykorzystanie doskonałych praktyk programistycznych poprzez rozszerzenie możliwości modelu programowania opartego na POJO. Te. Java EE jest bardziej oficjalnym standardem, natomiast Spring jest bardziej frameworkiem, który implementuje ten standard na swój własny sposób.

Wyniki porównania

W moim rozumieniu Java EE i Spring to jak JDBC i Hibernate, gdzie JDBC to szybsza technologia, ale jednocześnie z dużą ilością niepotrzebnego kodu. A Hibernate już korzysta z JDBC, ale jednocześnie znacznie upraszcza i ogranicza rozwój (aczkolwiek narzuca pewne ograniczenia). Nie da się z całą pewnością stwierdzić, który z nich jest lepszy. Przypomina to również nieco pytanie: co jest lepsze - ArrayList czy LinkedList. W końcu odpowiedź będzie taka sama - w zależności od sytuacji. Każdy z nich ma swoje mocne i słabe strony i musisz wybierać spośród nich ostrożnie, oceniając swoją sytuację i rozumiejąc, który z nich przyniesie teraz największe korzyści. Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 7

3. Elementy sprężynowe

Cóż, teraz porozmawiajmy trochę o frameworkach tworzących Spring.

Ramy wiosenne

Jest to moduł podstawowy zapewniający kompleksowy model programowania i konfiguracji nowoczesnych aplikacji korporacyjnych opartych na języku Java — na dowolnej platformie wdrożeniowej. Zawiera wiele podstawowych (rdzeniowych) technologii Spring :
  • core - podstawowa funkcjonalność realizująca koncepcje IoC (inwersja sterowania) i DI (wstrzykiwanie zależności) ;
  • AOPAspect-Oriented Programming – programowanie aspektowe mające na celu realizację logiki typu end-to-end;
  • MVC i WebFlux - frameworki interakcji sieciowych;
  • JDBC , ORM - technologie interakcji z bazami danych;
  • Test - funkcjonalność umożliwiająca przejrzyste, nieskomplikowane testowanie danych kontenera Spring;
  • SpEL - Spring Expression Language - Spring Expression Language;
  • itp.

Wiosenne buty

Upraszcza tworzenie aplikacji opartych na Springu , minimalizując początkową konfigurację aplikacji i automatyczną konfigurację elementów aplikacji Spring. Przykład uruchomienia Spring Boot w 5 minut

Dane wiosenne

Znacząco upraszcza korzystanie z technologii dostępu do danych, relacyjnych i nierelacyjnych baz danych (usuwa powtarzalny kod i upraszcza interakcję z danymi). Ten artykuł zawiera dobry samouczek na temat łączenia Spring Data.

Wiosenna chmura

Znajduje zastosowanie w architekturze mikroserwisowej, upraszczając interakcję mikroserwisów ze sobą i automatyzując wdrażanie aplikacji na platformach chmurowych takich jak AWS , Azure itp. Szczegółowy poradnik dotyczący Spring Cloud znajdziesz tutaj , ale uprzedzam, że temat ten nie jest łatwy i skierowany jest do specjalistów zbliżonych do wyższego szczebla.

Wiosenne bezpieczeństwo

Zapewnia potężne i konfigurowalne narzędzie do uwierzytelniania (uwierzytelniania) i kontroli dostępu (autoryzacji) dla aplikacji. Prosty przykład połączenia Spring Security z aplikacją znajdziesz w tym poście . Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 8

Wiosenny wykresQL

Moduł ten zapewnia obsługę aplikacji Spring zbudowanych w oparciu o Javę GraphQL. GraphQL to język zapytań dla interfejsów API, który umożliwia klientom wysyłanie zapytań do ograniczonego zestawu potrzebnych im danych, co z kolei umożliwia gromadzenie danych w ramach ograniczonej liczby zapytań. Jeśli znasz już JPA, być może spotkałeś się już z EntityGraph z podobną (lub taką samą) koncepcją. Więcej o GraphQL możesz przeczytać tutaj .

Sesja wiosenna

Ta część frameworka Spring zapewnia interfejsy API i implementacje do zarządzania informacjami o sesji użytkownika (dane sesji użytkownika są przechowywane w trwałej pamięci masowej, takiej jak Redis , MongoDb , HazelCast itp.). Przykład wykorzystania sesji wiosennej można znaleźć tutaj .

Wiosenna integracja

Moduł ten ma za zadanie uprościć przesyłanie komunikatów w aplikacjach opartych na Springu i wspierać integrację z systemami zewnętrznymi poprzez adaptery deklaratywne. Te adaptery zapewniają wyższy poziom abstrakcji niż obsługa Springa w zakresie komunikacji zdalnej, przesyłania wiadomości i planowania. Szczegółowy artykuł .

Wiosenny ODPOCZYNEK

Zapewnia bogaty zestaw narzędzi upraszczających rozwój API REST: narzędzia do routingu żądań, do konwersji JSON/XML na obiekty wymaganych typów itp. Przykład usługi RESTful na wiosnę znajdziesz w tym materiale .

Wiosenny przepływ sieci

Spring Web Flow opiera się na Spring MVC i pozwala na implementację „przepływów” aplikacji internetowej. Takie przepływy zawierają sekwencję kroków, które prowadzą użytkownika przez zakończenie jakiegoś zadania biznesowego. Obejmują wiele żądań HTTP, są stanowe, działają z danymi transakcyjnymi, nadają się do wielokrotnego użytku oraz mogą mieć charakter dynamiczny i trwały. Przykład podłączenia Spring Web Flow można zobaczyć w tym poradniku w języku angielskim .

Wiosenne usługi internetowe

Moduł ten został zaprojektowany, aby ułatwić tworzenie usług SOAP opartych na kontraktach, umożliwiając tworzenie elastycznych usług internetowych przy użyciu jednego z wielu sposobów manipulowania ładunkami XML. SOAP – Simple Object Access Protocol – Prosty protokół dostępu do obiektów.

Wiosenne HATEOAS

Moduł udostępnia API ułatwiające tworzenie kontrolerów REST, które podczas pracy ze Springiem, a w szczególności Spring MVC, przestrzegają zasady HATEOAS. HATEOAS - Hypermedia jako silnik stanu aplikacji - Hypermedia jako silnik stanu aplikacji. Tutaj możesz zobaczyć użycie tej biblioteki Spring .

Wiosenna partia

Moduł ten zapewnia funkcjonalność przetwarzania danych wsadowych (gdy dane przetwarzane są w dużych porcjach – wsadach), niezbędną w codziennej pracy systemów korporacyjnych. Spring Batch zapewnia funkcje wielokrotnego użytku, które są potrzebne do obsługi dużych ilości rekordów, w tym rejestrowanie/śledzenie, zarządzanie transakcjami, statystyki przetwarzania zadań, ponowne uruchamianie zadań, pomijanie i zarządzanie zasobami. Ciekawą recenzję Spring Batch znajdziesz pod tym linkiem .

Wiosenne AMQP

Moduł stosuje podstawowe koncepcje Springa do opracowywania rozwiązań do przesyłania wiadomości opartych na AMQP. Zapewnia szablon jako abstrakcję wysokiego poziomu do wysyłania i odbierania wiadomości. Zapewnia także obsługę POJO sterowanych komunikatami z kontenerem odbiornika. AMQP — zaawansowany protokół kolejkowania wiadomości — zaawansowany protokół kolejkowania wiadomości. Projekt składa się z dwóch części: spring-amqp to podstawowa abstrakcja, a spring-rabbit to implementacja dla RabbitMQ . Przykład połączenia RabbitMQ przy użyciu Springa Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 9

Wiosna dla Apache Kafka

W tym projekcie zastosowano podstawowe koncepcje Springa do opracowania rozwiązań do przesyłania wiadomości opartych na platformie Kafka . Szablon jest dostarczany jako abstrakcja wysokiego poziomu do wysyłania wiadomości. Zapewnia także obsługę POJO sterowanych komunikatami z niezbędnymi adnotacjami i kontenerem odbiornika. Istnieje tutaj wyraźne podobieństwo do Spring AMQP, ale moduł ten jest dostosowany specjalnie dla Kafki. Przykład podłączenia Spring Kafki można zobaczyć tutaj .

Wiosenny CredHub

Zapewnia obsługę klienta w zakresie przechowywania, odzyskiwania i usuwania danych uwierzytelniających z serwera CredHub działającego na platformie Cloud Foundry . CredHub — zapewnia interfejs API do bezpiecznego przechowywania, tworzenia, odzyskiwania i usuwania różnych typów poświadczeń. Spring CredHub zapewnia powiązanie Java dla API CredHub, ułatwiając integrację aplikacji Spring z CredHub.

Wiosenne FLO

Jest to biblioteka JavaScript oferująca prosty, osadzany projektant wizualny HTML5 dla potoków oraz proste wykresy do monitorowania danych strumieniowych i wsadowych. Demo tej technologii znajduje się w filmie pod linkiem .

Wiosenny LDAP

Ta biblioteka upraszcza operacje LDAP i jest oparta na Spring JdbcTemplate. Framework umożliwia wyszukiwanie i zamykanie kontekstu, przeglądanie wyników, kodowanie/dekodowanie wartości, filtry i wiele więcej (zbudowany na tych samych zasadach co Spring Jdbc). Przykładową implementację Spring LDAP można znaleźć tutaj .

Wiosenny Roo

Moduł ten udostępnia narzędzie RAD, które umożliwia tworzenie aplikacji opartych na Springu i zarządzanie nimi. Jego celem jest poprawa produktywności programistów Java. Nie może napisać logiki biznesowej aplikacji, ale radzi sobie z konfiguracją i infrastrukturą.

Wiosenna skorupa

Biblioteka ułatwia tworzenie w pełni funkcjonalnej aplikacji powłoki (znanej również jako wiersz poleceń), opierając się na słoikach Spring Shell i dodając własne polecenia (które są metodami w komponentach Spring Bean). Utworzenie aplikacji wiersza poleceń może być przydatne na przykład do interakcji z interfejsem API REST projektu lub do pracy z zawartością plików lokalnych. Przeczytaj więcej tutaj i tutaj .

Wiosenna maszyna stanowa

Moduł ten umożliwia twórcom aplikacji korzystanie z koncepcji maszyn stanowych w aplikacjach Spring. Szczegółowy przykład wykorzystania tej funkcjonalności znajdziesz tutaj i tutaj .

Wiosna Krypta

Spring Vault zapewnia znane abstrakcje Springa i obsługę klienta w zakresie uzyskiwania dostępu, przechowywania i odwoływania sekretów. Oferuje abstrakcje niskiego i wysokiego poziomu interakcji z Vault , uwalniając użytkownika od problemów związanych z infrastrukturą. Przykład wdrożenia Spring Vault Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 10„Czy muszę się tego wszystkiego uczyć?” – pytasz ze zdziwieniem. Nie bój się! To jest źle! Dokładniej, nie do końca tak. To była pełna lista technologii dostępnych w Springu. Lista technologii, które musi znać początkujący, jest znacznie skromniejsza:
  • Rdzeń wiosenny
  • Wiosenne buty
  • Spring Web (MVC i REST)
  • Dane wiosenne (wiosenne ORM, wiosenne JDBC, wiosenne JPA)
  • Próba wiosenna
Istnieją również inne technologie, które często spotyka się na projektach, jednak ze względu na ich złożoność, zajmują się nimi zazwyczaj bardziej doświadczeni programiści, a nie zielone nowicjusze. Jednak dla początkujących przydatne będzie przynajmniej ogólne zrozumienie:
  • Wiosenne bezpieczeństwo
  • Wiosenny AOP
  • Wiosenna chmura
Inne technologie są stosowane znacznie rzadziej, więc wystarczy je poważnie przestudiować, aby pracować nad konkretnym projektem. Nawiasem mówiąc, pełną listę kontrolną tego, co powinien wiedzieć programista Java, znajdziesz w moim innym artykule. To tyle na dzisiaj, do zobaczenia wkrótce! Co musisz wiedzieć o Springu: historia, kluczowe moduły, porównanie z Java EE - 11
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION