Press "Enter" to skip to content

GOTO 2018 • 15 Years of Spring: Evolving a Java Application Framework • Juergen Hoeller


[Musica]
Tutto ok
quindi iniziamo da dove tutto ha avuto inizio
proprio l’origine di ciò che sappiamo ora
come in realtà è il Framework di primavera
il libro è davvero buono
indicazione di dove sta andando questo discorso
ci sono alcune immagini storiche
Li ho intenzionalmente non li ho toccati così
loro risalgono a in questo caso di
Certo 16 anni fa e alcuni di loro di
Naturalmente mostrano la loro età molto intenzionalmente
comunque questo è il libro originale
è j2e design e sviluppo per asta
Johnson ha pubblicato da rocce allora
questo libro è stato pubblicato all’inizio
Dicembre 2002 e l’ho comprato proprio quando
è uscito e l’ho letto a Natale
e il capodanno dal 2002 al 2003
ha circa o quasi 700 pagine
quindi era piuttosto una lettura ed è venuto con
a scaricarlo ovviamente era
spiegando molti modelli di design ma
quello è stato cercato in parte la metà del
l’altra metà era uno schizzo per un quadro
di un tipo diverso
quello-quello-quello lo prende molto presto
prototipo incompleto è arrivato anche come un
scarica in una combo solo nel primo
un pacchetto con il libro e non l’ha fatto
avere un nome non c’era idea di questo
essere chiamato primavera ovunque in quel libro
ad ogni modo ho davvero amato quello che ho letto qui
non solo dalla prospettiva del
raccomandazioni e la copertura che
la canna aveva qui ma anche il suo
prospettiva il suo stile è la sua visione
per come dovrebbero essere le cose era molto
in linea con quello che ero, ero un Java
Enterprise Architect in quel momento così io
stava soffrendo per lo stesso molto
tipo di problemi
il prossimo passo che abbiamo preso il nostro
la ricchezza era in realtà un passo che ho preso io
è entrato in contatto con lui proprio come dentro
Alla fine di dicembre all’inizio di gennaio sono caduto
lui un appunto allora ovviamente senza
qualsiasi altro canale di social media che fosse
un meccanismo di feedback sulle rocce
sito web mi sono messo in contatto con lui e
gli ho chiesto di prendere in considerazione questo
avanti a destra prendendo questo questo questo
prototipo di base per un framework e e
producendolo trasformandolo in un vero e proprio
progetto open source piuttosto che solo il
scarica che viene fornito con un libro e una canna
inizialmente era riluttante a fare questo ha
scrisse che trascorse come nove o dieci mesi
scrivendo questo libro proprio lui era un
consulente in persona, voleva tornare
in affari e tipo di follow up a
prenota con l’avvio di un open source
il progetto non gli piaceva troppo
ma ha tolto di nuovo e ha detto come
e se ti impegni?
condividendo il carico giusto se se ci Co se noi
sono co-responsabili per l’ avvio di
questo progetto quindi sono disposto a fare
e io sono disposto a farne parte
i miei prossimi anni della mia carriera e
questo è esattamente quello che abbiamo fatto nel mese di gennaio abbiamo
non sprecare un sacco di tempo che abbiamo appena avuto
circa un paio di settimane di set-up
e abbiamo preso il codice prototipo che
è venuto con il libro caricato a
sourceforge.net al github.com della
volte va bene così SourceForge nessuno
ricorda il lavoro di fonte e noi, naturalmente
dovevo scegliere un nome per il progetto quando noi
caricato in salsa che non è possibile
cambia il nome dopo il fatto giusto a
repository AAA un sottodominio che sugo
che ha un nome fisso dal suo
inizio così che è stato il momento in cui noi
dovevo scegliere un nome per questo progetto
e c’erano un paio di nomi dentro
l’aria alla fine era lì
c’erano anche un paio di altre persone
quel forum di feedback intorno a quel libro e
era uno di loro che suggeriva il nome
primavera se ricordo bene
e piuttosto io stesso , immediatamente
amato il nome
e per l’unicità del nome noi
aggiunto il tipo di termine quadro giusto
così la salsa della struttura della primavera che la rete quello
primavera dal nome posteriore salsa che era
effettivamente scelto quando carichiamo i dati
guardare la fonte nel febbraio 2003 e
questo è quello che è diventato primavera da un
codice-nove rilasciato nel giugno 2003 questo è
già una versione molto più completa di
il quadro quindi ciò che è venuto con il
libro c’era molto lavoro svolto quando
quando la verga si è impegnata a questo e
quando ho commesso in quel momento come metà
del mio tempo mi sono preso la metà del tempo
il mio lavoro per fare questo poi ho davvero noi
trascorso un sacco di tempo cercando di raggiungere a
sorta di iniziale minimo completo vitale
Prodotto diremmo questo a questo in
queste volte tutto ciò che nove non era abbastanza
cosa doveva essere ancora, ma noi
deciso di rilasciare all’inizio di giugno 2003 questo
era già la prima versione che ho fatto
che ero responsabile per sempre
da Oh punto nove ogni singola molla
il rilascio del framework è stato firmato da
me stesso per molto tempo anche testato e
caricato me stesso sono un bel controllo
strano a tale riguardo ma letteralmente mio
responsabilità come gestore di rilascio
sono molto essenziali per la mia definizione
delle mie responsabilità qui e
iniziato con fuori alle nove mai lasciato andare
ce n’era un altro quasi un anno
come nove mesi fino al nostro
dichiarazione di meraviglia anche se in generale
disponibile già nella molla punto lavoro
frame al namespace al momento e
praticamente nella forma che noi conosciamo
ora se guardi al framework principale
non necessariamente il modello di utilizzo ma molto
della struttura la struttura del modulo
la struttura del pacchetto D i meccanismi
al centro del contenitore che siamo
già a posto allora e sono ancora
in atto ora in una forma evoluta di
Naturalmente il modello di utilizzo era fuori tempo
giusta definizione del raggio XML
corrispondenza web.xml corrispondente hibernate xml
file di mapping era una cosa molto comune
fare per le definizioni dei metadati e nel suo
evoluzione immediata del follow-up in primavera
famlyly 2 abbiamo già iniziato a farlo
era il supporto per l’annotazione delle transazioni
in realtà la prima cosa che abbiamo mai fatto
termini di supporto di annotazione era il
annotazione transazionale poco complessa
per impostare al momento, ma già costruito
su jdk 5 quindi anche se tutti là fuori
nel settore stava usando jdk 1 4 al
tempo abbiamo già iniziato in qualche modo
abbracciando alcune funzionalità di JDK 5
presto parlando bene di Java
Panorama aziendale del tempo lì
erano già un bel po ‘ open source
progetti di immediata rilevanza anche in aumento
fino ad oggi quindi sto doppiando questo il
i montanti sono stati qui alle aste opechee
era ovviamente il framework web del
tempo molto molto popolare ovviamente a
punto di riferimento per ciò che stavamo facendo
ed era in realtà una delle cose che io
inizialmente ho dovuto guardare come ero molto
ben intimo con l’ evoluzione di Stratos
me stesso quando ho iniziato questo, ma puntelli
svanito nel corso degli anni, ma quelli
i progetti non hanno fatto i capriolini ai primi tempi
di destinazione al momento pontile abbastanza
stabilito già in realtà in letargo
risale a quasi la stessa nascita
punto dove sono iniziate le primavere e cosa
trasformato in Eclipse Foundation del
Eclipse IDE quando abbiamo iniziato questo Eclipse
era solo per iniziare II era
effettivamente in IntelliJ IDEA utente e ancora
sono così non ho mai visto Eclipse arrivare
ma non mi sono mai allontanato da IntelliJ my
L’adozione IntelliJ precede l’inizio
dell’IDE di Eclipse comunque, ma questo è
in realtà abbastanza significativo, proprio come
tutti questi progetti qui a primavera hanno un
durata di 1516 anni e conteggio in
l’ ecosistema Java che trovo abbastanza
impressionante per un così grande set up per
così tanti progetti anche
tipo di farsi strada attraverso tutti quelli
volte gli sforzi del nostro libro, naturalmente
continuato c’era un secondo libro che
Sto omettendo qui la copertina sembrava
quasi uguale al design di j2ee
lo sviluppo si chiamava j2e
sviluppo senza AGB che io
co-autore così un follow-up immediato e
coppia immediata a questo libro ma lo era
anche un anno un terzo libro nei lavori in
questo terzo libro era già molto primavera
centrico con questo è stato il primo
primavera dedicata da un libro che abbiamo fatto
sviluppo professionale di Java con il
struttura della molla che copre la firma di primavera
quanti – questo è stato un po ‘difficile
tutti e cinque gli autori in questo bello
l’ installazione fotografica poco elaborata lassù
tutti noi abbiamo passato molto tempo
lavorando al progetto open source su
il progetto del libro fianco a fianco e noi
capito questo non è sostenibile che fosse
l’ultimo progetto di libro in cui eravamo coinvolti
come ufficio credo che questo sia in realtà
vero per tutti e cinque e quindi non lo saremo mai
siamo coinvolti nel progetto di nuovo noi
cambiato causa in seguito un po ‘noi
ha iniziato a sostenere progetti di libri nel
ecosistema abbiamo supportato altri uffici in
scrivere libri sulla primavera che rende
molto più senso e la nostra energia era
incentrato sullo sviluppo open source
storia stessa in parallelo a questo noi
ho sentito un business che stava consultando
gli affari in corso, dovevamo guadagnarci un po ‘
soldi per sostenere l’open source
sviluppo qui quindi eravamo tutti un po ‘di
un po ‘sfidato da più parti
in ogni caso, quando questo libro è stato fatto il
la prossima cosa importante era il Framework di primavera
– lo sforzo del DOE molto a
sforzo di squadra collaborativo spendiamo molto
di molta energia non solo sul tipo di
facendo l’ovvio ma anche uscendo
lì ad ascoltare cosa dicono le persone
noi cosa manca ciò che vorresti
piace avere in una forma più conveniente
Quadro di primavera – l’impasto è già
molto una comune
sforzo ma è anche un è anche aa
anima di piccole imprese sponsorizzate
sforzo già avevamo un punto di partenza noi
ha avuto un conto alla rovescia sul nostro sito web quando
uscì quindi c’era quasi un marketing
campagna intorno ad esso così dentro
percepire che era già un silenzio
open source sponsorizzato professionalmente
progetto ancora XML basato sullo schema
convenienza di configurazione dei namespace
arrivando attraverso i namespace XML ma
ancora più sostegno iniziazione in arrivo in
nel suo follow-up immediato 2,5 all’anno
dopo abbiamo già iniziato a farlo
iniezione guidata da annotazione in quasi a
nella misura in cui abbiamo ancora supportato
oggi e in particolare abbiamo iniziato a farlo
endpoint Web Mapping degli endpoint HTTP in
il framework web attraverso le annotazioni
il controllo degli annunci e tutto a richiesta
il modello di mappatura risale a quel momento
2.5 novembre 2007 è in realtà abbastanza
presto ed è ancora a posto oggi così
la storia continua e prende solo un
un po ‘più in là
ha ampliato tutto il portafoglio
più esteso abbiamo iniziato ad abbracciare groovy
abbiamo iniziato a lavorare con i ragazzi di Grails
la nostra azienda allora era Springs
acquisito la piccola compagnia che si è classificata
Rubino e Graal subito dopo il grigio
Grails come applicazione web basata su rubini
quadro è la sua primavera basata ancora
è e abbiamo tipo di Grails co-evoluto con
con il framework principale che abbiamo avviato
Lo abbiamo sviluppato in quel momento anche noi
un marketing molto più professionale
il dipartimento ha già parlato di noi
dovuto scaturire dal lavoro per il sussidio di disoccupazione
lancio e abbiamo avuto un nuovo ragazzo responsabile
marketing basato negli Stati Uniti, naturalmente, la nostra azienda
interfaccia 21 con il Regno Unito inizialmente basato esso
trasferito a questo ha trasferito il suo quartier generale a
gli Stati Uniti con il nostro primo round di venture
capitale con la serie un investimento così
noi avevamo un
una vendita e marketing basata sugli Stati Uniti
dipartimento ora cosa fare cosa fanno gli Stati Uniti
gli uomini di marketing fanno quando vedono un po ‘
un po ‘di Java open-source e una specie di a
competizione tra Java EE e primavera
proseguendo arrivano con metafore
giusto e questo ho molto forte
ricordi su ancora questa è una campagna
guidato dal nostro marketing statunitense è stato chiamato
armi per la guerra sulla complessità di Java
I sauditi, naturalmente, stanno spruzzando
i diritti delle navi da guerra probabilmente non possono leggere
questo correttamente quindi c’è un quelli sono
chiamato primavera quelli RTC così sempre serbatoi TC
server era la nostra distribuzione Tomcat con
supporto commerciale attorno ad esso e questi
sono DM server di combattenti per server DM
era il nostro ambiente di runtime basato su OSGi
che abbiamo donato a Eclipse
Fondazione e ora vive come Eclipse
Burgo quelli erano progetti circostanti di
il tempo in particolare da
SpringSource in termini di corporate
offerta che aveva opzioni di supporto
collegato ad esso ma conosci una complessità
Nia attaccata da navi da guerra primaverili e
come i serbatoi dei server TC e come potresti
è quando abbiamo visto quella campagna quando io
e altri nostri stakeholder europei
così che la campagna per la prima volta tu
può immaginare quello che abbiamo sentito giusto è
un po ‘ come va bene, potremmo semplicemente rotolare
questo indietro e un po ‘di intendo fare ciò che tu
voglio negli Stati Uniti ma per favore non girare
questo in una campagna globale da un
una prospettiva europea questi questi
metafore ora iniziamo a fare i cazzi
fondamentalmente quando vediamo questo mentre in
negli Stati Uniti ricordate negli Stati Uniti
stato dichiara guerra a qualcosa di molto
subito giusta guerra alla guerra alla droga
povertà, naturalmente, tutto il mondo reale
teniamolo da parte ma ma loro hanno usato
loro abusano della metafora della guerra intendo
come la guerra alla droga, la guerra alla povertà
così una complessità non sembra così sbagliata
a loro comunque andiamo oltre
uno
il
il portafoglio di primavera è cresciuto un po ‘noi
trasferito essenzialmente da una singola cooperativa
e salsa progetto con pochi
i progetti dei coloni intorno ad esso
accordo ecosistemico in cui diversi
progetti di alto profilo hanno iniziato a evolversi
intorno ad esso
così l’integrazione primaverile è iniziata nel 2007
il flusso di acqua piovana era molto popolare a
il tempo è ancora molto in uso
oggi forse non per una nuova applicazione
sviluppo ma ancora lì c’era a
molto valore e molta comunità
portata acquisita da diversi altri progetti
intorno a noi servizi web di primavera sapone e
fischietto al momento tutti questi
i progetti esistono ancora in qualche modo
avevamo anche un Roo di primavera che era un tipo
dell’aspetto basato sulla cogenerazione
predecessore di ciò che ora conosciamo come
stivali di primavera che hanno avuto i nostri tentativi di
tipo di quadri di punti di entrata di un
più facile iniziare un’esperienza anche
in quei primi giorni abbiamo avuto un’eclissi
distribuzione già chiamato Springs noi
strumenti che esistono ancora in a
forma diversa ora così fanno a
sacco di roba andando in giro in corso
intorno alla primavera quadro è primavera
ancora in questa posizione di essere il
Spring Framework stessa di essere il
cuore di un ecosistema proprio ora di
certo, ma è già che viviamo già
in un accordo ecosistemico per di più
di dieci anni quindi tutte queste cose
e in particolare il DD il tutto
il carattere dell’ecosistema era tutto a
forte ispirazione per Spring Framework
3.0 in Spring Framework 3 abbiamo iniziato
spostando alcune funzionalità da
esterno da progetti di portafoglio indietro
nel quadro principale
bene abbiamo spostato la configurazione di Java nel nucleo
quadro abbiamo avuto l’espressione incantesimo
lingua c’erano un paio di cose
è arrivato proprio a quel punto
precedentemente sviluppato in una sorta di esterno
progetti che non lo erano
una parte completa del prodotto supportato
portafoglio e sono tornati al
quadro al tempo primaverile famiglia che
ha anche portato una sorta di ulteriore
reinvenzione della primavera MVC del web
strato in cui è arrivato il riposo di prima classe
in vorrei anche discutere di quella primavera MVC
si è reinventato come una pausa
framework endpoint dal tipo di
framework di rendering HTML basato su moduli
era prima fortunatamente la maggior parte del
l’infrastruttura sottostante non lo era
particolarmente focalizzato sul legame in schiuma o
Rendering HTML per iniziare così quasi
tutte le astrazioni sono ancora dentro
luogo dai primi tempi al tipo di
giorni di riposo per il tipo di web moderno
strato che abbiamo oggi questo è, naturalmente
non necessariamente un dato diritto quando tu
iniziare a sviluppare alcune astrazioni che
potrebbero sentirsi superati molto rapidamente noi
sono nella fortunata situazione che entrambi
a livello di contenuto principale e sul Web
livello di struttura molte delle astrazioni
che abbiamo scelto nei primi giorni di incontri
è tornato al 2003 nel 2004
utile o almeno evolvibile anche con
nuove sfide nuove applicazioni
architetture che arrivano diversamente
si finisce in una situazione in cui è necessario
buttare via il tuo livello web esistente
link completo e ri-sviluppo non abbiamo mai
dovevo farlo era sempre un
modello evolutivo c’era sempre un
percorso evolutivo che siamo stati in grado di
scoprire che siamo stati in grado di prendere così primavera
da un albero che era ovviamente molto
già una struttura molto popolare
là i due quella linea erano molto
molto popolare già molto longevo
anche se abbiamo provato a chiuderlo nel 2008 I
appena imparato di recente che la gente fuori
c’è ancora usando Spring Framework per
quella 5.6 applicazioni basate su una versione
vale a dire quasi 10 anni ormai solo
contare le vulnerabilità della sicurezza in
quello giusto dovrebbero davvero
operare ad un certo punto, ma questo è
molto il caso oggi in primavera è così
molti posti in così tante configurazioni
alcune nuove funzionalità e nuove
revisioni anche solo alcune correzioni di sicurezza
potrebbe importare in alcuni scenari e non
in altri quindi dipende totalmente da te o da te
a tutti gli architetti di applicazioni e
i distributori là fuori, alla fine, non lo è
nelle nostre mani quando esegui l’aggiornamento possiamo
basta dare consigli sullo stato di
l’arte è questo è qualche anno dopo
non è più basato su XML questo è
in pratica lo stato dell’arte a partire dal 2009
dove il modello basato sull’annotazione è molto
molto stabilito il modo in cui noi
lo so ancora oggi quindi questo tipo di
componente basato su annotazione e
il modello di configurazione in primavera è in
posto per quasi 10 anni ora
in realtà è iniziato alla fine del 2007 ma
letteralmente le caratteristiche principali da dietro
poi risalgono al 2009 a in quanto abbiamo
come possiamo vedere qui configurazione
classi dat alle classi di configurazione
con quei metodi di raggio risalgono a
Anche il 2009 quando uniamo il viaggio
progetto di configurazione nel framework principale
molte di quelle cose risultarono essere
loro sono molto popolari e molto longevi
sono ancora il modello di utilizzo mainstream
oggi abbiamo avuto altre ispirazioni nel
nel frattempo la salsa primaverile è stata acquisita da
VMware nel 2009 così la primavera precedente
serve spostato su VMware come una sorta di
dipartimento un gruppo di fondamentalmente 150
persone che vivevano come una sorta di piccolo
la squadra di sapanta in modo ma
essenzialmente con noi siamo stati parcheggiati
lì per quello che è diventato un così giusto per
per un paio d’anni per essere
preparato per uno spinoff da VMware e
DMC che è diventato cruciale e il
centrale il driver centrale nel
la storia cardine in particolare è una nuvola
piattaforma chiamata cloud foundry e open
progetto di origine proprio il the
rilevanza per il negozio di primavera è
molto come ispirazione, ovviamente a
una piattaforma cloud fa molte cose
con molte lingue in molti archivi di dati
ma c’era un forte pubblico di java
lì e una forte connessione che noi
ha avuto per il pubblico di lavoro e c’erano
piloti forti per le persone a cercare di
schierare a molla
applicazioni java basate su java spring a
piattaforme cloud per Cloud Foundry ma
anche a chi ama le redheads openshift e
Heroku e Google App Engine e tutti
sono emersi nello stesso periodo comunque
quindi questa è stata una forte ispirazione per noi
come è possibile come è possibile preparare un
applicazione a molla
come seguire determinate linee guida
per la distribuzione basata su cloud per quello che noi
stanno doppiando applicazioni native cloud
ora anche fortemente avendo un micro
aspetto dei servizi ad esso ovviamente così tutto
di quelle ispirazioni in cui ci siamo abbracciati
cosa è diventato primavera per un Mac piegato o
la prima versione che è stata davvero gentile
di accadere in un punto chiave, voglio dire che lo era
già in preparazione prima ma questo
era molto legato alla trama di
Era fondamentale la struttura di primavera per dodo
basato era la base per la primavera
butuan dodo l’intera primavera da a
la linea completa non può essere separata da
Stivale primaverile Wanda Dex sono davvero Co
si è evoluto molto da vicino lo stivale primaverile
Ovviamente una specie di ancora più integrativo
affare prende il quadro centrale esso
prende i dati di primavera prende la sicurezza di primavera
gestisce le dipendenze per tutti
li li configura automaticamente in base a
alcune indicazioni in fase di esecuzione a
tempo di avvio è molto micro servizi
orientato anche se non lo chiamiamo a
quadro di micro servizi è si gira
essere molto utile per il micro servizio
architetture e anche in particolare
utile per l’implementazione cloud dove di
Certo nel frattempo abbiamo il
Spring Cloud Project c’è una specie di a
integrazione più dedicata con like the
Stack di cloud Netflix e là c’è
più di questo, ma a livello di
il modello di programmazione di base come noi
vedere
è che noi stiamo essenzialmente costruendo
strumenti in cui abbiamo strumenti in offerta
linee guida intorno a loro ma alla fine noi
stanno responsabilizzando l’architetto dell’applicazione
non ne stiamo veramente dettando
anche questa è un’architettura particolare
il motivo per cui non chiamiamo nulla
primavera micro-servizio qualcosa di molti
i nostri pezzi sono in particolare
utile in alcune architetture di
Certo, ma non sono necessariamente legati
a loro su una molla diversa nota
quadro per iniziare ad abbracciare JDK 8
questo è un passo molto essenziale che trovo
questo in realtà crea è un’ispirazione
tanto quanto tutto il resto qui per
noi JDK 8 abbiamo portato così tanti bei piccoli e
o anche non così poco classificato abbastanza tranquillo
linguaggio significativo nell’API
affinamenti a Java stesso non solo
per comodità all’applicazione
livello di sviluppo ma anche a favore di
fornitori di framework c’è così tanto
bontà che possiamo fare e possiamo fornire
attorno a JDK 8 che abbiamo iniziato ad abbracciare
prima è di proprietà prima della sua propria GA
la storia nel modello di programmazione ottenuto
molto più sofisticato si potrebbe anche
argomentano abbastanza sottili nei suoi raffinamenti
per esempio l’intero componibile
costruire il modello di imitazione costruisci il tuo
annotazioni e usa le tue annotazioni
nel tuo codice scegli i tuoi nomi
e scegli alcune caratteristiche in a
modo conveniente quelli che risalgono a
quadro di primavera per tempo alla primavera
da una timeline completa e dal giorno moderno
Modello di controller web controller MVC con
le sue annotazioni di collegamento e il tipo di
come la comodità di alcuni web
le caratteristiche vengono cotti in certo
le annotazioni degli stereotipi risalgono a
quel tempo e in modo ancora anche solo
visivamente puoi vedere che la maggior parte di questo
il modello è ancora molto nello stesso
linea di evoluzione proprio nel
stessa linea di design in cui abbiamo iniziato
2007 non è così diverso è solo
bene sintonizzato da lì quindi è ancora molto
evolutivo e immediato
continuazione di questo tipo di design
linguaggio che abbiamo stabilito nel 2007
all’era del 2009, ora, mentre stiamo facendo
tutto questo un paio di altre cose
siti accaduti sul lato di esso lì
era un forte movimento verso ciò che noi
conoscere la programmazione come il reattivo
il manifesto reattivo risale a circa
allo stesso tempo si verificano le penne ottiche Akron
come un quadro ecto risale al
tempo e l’ inizio di ciò che sappiamo
ora come flussi reattivi che era
in realtà un seguito abbastanza immediato a
il manifesto intendo II confesso di essere
io
Non mi piacciono i manifesti, voglio dire, ma questo
uno ottiene almeno un paio di termini
destra
come la reattività e la resilienza
cercando di costruire architetture web con
diverse caratteristiche differenti in
in alto carico in scenari inusuali
gli scenari ricordano che in Java
tutto il mondo è basato sulla servlet che abbiamo
stato fondamentalmente la costruzione di applicazioni web
sempre dal 99 con il modello servlet e
astrazione che risale a
qualcosa chiamato CGI dal tardo
Gli anni ’90 fondamentalmente sono una specie di web
richiesta e ora ecco un processo e ora
fai le tue cose, costruisco una risposta per questo
e il modello servlet era già abbastanza
più bello c’è un sacco di riutilizzo che ha avuto il
lo stesso JVM impostato hai avuto un nuovo
thread allegato a ogni richiesta era
una sorta di moderno al momento, ma dove noi
ora è arrivato anche il modello servlet
con le limitazioni c’è una discussione
piscina collegata ad esso se si esaurisce il
pool di thread se tutti i thread sono occupati
non puoi accettare alcuna nuova richiesta neanche
il più semplice
index.html richieste in stile indice
richieste dovrebbero essere respinte da
la tua applicazione al momento quindi arriva
con la propria quota di problemi e in
scenari di alto carico che abbiamo imparato tutti
come affrontarli in una forma o in
altre architetture reattive reattive
le architetture web sono essenzialmente a
giro diverso guardando allo stesso modo
spazio problema cercando di attaccarlo da un
prospettiva diversa nella costruzione del web
architetture che accettano richieste aaa
avere una pipeline basata callback che
sa come elaborare quella richiesta e
arrivare a una risposta questi questo questo
diversa linea di di pensare a destra
su come elaborare le richieste web
trasformato in ciò che ora conosciamo come primavera
il flusso del web come il fotogramma reattivo di nuovo
in Spring Framework 5 quindi un forte
l’ispirazione qui non è solo il
modello di elaborazione reattiva il callback
basato sulla retroazione basata sulla lavorazione
architettura al centro del web
quadro come una sorta di alternativa a
servlet non è solo che è anche un
uno stile API che viene fornito con più
stile di progettazione API orientato alla funzionalità
l’idea alla base di questo e di farlo dentro
la stessa versione è che va davvero
davvero bene insieme siamo fondamentalmente
istituire e sfidare il quadro
da una prospettiva che non aveva
trattare prima da così da un quadro
prospettiva progettuale che fondamentalmente mettiamo
noi stessi fuori dalla zona di comfort lì
era la struttura di primavera per annotare con a
forte annotazione basata sull’uso tradizionale
architettura web basata su model server
MVC primaverile basato su server tutto bene e
ottimo diritto molto popolare ora noi
non ha avuto realmente una pressione immediata
fare qualcosa a riguardo stavamo provando
forzarci a fare un passo indietro
e vediamo solo quanto del nostro framework
architettura del nostro framework
accordo che abbiamo anche qui
essere utile in un diverso modello di utilizzo in
subito
miglior modello di utilizzo in un modello usato con
pochissima riflessione coinvolta in una di
corso modello di utilizzo reattivo possibilmente
proprio con un edificio reattivo web
endpoint siamo in un fatto con un funzionale
L’API è in fin dei conti molto diversa
dalla costruzione di web basati su servlet
endpoint in un utilizzo basato sull’annotazione
il modello a quel livello è molto diverso
uno o due livelli al di sotto di mm-hmm un sacco di
la funzionalità di base del framework si trasforma
essere molto e immediatamente utile in
entrambi i tipi di scenari questo non è così
insolito come potrebbe apparire qui siamo stati
facendo questo prima abbiamo avuto base groovy
definizioni di travi che abbiamo avuto a
registrazione basata su metadati programmatici
modello per il più lungo tempo che abbiamo sempre
aveva modelli di configurazione alternativi
l’utilizzo alternativo modella la differenza
ecco che abbiamo visto un potenziale per bene
forse non necessariamente per governare il
mainstream ma un potenziale per molto
porzione significativa di applicazione
architetture là fuori che beneficiano
questo modello di utilizzo abbastanza diverso il
lo stile di registrazione funzionale qui è
in definitiva funzionale come in Java è
funzionale, quindi questo è giusto
indicativo fondamentalmente di ciò che puoi fare
ma per quelli di voi un po ‘familiari
forse con la primavera bene potrei davvero
è un buon punto di domanda
chi ha familiarità con la primavera in generale
quindi conosci il contesto applicativo generico
forse hai visto la lezione prima che sia
bello sapere così c’è un sacco di
API che in realtà ha come 10 anni e
Il conto alla rovescia tipo di essere messo
in una posizione diversa qui generica
il contesto applicativo era sempre lì ma
era un po ‘una nicchia
cosa se si voleva ridurre il cestino
definizioni solo sono se stessi più per
integratori quindi per chiunque altro davvero
ora nel quadro di primavera 5 riceve
qualche nuova registrazione di convenienza
metodi lungo le linee di quello che hanno fatto
con raccolte Java e flussi Java
Stream di raccolta Java in Java otto
molto ispirato all’API funzionale
linguaggio di progettazione in Java 8 che anche
mezzi naturalmente progettati per l’uso con
espressioni lambda e riferimenti al metodo
in Java 8 è esattamente quello che è iniziato
apparire a molti livelli attraverso il
quadro e in particolare qui per
scopi di registrazione di base quindi cosa siamo
fare qui è essenzialmente giusto
registrando due componenti uno di loro
con regole di costruzione predefinite e il
altro da costruire con un lambda in linea
espressione lo chiamiamo questo
il fornitore di istanza è essenzialmente H
è letteralmente una funzione di utilità Java
fornitore Java otto fornitore che noi
ti ho inviato ogni volta che abbiamo bisogno di un nuovo
istanza di questa classe è il contenitore
ancora responsabile del ciclo di vita, quindi questo
questo semanticamente tutto questo funziona all’interno
il modello a molla con questo
è persino supportato dalle definizioni dei bean
può ancora processi remoti su tutti loro
dell’infrastruttura si applica ancora ma
se ti esprimi in questo modo il
il contenitore è molto profondo e immediato
supporto per quello che stai facendo qui così noi
non stanno cercando di adattare questo non c’è
riflesso coinvolto c’è una scala
spedire a questo fornitore istantaneo
callback che stai fornendo
in pratica stiamo tagliando direttamente a
non guarda nemmeno i costruttori
o facendo qualche riflessione intorno a questo
classe questo può essere regolato bene così c’è
l’ idea qui è che questo modello
cresce piacevolmente con le tue esigenze se
vuoi essere un po ‘ più specifico
come impostazione e pigro bandiera iniziale o
fornendo un tipo di controllo di più
disposizione di configurazione fine-tuned
è lì per servirti c’è un VAR
arco che chiamiamo definizione del raggio
personalizzazioni ulteriormente lambda a una linea
espressioni che arrivano in virgola lambda
coma lambda
quaggiù quanti ne hai bisogno di te
ricevi qui
la buona vecchia definizione di peen che consente
per trovargli la configurazione dietro
in questa variante del modello di utilizzo
non c’è elaborazione di annotazioni
successo proprio così c’è a meno che tu
scegliere di iniziare con la configurazione delle annotazioni
contesto applicativo qui che è a
sottoclasse di questo
non è attiva l’elaborazione delle annotazioni
non stiamo nemmeno guardando le annotazioni
non stiamo nemmeno cercando così
questo è abbastanza diverso da quello
prospettiva l’idea qui è quella per a
accordo controllato molto minimale con
solo un numero di componenti forse no
due ma dicono una dozzina di componenti dieci
dodici quindici componenti per quelli
tipi di configurazioni che potresti ancora essere in grado di
esprimiti su una pagina sul
schermo nessun metadata esterno nessuna classe
metadati a livello sia
a meno che tu non scelga di farlo , questo è un
la prospettiva piuttosto estrema è così
il punto intero che cerchiamo di mettere noi stessi
in una prospettiva più estrema in ordine
sfidare noi stessi e sfidare
la struttura sottostante deve essere perfettamente
utile e non fare alcuna assurdità in questo
tipo di prospettiva estrema proprio così
è anche una sorta di prospettiva
ci consente di ottimizzare il framework per
questo tipo di modello di utilizzo la combinazione
di registrazione funzionale con
transazioni basate su annotazioni anche
l’iniezione basata sull’annotazione è ancora
perfettamente possibile tutti quei pezzi
tutte queste caratteristiche si mescolano bene e
partita ma dovresti essere in grado di usarli
anche da soli questo è molto
molto la buona vecchia tradizione di primavera
di diversi modelli di utilizzo ma di miscelazione e
corrispondenza ad ogni livello
ora non ho ancora citato il cotone
il linguaggio del cotone è anche un forte
ispirazione per quello che stiamo facendo
primavera per il marchio cinque cotone Lina è un
una specie di contendente in Java
lo spazio linguistico ha portato un sacco di pollici
molte caratteristiche interessanti a modo nostro
ancora una volta il mio modo di vedere
il modo in cui lo vediamo in in primavera
il team open-source è principalmente un
l’ispirazione ci sono caratteristiche linguistiche
in alcune convenzioni API in Kotlin
quel surf è una grande fonte d’ispirazione per noi
come progettisti di framework che permettono di gentil
di evolvere il framework al
quadri api è in un modo in cui
diventa un cittadino naturale in un accoppiamento
accordo abbiamo iniziato la nostra iniziale
tentativi nel mezzo della primavera
Quadro cinque miglia non affrontare e
abbastanza tardi nel gioco, abbiamo deciso di
rotolare il supporto di prima classe per Kotlin
proprio in primavera filmico 5 proprio a
prodotto immediatamente questo non è
totalmente inusuale con cui abbiamo fatto questo
con groovy e il framework di Grails dieci
anni prima giusto ma ora lo stiamo facendo
con cotone specificamente e questi
questi frammenti che ho visto
prima qui sono ora espressi in Kotlin
in due modi diversi, quindi questo è un po ‘
la versione Java ovviamente questo è
essenzialmente lo stesso modello di utilizzo e te
un nuovo contesto di applicazione generico a foo
classe abbiamo registrato una componente alimentare
attorno alla classe foo registrata con
convenzioni di default e aa bar class
registrato con un fornitore di istanza ma
ci sono un paio di notevoli
differenze nella versione di Java che avevamo
per dire che registriamo un componente di tipo
classe d’arte e qui c’è l’ istanza
fornitore perché nel modello Java otto
per le espressioni lambda abbiamo no
modo di inferire il tipo di ritorno da a
espressione di lambda o metodo di riferimento noi
semplicemente non sanno cosa si sta costruendo la sua
fondamentalmente potrebbe essere qualsiasi oggetto così tu
devi specificare il componente reale
scrivi separatamente quello che stiamo facendo qui
quello che stiamo applicando qui non è un Java 8
espressione lambda è qualcosa di simile
è una funzione di cotone e ciò che siamo
chiamare qui su un’applicazione generica
il contesto non è la stessa versione
che stiamo chiamando nell’esempio Java
stiamo chiamando una versione sovraccaricata che
prende una funzione Kay e il cotone Kay
la funzione ci consente di dedurre attendibilmente il
restituire il tipo di tale funzione in modo tale da
fornendo una funzione Kay, lo sappiamo
questo è
producendo un’istanza di classe di baratto così
non c’è bisogno che tu ripeta
te stesso, quindi stiamo facendo uso dell’accoppiamento
convenzioni linguistiche e taglio
caratteristiche di riflessione Curtin ha il suo
API di riflessione per arrivare a
più conveniente meno ripetitivo
modello di registrazione come noi
tecnicamente realizzare questo tipo di
la disposizione è attraverso l’ accoppiamento
estensioni quindi se si scarica la molla
filmico 5 allora quello che ottieni è lo stesso
tipo di sistemazione vaso che tu sempre
aveva come il contesto primaverile crudo ecc. quelli
i vasetti standard vengono con il cotone
estensioni per esempio generiche
contesto applicativo viene fornito con un generico
estensioni di contesto dell’applicazione punto kt
file nello stesso jar il compilatore Java
ignora totalmente il file che non ha
anche prendere prendere nota di esso il
compilatore coddling per convenzione sa
che quelle sono funzioni di estensione per
il contesto applicativo generico Java
digita così se consumi la nostra primavera
Versione Framework 5 di generico
contesto applicativo attraverso il taglio
compilatore hai un ulteriore
metodi aggiuntivi mostrati sul
stesso tipo di sovraccarichi aggiuntivi che voi
può usare qui questo è essenzialmente ciò che noi
sono ciò che stiamo facendo in modo molto preciso
versione di evoluzione di generico in evoluzione
contesto applicativo questo è solo il
Alla base di questo c’è un po ‘
costruito intorno a DSL di cotone di livello superiore
abbiamo un nuovo progetto chiamato spring foo
cercando di cercare di andare ancora oltre
per la codifica essenzialmente basata più
architetture orientate ai micro servizi
con alcuni endpoint ma questo è il
il fondamento di tutto questo è anche a
piccola svolta non troppo importante per il nostro
trama oggi questo è essenzialmente il
stesso codice ma facendo uso di Kotlin
variazioni delle bevande linguistiche di in
allineare le ricchezze ai culti di fagioli che siamo
solo facendo uso delle convenzioni del cotone
stiamo chiamando gli stessi metodi di
prima, ma il compilatore di cotone ‘n consente
noi per esprimerci in questo modo e il
altra differenza è la linea
i generici Kotlin ha raffinato
quindi se si specifica in base al
Le convenzioni di Coughlin sono di tipo generico
qui possiamo anche dedurlo in modo affidabile
tipo generico non è necessario passarlo
in una discussione a tutti noi fondamentalmente
sai cosa intendi tu specifichi il
tipo di destinazione attraverso una tosse in generico
con il mio piccolo nome qui è un voto di
stile questo stile Gradle che non è un
il nome ufficiale è così grande stile di utilizzo
solo il mio nome personale per questo
perché come puoi conoscere la build di Gradle
lo strumento ha un Kotlin DSL ha un groovy
DSL tradizionalmente ha un cotone DSL come
bene ora e lo stile Gradle DSL ha
una specie di sentimento simile ad esso
Gradalo tu stesso
è essenzialmente solo un linguaggio di cotone
caratteristica applicata tanto per il
parti funzionali una breve nota sul
a proposito di tutto l’accordo con Webb
flusso e il web reattivo impilano la strada
abbiamo scelto di evolvere ciò che è diventato
Spring Framework 5
non era così ovvio quando abbiamo iniziato
immagina di avere una struttura primaverile
perché abbiamo lo stack web basato sui soviet
stiamo cercando di consentire la rete reattiva
architetture che cosa stiamo cercando di fare
stiamo andando a refactoring primavera MVC sono
introdurremo le astrazioni in questo modo
servire sia per il server che per il
il pozzo reattivo in realtà non ci vola
non andava davvero da nessuna parte con quello
linea di pensiero il modo in cui siamo finiti
introducendo architetture web reattive
le architetture nel nostro stack sono attraverso a
modulo separato essenzialmente un separato
stack web se guardi la primavera da AK
5 c’è un’arma di primavera che vediamo come il
web tradizionale del modulo web basato su servlet
strato e il flusso del web della molla come a
Accanto allo stack web basato sul reattore reattivo
è essenzialmente due stack di web loro
condividere un sacco di comunanza dove loro
tecnicamente ha senso condividere il
stesse annotazioni di mappatura ne condividono alcune
della stessa giornata di architettura vincolante
loro condividono parecchie utilità
sotto ma sono puri
nella loro servlet base natura e in
la loro natura reattiva che stiamo cercando di fare
consentire a entrambe le pile di esporre il
caratteristiche sottostanti il ​​sottostante
la forza è il potere di base di
le loro domande molto immediatamente no
essere costretti da astrazioni extra
lungo la strada così primavera Web MVC primavera
MVC in Spring Framework 5 è ancora il
buon vecchio ap sovietico può tipo di un
evoluzione del web basato su API servlet
quadro che hai usato per questo
molti anni i tappi web a molla parallela
il mazzo è una specie di web diverso
Architettura con una sensazione molla in
il suo modello di utilizzo ma diverso
convenzioni diversi compromessi
sotto le coperte
non ci sono API servlet qui c’è a
basato su astrazione reattiva basata sull’astrazione
su una libreria reattiva di base chiamata
Reattore di progetto che è essenzialmente a
tipo di server moderno orientato
variante di Java di Eric che dove il
squadra reattore è in gran parte ha avuto
tipo di un progetto gemello del nostro e di noi
adattare i motori di DP HT di Kernel bagnato
sotto le copertine per così il
lo stack MVC a molla tradizionale funziona su a
contenitore servlet come su target o
cheerio WebSphere, qualunque sia la primavera bagnata
flusso può funzionare su Nettie come il tipo di
il più potente stack di rete che abbiamo
là fuori nell’industria Java, ma è così
può anche essere adattato per dire Tomcat jetty
e il rimorchio ai motori HTTP principali
in Tomcat sfida al traino così sopra
qui non stiamo usando Tomcat e Sherea
contenitori servlet li stiamo usando come
servizio web e server web
naturalmente in grado di lavorare in un in
sorta di architettura reattiva perché se
lo guardi è davvero il servlet
API che è l’insolita astrazione
sotto le coperte il networking
stack basato su socket IO del sistema operativo
programmare tutte queste cose sono
asincrono e callback basati da
natura l’API servlet è l’innaturale
astrazione molto comoda che abbiamo
usato ad esso molti punti di forza
infrarossi collegato all’intera richiesta
ha i suoi benefici ovviamente ma
le stringhe reattive sono una specie di altro
vincolante diretto al modo in cui il
l’architettura di rete sottostante funziona così
ovviamente questo è un argomento molto più ampio
se volete saperne di più su la la
motivazione dietro questo ci sono alcuni
grandi chiacchiere della mia collega Roslyn
su Jeff su YouTube a proposito del nostro
motivazione nel nostro approccio progettuale qui
solo per avvolgere tutto questo fino a a solo un
selezione di impressioni questo è un bagnato
controller con endpoint reattivi
al linguaggio del design sembra ancora molto
molto simile a un controller MVC a molla ma esso
non è che restituisce flussi reattivi
pubblica il flusso è un editore
variante dal reattore di progetto per a
flusso di elementi un flusso reattivo di
elementi mono è un singolo elemento o non
capace di produrlo ogni volta che è necessario
è fondamentalmente un gasdotto per la costruzione
la risposta il corpo della risposta ogni volta
lo stack in fase di runtime è pronto per essere compilato
così quei metodi in realtà non lo fanno
elaborare una richiesta che restituiscono una ricetta
per come elaborare la richiesta ed è
il sistema runtime il runtime reattivo
sistema incaricato di attivare il prossimo
passo in quella pipeline di elaborazione
ogni volta che la configurazione di rete è pronta
quando i dati sono pronti senza mai
bloccando una minaccia è totalmente non
bloccando la contropressione dell’architettura
guidato nel senso che sa quando
che fondamentalmente sa quando i nuovi dati
arriva c’è un grado di controllo basso
tra i diversi componenti del
impilare sotto di esso
copertine e come puoi immaginare che io possa avere
immaginato c’è una versione funzionale di
così pure
è possibile registrare gli stessi endpoint
esprimendo te stesso con un Rx Java come
Endpoint di costruzione API e
registrandoli programmaticamente con a
motore HTTP di destinazione questo è ora abbastanza
diverso
da quello che penseresti come un
punto arma di primavera così alla fine noi
preso questo abbastanza lontano tutto questo è
già in Spring Framework 5-2 però
siamo a Spring Framework 5.1 nel
nel frattempo sono stati rilasciati solo un paio di
settimane fa, quindi dove puoi, naturalmente
può usare per continuare a usare la struttura di primavera
e lo stivale primaverile in particolare la via
li usavi proprio lì
il modello basato sull’annotazione è ancora il
modello di componente mainstream il
endpoint Web basati su annotazione su
spring web MVC sulla pila di servlet
quelli è questo è ancora del mainstream
modello di utilizzo ma ora come una specie di an
opzione uno strumento nella tua casella degli strumenti che puoi
scegliere di utilizzare la registrazione funzionale
puoi scegliere di utilizzare lo stack web reattivo
invece all’interno della stessa struttura
accordo con molta comunanza così
stiamo davvero cercando di abbassare il livello
ingresso in modelli di utilizzo alternativi ma
stiamo anche cercando di farne parte
la solita storia
in modo che tu non stia scegliendo tra
un framework basato su server tradizionale e
un quadro totalmente diverso per
architetture reattive puoi fondamentalmente
utilizzare varianti dello stesso framework per
qualsiasi variante della pila che si sceglie
quindi questo è il nostro modo di evolvere il
quadro nei tempi moderni abbastanza
eccitanti moderni volte mi posso aggiungere qui
perché sta succedendo un sacco di cose
intorno a noi al momento, ma siamo pronti
la sfida giusta siamo già
stato l’evoluzione di questo quadro per 15
anni quasi 16 anni e conteggio e
dove siamo molto in alto per il
sfida di renderlo pronto per il
la prossima fase dell’evoluzione è questa
fondamentalmente una continuazione di ciò che noi
iniziato nella primavera del quadro sopra il 5
prossimi anni
va bene questo è praticamente il
trama che ho avuto per te oggi
quindi grazie per la vostra attenzione fino ad ora, se
ci sono delle domande che sono felice di fare
prendili, potresti averli domandati sul
sì sì o semplicemente vieni su
qui al palco sono in giro giusto se
vuoi avere qualsiasi
conversazioni su questo quindi se
hai già avuto familiarità con alcuni
parti di questa storia o no, spero che tu
goduto un po ‘del viaggio un viaggio
giù la corsia di memoria e allo stesso tempo
forse visto anche il modo in cui stiamo andando
gestire l’immediato futuro per quello che è
arrivando in primavera qui grazie
[Applausi]

Please follow and like us: