JavaRush /Java Blog /Random-IT /Cosa devi sapere su Spring: storia, moduli chiave, confro...

Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE

Pubblicato nel gruppo Random-IT
Ciao! Al momento, la direzione di sviluppo più popolare per uno sviluppatore con conoscenza di Java è lo sviluppo web. Naturalmente, per questa specialità esiste un elenco delle tecnologie necessarie per lo studio. Uno dei principali è la Primavera . Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 1Potresti sostenere che puoi invece imparare Java EE . Questo è ovviamente vero, ma ora la stragrande maggioranza dei nuovi progetti utilizza Spring , che l'ha resa praticamente la tecnologia predefinita e obbligatoria per uno sviluppatore web Java. E se vuoi stare al passo con le esigenze del mercato, dovrai studiarlo. Oggi vorrei parlare di Spring , ovvero ampliare un po' la vostra visione di esso: parlare della storia della sua creazione, delle differenze chiave rispetto allo stack Java EE e fornire una breve panoramica dei componenti chiave dello stack Spring . Iniziamo! Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 2

1. Come e quando è apparsa la Primavera e in cosa si è evoluta nel tempo

Tutto ebbe inizio nell’ottobre del 2002 , quando Rod Johnson scrisse il libro “Expert One-onOne J2EE Design and Development”: Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 3in questo libro, pubblicato da Wrox , l’autore descrive lo stato dello sviluppo Java aziendale in quel momento e sottolinea una serie di carenze di Java EE e degli ambienti (Enterprise Java Bean)EJB . Allo stesso tempo, Rod Johnson propone una soluzione più semplice basata su normali classi Java (POJO - semplici oggetti Java) e sull'iniezione delle dipendenze. Nel libro spiega come creare un'applicazione di prenotazione online scalabile e di alta qualità senza utilizzare EJB. Quelli. ha dimostrato chiaramente come eliminare la complessità dello sviluppo applicativo e rendere possibile l'utilizzo di semplici JavaBean per ottenere tutto ciò che prima era possibile solo utilizzando gli EJB. Tuttavia, l'ambito di Spring non si limita allo sviluppo di componenti software eseguiti sul lato server. Qualsiasi applicazione Java può sfruttare i vantaggi del framework in termini di semplicità, testabilità e accoppiamento libero. Il suo progetto di sviluppo J2EE divenne un successo immediato. Gran parte del codice dell'applicazione, fornito gratuitamente come parte del libro, era riutilizzabile e diversi sviluppatori iniziarono presto a utilizzarlo nei propri progetti. Wrox aveva una pagina web per il libro con il codice sorgente e le patch. Hanno anche fornito un forum online per il libro. Nel febbraio 2003, gli sviluppatori Jürgen Heller e Jann Karoff convinsero Rod Johnson a creare un progetto open source basato sul codice del framework. Da quel momento in poi Rod, Jurgen e Yann iniziarono la loro collaborazione per creare qualcosa di completamente nuovo. In effetti, è stato Yann Karoff a inventare il nome “Spring” per il nuovo framework. Ciò che si intendeva qui è che la primavera è come la primavera: un nuovo inizio dopo l '"inverno" del tradizionale J2EE.
  • Nel giugno 2003, Spring 0.9 è stato rilasciato con la licenza Apache 2.0.
  • La primavera 1.0 è stata rilasciata nel marzo 2004. È interessante notare che, anche prima del rilascio di Spring 1.0, la versione precedente 0.9 è stata accolta molto bene ed è stata ampiamente adottata.
  • Nell'agosto 2004, Rod Johnson, Jürgen Heller, Keith Donald e Colin Sampaleanu hanno cofondato Interface21 , una società di consulenza, formazione e supporto Spring.
  • Ottobre 2006: viene rilasciata Spring 2.0, che semplifica i file di configurazione XML.
  • Spring 2.5, rilasciato nel novembre 2007, ha introdotto le configurazioni delle annotazioni.
  • Spring 3.2, rilasciato nel dicembre 2012, introduceva la configurazione Java, supportava Java 7, Hibernate 4, Servlet 3.0 e richiedeva anche almeno Java 1.5.
  • Yann Karoff ha lasciato presto la squadra. Rod Johnson ha lasciato la squadra primaverile nel 2012. Jürgen Heller è ancora un membro attivo del team di sviluppo Spring.
  • Spring 4.0, rilasciato nel 2014, ha aggiunto il supporto per Java 8.
  • Sempre nel 2014 è stato presentato al mondo Spring Boot.
  • La primavera 5.0 è stata rilasciata nel 2017. Come Spring Boot 2.x, che supporta Spring 5.
  • In realtà, è così che il nostro framework preferito è diventato quello che lo conosciamo ora.

2. Primavera contro Java EE

Facciamo un piccolo confronto tra due stack Java chiave per gli sviluppatori web: Spring e Java EE. Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 4
JavaEE
Vantaggi Screpolatura
  • Le applicazioni scritte in Java EE sono considerate più affidabili, sicure e scalabili
  • Java EE è uno standard API approvato dal settore
  • Principalmente basato su annotazioni e CDI (context and dependency injection), proprio come Spring
  • Implementazione basata su contenitori EJB e POJO
  • Le applicazioni complesse con un numero elevato di transazioni vengono gestite molto bene da JEE
  • Utilizzo riuscito per un'applicazione monolitica scalabile
  • Java EE dispone di un proprio linguaggio OOP contenente uno stile e una sintassi specifici
  • Un ambiente di sviluppo di applicazioni molto complesso e difficile da comprendere per i principianti (e talvolta anche per gli anziani)
  • Il costo finale del progetto, inclusa la progettazione, l'implementazione e lo sviluppo dell'applicazione, potrebbe essere proibitivo
Java EE, concesso in licenza da Oracle, è progettato per organizzazioni e aziende che richiedono un ambiente ampiamente adattabile e distribuibile per la creazione di applicazioni per il mercato di massa. Come Spring, Java EE include librerie aggiuntive per l'accesso al database (JDBC, JPA), invocazione di ingegneria remota (RMI), informazioni (JMS), amministrazione Web, elaborazione XML e caratterizza API standard per JavaBean aziendali, portlet, servlet, pagine server Java, ecc. Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 5L'obiettivo fondamentale di Java EE è svelare i principali problemi affrontati dagli sviluppatori riguardo alla creazione di applicazioni attuali utilizzando varie API. Allo stesso tempo, lo sviluppo in Java EE ha un elevato livello di complessità, che alza l'asticella in modo proibitivo non solo per i principianti. Inoltre, per gli specialisti esperti può essere difficile comprendere le funzionalità già scritte, quindi lo sviluppo in Java EE richiede più tempo e, di conseguenza, è più costoso. Di Java EE in poche parole possiamo dire questo: complesso, ma flessibile. Bene, ora parliamo un po' della Primavera . Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 6
Primavera
Vantaggi Screpolatura
  • Consente di organizzare in modo efficace le interazioni degli oggetti
  • Più semplice di Java EE
  • Implementato sulla base di IOC e AOP , che garantisce un accoppiamento libero delle applicazioni
  • Funziona in base alla configurazione XML, Groovy o annotazione
  • Ti consente di utilizzare semplici vecchi oggetti Java: POJO, gli sviluppatori non hanno bisogno di un contenitore aziendale come un server delle applicazioni
  • Fornisce agli sviluppatori Java un elevato livello di modularità
  • Fornisce implementazioni delle librerie Java EE, ma a modo suo, rendendone l'utilizzo molto più semplice
  • Licenza Open Source
  • Spring Boot semplifica notevolmente la configurazione iniziale dell'applicazione
  • Il codice dell'applicazione Spring è generalmente facile da testare
  • La primavera è relativamente difficile da sviluppare perché manca un focus chiaro
  • Per un nuovo sviluppatore Java, apprendere il framework Spring può essere impegnativo (ma comunque più semplice di Java EE)
  • La primavera è più lenta di Java EE
Spring è un framework Java open source per le grandi aziende. Il framework Spring mira a fornire l'implementazione più semplice possibile delle idee J2EE e sfruttare eccellenti pratiche di programmazione estendendo le capacità del modello di programmazione basato su POJO. Quelli. Java EE è più uno standard ufficiale, mentre Spring è più un framework che implementa questo standard a modo suo.

Risultati del confronto

A mio avviso, Java EE e Spring sono come JDBC e Hibernate, dove JDBC è una tecnologia più veloce, ma allo stesso tempo con molto codice non necessario. E Hibernate utilizza già JDBC, ma allo stesso tempo semplificando e riducendo notevolmente lo sviluppo (pur imponendo alcune restrizioni). È impossibile dire con certezza quale di loro sia migliore. Anche questo ricorda in qualche modo la domanda: quale è meglio: ArrayList o LinkedList. Dopotutto, la risposta sarà la stessa, a seconda della situazione. Ognuno di essi ha i suoi punti di forza e di debolezza e devi sceglierli attentamente, soppesando la tua situazione e capendo quale di essi porterà i maggiori benefici in questo momento. Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 7

3. Componenti della molla

Bene, ora parliamo un po' dei framework che compongono Spring.

Quadro primaverile

È il modulo principale che fornisce un modello completo di programmazione e configurazione per le moderne applicazioni aziendali basate su Java, su qualsiasi piattaforma di distribuzione. Contiene molte delle tecnologie principali di Spring :
  • core - funzionalità di base che implementa i concetti di IoC (inversione del controllo) e DI (iniezione delle dipendenze) ;
  • AOP - Programmazione orientata agli aspetti - programmazione orientata agli aspetti finalizzata all'implementazione della logica end-to-end;
  • MVC e WebFlux - framework per l'interazione web;
  • JDBC , ORM - tecnologie per l'interazione con i database;
  • Test : funzionalità per test trasparenti e semplici dei dati del contenitore Spring;
  • SpEL - Spring Expression Language - Linguaggio delle espressioni primaverili;
  • eccetera.

Stivale primaverile

Semplifica la creazione di applicazioni basate su Spring riducendo al minimo la configurazione iniziale dell'applicazione e configurando automaticamente gli elementi dell'applicazione Spring. Esempio di avvio di Spring Boot in 5 minuti

Dati di primavera

Semplifica notevolmente l'uso delle tecnologie di accesso ai dati, database relazionali e non relazionali (rimuove il codice ripetitivo e semplifica l'interazione con i dati). Questo articolo contiene un buon tutorial sulla connessione di Spring Data.

Nuvola primaverile

Viene utilizzato nell'architettura dei microservizi, semplificando l'interazione dei microservizi tra loro e automatizzando la distribuzione delle applicazioni su piattaforme cloud come AWS , Azure , ecc. Guarda un tutorial dettagliato su Spring Cloud qui , ma ti avverto che questo argomento non è facile ed è rivolto a specialisti vicini al livello senior.

Sicurezza primaverile

Fornisce uno strumento di autenticazione (autenticazione) e controllo degli accessi (autorizzazione) potente e personalizzabile per un'applicazione. Puoi trovare un semplice esempio di connessione di Spring Security alla tua applicazione in questo post . Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 8

GraphQL primaverile

Questo modulo fornisce supporto per le applicazioni Spring basate su GraphQL Java. GraphQL è un linguaggio di query per API che consente ai clienti di eseguire query su un set limitato di dati di cui hanno bisogno, il che a sua volta consente di raccogliere dati in un numero limitato di query. Se hai già familiarità con JPA, potresti esserti già imbattuto in EntityGraph, con un concetto simile (o lo stesso). Puoi leggere ulteriori informazioni su GraphQL qui .

Sessione primaverile

Questa parte del framework Spring fornisce API e implementazioni per la gestione delle informazioni sulla sessione utente (i dati della sessione utente vengono archiviati in archivi persistenti come Redis , MongoDb , HazelCast , ecc.). Un esempio di utilizzo della Spring Session può essere trovato qui .

Integrazione primaverile

Questo modulo è progettato per semplificare la messaggistica nelle applicazioni basate su Spring e supportare l'integrazione con sistemi esterni tramite adattatori dichiarativi. Questi adattatori forniscono un livello di astrazione più elevato rispetto al supporto di Spring per la comunicazione remota, la messaggistica e la pianificazione. Articolo dettagliato .

RIPOSO primaverile

Fornisce un ricco set di strumenti che semplificano lo sviluppo di API REST: strumenti per l'instradamento delle richieste, per la conversione di JSON/XML in oggetti dei tipi richiesti, ecc. Un esempio di un servizio RESTful in primavera può essere trovato in questo materiale .

Flusso web primaverile

Spring Web Flow è basato su Spring MVC e consente di implementare "flussi" di un'applicazione web. Tali flussi incapsulano una sequenza di passaggi che guidano un utente attraverso il completamento di alcune attività aziendali. Si estendono su più richieste HTTP, sono stateful, funzionano con dati transazionali, sono riutilizzabili e possono essere di natura dinamica e durevole. Un esempio di connessione di Spring Web Flow può essere visto in questa guida in inglese .

Servizi Web primaverili

Questo modulo è progettato per semplificare lo sviluppo di servizi SOAP basati su contratto consentendo di creare servizi Web flessibili utilizzando uno dei tanti modi per manipolare i payload XML. SOAP - Simple Object Access Protocol - Protocollo di accesso semplice agli oggetti.

HATEOAS primaverili

Il modulo fornisce alcune API per semplificare la creazione di controller REST che seguono il principio HATEOAS quando si lavora con Spring e in particolare Spring MVC. HATEOAS - Hypermedia come motore dello stato dell'applicazione - Hypermedia come motore dello stato dell'applicazione. Puoi vedere l'uso di questa libreria Spring qui .

Lotto primaverile

Questo modulo fornisce funzionalità per l'elaborazione dei dati batch (quando i dati vengono elaborati in porzioni di grandi dimensioni - batch), vitali per il funzionamento quotidiano dei sistemi aziendali. Spring Batch fornisce funzionalità riutilizzabili necessarie per gestire grandi volumi di record, tra cui registrazione/traccia, gestione delle transazioni, statistiche di elaborazione dei lavori, riavvio dei lavori, salto e gestione delle risorse. Potete trovare un'interessante panoramica di Spring Batch a questo link .

AMQP primaverile

Il modulo applica i concetti fondamentali di Spring allo sviluppo di soluzioni di messaggistica basate su AMQP. Fornisce un modello come astrazione di alto livello per l'invio e la ricezione di messaggi. Fornisce inoltre supporto per POJO basati su messaggi con un contenitore listener. AMQP - Protocollo di accodamento messaggi avanzato - Protocollo di accodamento messaggi avanzato. Il progetto contiene due parti: spring-amqp è l'astrazione di base e spring-rabbit è l'implementazione di RabbitMQ . Esempio con connessione RabbitMQ utilizzando Spring Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 9

Primavera per Apache Kafka

Questo progetto applica i concetti fondamentali di Spring allo sviluppo di soluzioni di messaggistica basate su Kafka . Un modello viene fornito come astrazione di alto livello per l'invio di messaggi. Fornisce inoltre supporto per POJO basati su messaggi con le annotazioni necessarie e un contenitore listener. C'è una chiara somiglianza qui con Spring AMQP, ma questo modulo è adattato specificamente per Kafka. Un esempio di collegamento di Spring Kafka può essere visto qui .

CredHub primaverile

Fornisce supporto lato client per l'archiviazione, il recupero e l'eliminazione delle credenziali da un server CredHub in esecuzione sulla piattaforma Cloud Foundry . CredHub : fornisce un'API per archiviare, creare, recuperare ed eliminare in modo sicuro vari tipi di credenziali. Spring CredHub fornisce un collegamento Java per l'API CredHub, semplificando l'integrazione delle applicazioni Spring con CredHub.

FLO primaverile

Si tratta di una libreria JavaScript che offre un semplice designer visivo incorporabile in HTML5 per pipeline e semplici grafici per il monitoraggio di flussi di dati e batch. Una demo di questa tecnologia è nel video al link .

LDAP primaverile

Questa libreria semplifica le operazioni LDAP e si basa su Spring JdbcTemplate. Il framework consente la ricerca e la chiusura del contesto, la visualizzazione dei risultati, la codifica/decodifica di valori, filtri e molto altro (costruito sugli stessi principi di Spring Jdbc). Un esempio di implementazione di Spring LDAP può essere trovato qui .

Primavera Ro

Questo modulo fornisce uno strumento RAD in grado di creare e gestire la tua applicazione basata su Spring. Il suo obiettivo è migliorare la produttività degli sviluppatori Java. Non può scrivere la logica aziendale della tua applicazione, ma può gestire elementi di configurazione e infrastruttura.

Conchiglia di primavera

La libreria semplifica la creazione di un'applicazione shell completa (nota anche come riga di comando) facendo affidamento sui jar Spring Shell e aggiungendo i propri comandi (che vengono forniti come metodi nei bean Spring). La creazione di un'applicazione a riga di comando può essere utile, ad esempio, per interagire con l'API REST del tuo progetto o per lavorare con il contenuto del file locale. Leggi di più qui e qui .

Macchina a stati primaverile

Questo modulo consente agli sviluppatori di applicazioni di utilizzare i concetti di macchina a stati con le applicazioni Spring. Un esempio dettagliato dell'utilizzo di questa funzionalità può essere trovato qui e qui .

Volta primaverile

Spring Vault fornisce le familiari astrazioni Spring e supporto lato client per l'accesso, l'archiviazione e la revoca dei segreti. Offre astrazioni sia di basso che di alto livello per interagire con Vault , liberando l'utente dai problemi dell'infrastruttura. Esempio di implementazione di Spring Vault Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 10"Devo imparare tutto questo?" - chiedi stupito. Non aver paura! Questo è sbagliato! Più precisamente, non proprio così. Questo era l'elenco completo delle tecnologie disponibili in primavera. L'elenco delle tecnologie che un principiante deve conoscere è molto più modesto:
  • Nucleo primaverile
  • Stivale primaverile
  • Spring Web (MVC e REST)
  • Dati primaverili (ORM primaverile, JDBC primaverile, JPA primaverile)
  • Prova di primavera
Esistono anche altre tecnologie che si trovano spesso nei progetti, ma a causa della loro complessità vengono solitamente gestite da sviluppatori più esperti piuttosto che da principianti ecologici. Tuttavia, è utile anche per i principianti avere almeno una conoscenza generale di:
  • Sicurezza primaverile
  • AOP primaverile
  • Nuvola primaverile
Altre tecnologie vengono utilizzate molto meno frequentemente, quindi basta studiarle seriamente per lavorare su un progetto specifico. A proposito, puoi trovare una lista di controllo completa di ciò che uno sviluppatore Java dovrebbe sapere nel mio altro articolo. Per me oggi è tutto, a presto! Cosa devi sapere su Spring: storia, moduli chiave, confronto con Java EE - 11
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION