Press "Enter" to skip to content

GOTO 2017 • Real World Java 9 • Trisha Gee


[Musica]
ciao ed è davvero bello essere di nuovo dentro
Amsterdam, la prima volta che ero qui, l’avrei fatto
andare ad Amsterdam era circa il mio terzo di sempre
presentazione quindi ero follemente nervoso
e ora non sono follemente nervoso, ma io
probabilmente dovrebbe essere amichevole
ciao sono sicuro che lavoro per JetBrains
Io sono l’avvocato per idea intelligente
e su fonte e che tipo di
significa che ho creato fino ad oggi
cosa sta succedendo nel mondo di Java e
in particolare, ovviamente, la grande novità di
il momento è Java 9, quindi il mio lavoro oggi è
per provare e vedere come Java 9
le caratteristiche influenzeranno le probabilità come Java
sviluppatori e quali potremmo
in realtà uso nella vita reale, quindi stiamo andando
per andare oltre il puzzle in azione così davvero
Non volevo parlare di puzzle
perché ognuno sta per connettersi
puzzle tutto l’anno quest’anno per Java 9 e
è come l’ elemento del biglietto grande e no
dillo a qualcuno ma non penso sia molto
eccitante quindi non volevo davvero parlare
A proposito di puzzle ma ho fatto li ho provato
fuori così voglio parlare del dolore
di usare la modularità in Java e chi
sa di puzzle, finora nessuno un mucchio
di te va bene, ti sto solo controllando
i nostri programmatori Java hanno ragione
eccellente
Spero di usare Java 8 oh mio dio è così
come tutti voi questo è veramente buono
sei esattamente il pubblico giusto per
questo discorso parlerò del puzzle
anche se in realtà non volevo così
passeremo sopra e l’originale
obiettivo di questa presentazione era parlare
sulla programmazione reattiva in Java 9
La ragione è che il reattore scorre
L’API è incorporata in una lingua in Java 9
quindi voglio vedere questo grande reattivo
cosa di programmazione ma risulta
ci sono così tante funzionalità in Java 9
non c’è molto tempo per tutti
di quello, quindi cercheremo di capirlo
sembra ma non entreremo in esso in un
molti dettagli e poi parleremo
tutte le altre cose in Java 9 ora no
tutto ciò solo i bit che sono
interessante quindi se si decide di
migrare a Java 9 non farlo ancora
ma se lo vuoi, allora stai andando
per avere bisogno di alcuni argomenti sul perché perché usarlo
Java 9 ora i ragazzi di Oracle in particolare
hanno lavorato molto duramente come al solito su
l’ ultima versione di Java quindi non lo è
appena
aggiungendo la modularità ci sono un sacco di simili
roba gratis come prestazioni migliori
migliore utilizzo della CPU
documentazione migliore grafica blah blah
bla così anche se non usi nessuno dei
Funzionalità Java 9 che otterrai
miglioramenti probabilmente se si utilizza Java 9
le diapositive saranno disponibili in seguito
così e questo discorso non arriva mai a
50 minuti in modo ho intenzione di parlare davvero
veloce
Mi scuso e salta un mucchio di
diapositive quindi se sei interessato a
dettaglio puoi mettere le diapositive dopo e
ovviamente il jigsaw fa parte di Java 9 tu
potrebbe aver sentito come una novità che è stata ascoltata
del repple in Java 9 carichi di voi che
ha sentito parlare di un riferimento in generale o usato
uno va bene così la lotta per gli altri Java
gli sviluppatori penso che la pace sia a
equamente è un’idea molto nuova, quindi consente
noi per provare le cose dal comando
linea in modo che possiamo digitare come una singola linea
di codice e farlo eseguire per
Java è molto eccitante, non devi
avere un’intera classe con statica pubblica
vuoto principale o qualsiasi altra assurdità
non è necessario creare interi file di test
solo per creare un po ‘
piccola prova Smith di codice che puoi fare
quello dal record e il repple è
andando a far parte di Java 9 non lo siamo
andando a coprire molto di questo perché
è una specie di grande argomento a sé stante
anche così se pensi a Java
9 hai sentito parlare di puzzle di cui senti parlare
il rappresentante o forse e tu non davvero
sapere se c’è altro in Java 9
questo è particolarmente eccitante per noi come
Sviluppatori Java ma si scopre che
sono solo una o due altre funzionalità
andato in Java 9 si trova un paio e alcuni
di questi non vedrai c’è molto
roba sotto le coperte ne ho menzionate alcune
dei miglioramenti delle prestazioni ci sono
cose come hanno scritto test delle prestazioni
per il JDK stesso e c’è un sacco di
materiale infrastrutturale che è andato su quello
non necessariamente non sono caratteristiche
che useremo ma si spera
ci impatto in termini di un migliore JDK a
JVM migliore ma ci sono cose qui
che non avremo sentito parlare di piccoli
caratteristiche che voglio coprire in questo
parlare mi piace sempre impostare il
aspettative adeguatamente basse, quindi non farlo
mettere Java 9 in produzione non è
ancora pronto
che non è ancora uscito di recente erano
dicendo che sarà ora a luglio
stanno proponendo settembre quindi non lo è
fuori ancora però puoi provare l’EA
versione di ciò che faccio altamente
raccomandare ma è in evoluzione e
ancora in evoluzione fino al punto che anche
le API continuano a cambiare, quindi ogni API
si comporterà che HEA si comporterà leggermente
in modo diverso ho appena aggiornato questa demo
dalla build 166 che ho usato all’inizio
quest’anno per costruire 173 e ci sono
cambiamenti in quelli in quelle build e il
altra cosa di accesso anticipato è IntelliJ
IDEA quindi sto usando IntelliJ IDEA 2017
puntare a EAP che è come sempre questo ApS
un’esperienza interessante e qualche volta
si schianta in modo orribile, così come dico di impostare
aspettative adeguatamente basse ma il
Punto 2017 per EAP ha un sacco di puzzle
caratteristiche che voglio davvero dimostrare così
Devo usare tutto l’accesso anticipato
cose per genere ti mostrano questa roba
il caso di studio e tu puoi o no
ho visto una presentazione precedente che ho fatto
è stato chiamato Java Aiken rabbia e ho scritto
questo è come un’interfaccia utente di effetti Java che
Vedrò se posso mostrarlo a te e ad esso
tipo di reagisce in tempo reale a piacere
Messaggi di Twitter dice come sono felici
o triste sono chi sta facendo di più
tweets e cose del genere e questo era
progettato per mostrare le funzionalità di Java 8
quindi ci sono flussi e lambda e
roba oh no blah blah blah blah blah e
e quello che volevo fare era usare questo
perché è reale è un vero pezzo di
codice è una sorta di codice demo ma è un
vero pezzo di codice e volevo vedere
quanto dolore era migrare verso
Java 9 quali potrebbero essere i vantaggi
useremo questo codice base e
prova e usa alcune delle funzionalità di Java 9
in esso l’altra cosa buona è
sono in qualche modo dove non direi
architettura di micro server perché
non ha un buon servizio micro e
cose come te conoscono l’affidabilità ma è così
ha servizi indipendenti che possono
che sono stati progettati per passare i messaggi
tra di loro quindi questa architettura funziona
abbastanza bene per i paradigmi reattivi
quindi questa è un’altra ragione per cui volevo
usa questo case study se sei interessato
nel case study originale poi vai via
e guarda il video di quello che non sono
andando a fare qualsiasi dello sfondo su
questo assolutamente perché è solo uno spreco
di tempo ci sono un sacco di video su questo
già come ho detto, andrò abbastanza
velocemente
per prima cosa compilare con Java 9, se lo hai
sentito qualcosa su Java 9 è
probabilmente questo succederà
rompere ciò non è strettamente vero ma lì
ci sono molti cambiamenti che possono avere un impatto
il codice in modo che la prima cosa che ho voluto
fare è stato compilare la mia applicazione Java 8 in
Java 9 e e vedere quali interruzioni quindi facciamo
vai avanti e fallo
ok, quindi passiamo a un
ramo appropriato che ha ottenuto quale
è il mio codice originale quindi questo è il mio se io
compilare questo costruiamo l’intero progetto
questo è il mio originale sviluppo del codice Java 8
sulla build 173 di Java 9 diciamo questo
in modalità presentazione in modo da poterlo vedere
correttamente giusto quindi il primo errore che otteniamo
è che a partire dal rilascio 9 si sottolinea a
la parola chiave non può essere usata come identificatore
questo è qualcosa che ho fatto entrare di nascosto per mostrare
un errore non ho davvero qualcosa
che si chiama underscore si scopre
onestamente, lo prometto, lo risulta
sotto scuola era perfettamente valido
nome del parametro del campo variabile e e
non sta andando avanti ma
ora tutti sanno che è un valido
nome del campo le persone sono come oh che è
abbastanza interessante potrei usarlo
andare via non ne ha bisogno quindi è un
facile correggere qualcosa di utile basta rinominarlo
a qualcos’altro ma se stai usando
sottolinea che non funzionerà più in
Java 8 riceverai un avvertimento al riguardo
quindi dovresti vedere che è qualcosa
non dovresti fare ok cos’altro
succede se ricompongo quindi questo è il
una specie di cosa che avremo sentito
riguardo a noi leggiamo qualcosa su Java 9 il
incapsulamento delle API interne così
tutto ciò che è un miscuglio che noi
non dovrebbe essere stato utilizzato nel primo
posto ma abbiamo fatto perché a volte lì
non era un’alternativa in questo caso io
stava davvero usando questa classe nella mia
Java 8 uno perché ero tipo oh
fa quello che voglio, lo so
non dovrebbe usarlo ma fa cosa
Voglio così ho intenzione di usarlo in ogni caso
che è quello che dobbiamo fare per non poterlo usare
quello più fondamentalmente il compilatore dice
e non è lì ora è lì è
appena nascosto quindi non è possibile accedervi
più
e quindi ho bisogno di sbarazzarmene e
sostituirlo con qualunque cosa
la sostituzione è e in questo caso gira
è abbastanza semplice
Ho bisogno di base 64 Java dot util ottenere il
controller e codici di stringhe ricostruiti
e tutto funzionerà così in generale
parlando se stai usando qualche miss
posizione che è stata in primo luogo
è necessario sostituire quei qualcosa che
ha una sostituzione valida in Java 8 o 9
è documentato in modo da poter vedere ciò che il
sostituzione dovrebbe essere ci sono un paio
di eccezioni che non hanno
le sostituzioni più in particolare alcune mancano o
non sicuro così pericoloso è un caso speciale e
è stato dato che è stato dato
lasciare per continuare a esistere per il tempo
essendo perché non c’è un pieno
sostituzione per non sicuri, ma è un
non dovrebbe usare pericoloso se non lo fai
sai cosa stai facendo comunque
quello che dicono è quello che devo dire
questa è la linea ufficiale e quando l’ho fatto
la mia ultima annotazione qui stavo parlando
riguardo al distruttore e al distruttore
non è sicuro perché deve essere utilizzato
faccia e questo è dove va e
proprio così compilando con Java 9 puoi farlo
trova lì alcune cose che sono rotte
ma probabilmente non così rotto come te
prevista una delle cose che volevo
consiglio è di rilasciare Java 9
JVM nella tua continua integrazione
ambiente e farlo girare e vedere se è così
corre e si scopre che un sacco di CI
i server non supportano ancora Java 9 in questo modo
potrebbe non funzionare quindi potresti sì
scaricalo fallo vedere cosa rompe
jigsaw parliamo un po ‘di puzzle e
perché sai che tutti lo faranno
parliamo di puzzle ora questo è il mio
struttura del progetto originale è modulare
Stavo usando make Gradle plus IntelliJ to
tipo di dividerlo in moduli ho avuto questo
tipo di architettura del tipo di servizio micro
quindi si presta al codice modulare ma
si scopre che quando sono tornato ad esso
in seguito per trasformarlo in una corretta modularità
codice non l’avevo fatto bene chi lo sapeva
quello che ho fatto in quello originale sono io
ha avuto un mod
per il mio codice UI un modulo per il mio condiviso
codice di infrastruttura e il modulo per
tutto il resto tutto il mio back-end
servizi e non ho notato questo con un
problema probabilmente perché NON lo sono
responsabile della distribuzione di questo codice
perché è il codice demo ora se dovessi
distribuirlo come piccoli vasi indipendenti I
probabilmente lo avrei diviso
diversamente
Sono con il jigsaw con il modulo Java
sistema sei costretto a pensare a cosa
stai per dispiegare quali barattoli sei
andando a schierare e come il tuo codice è
occhi modulari come uno sviluppatore che
qualcosa a cui devi pensare
Penso che sia una specie di cosa positiva quindi
quando ho modulare come il mio codice ho finito
con un modulo per il mio codice UI un modulo
per il mio codice di infrastruttura condivisa a
modulo per un’altra utilità e poi tutto
dei miei altri servizi erano indipendenti
moduli quindi era in realtà più corretto
il tipo di puzzle mi costringeva a pensare
su questo più correttamente così l’ho fatto
sbagliato per cominciare, ma non avevo
qualsiasi cosa mi dica davvero che stavo facendo
è sbagliato e quando tu oh sì e il
l’altra cosa è che la grattugia non funziona
in Java 9 ci stanno lavorando e io
continuare a pingarli ogni settimana dicendo è
ha fatto ancora e chi ha ancora fatto Gradle
non funziona in Java 9 lo sarà
lavorando su di esso il problema è che Java 9
si sta muovendo così velocemente che Gradle era
come stiamo solo andando ad aspettare DES
stabilizzare un po ‘ prima di iniziare
cercando di recuperare
Maven funziona, Gradle non lo è
strappare Gradle dal mio progetto groovy
nel momento in cui l’ho scritto per la prima volta
Groovy di febbraio non funzionava con Java
9 Non so se è ora, quindi non posso
dichiari categoricamente così mi sono spogliato
tutti i test di groovy e girali
in J unit 5 test e si scopre
Voglio dire, mi piacciono molto i punti
testare ma quello che ho notato quando ero
usando l’unità J 5, i test sono eseguiti
molto più veloce ora, quindi non sto usando groovy
che è triste ma vero
così come ristrutturare il tutto
progetto ho anche dovuto strappare Gradle a
farlo funzionare e ho dovuto strappare
fantastico per farlo funzionare e poi posso
jigsaw wise my code quindi cosa significa
sei tagliato molto bene ma tu
avere un nuovo file magico chiamato modulo – –
info Java e che definisce i moduli
non definisce solo ciò che il modulo
sembra che dica anche cose come
IntelliJ IDEA che stai utilizzando
in modo da poter accumulare con il percorso del modulo modulo
invece di classpath e questo è dove
tutta la magia accade così la cosa
puzzle sulla modularità che non avevo
davvero realizzato fino a quando ho iniziato a fare il mio
la ricerca è quando usi la modularità
non esiste un percorso di classe
più
era una specie di parte del punto
cerca di sbarazzarti di questo enorme mostro
e cercando di trattare il codice come separato
moduli individuali quindi quando si avvia
utilizzando informazioni modulo Files hai
inizia a utilizzare il centro di passaggio del modulo
classificatore non ho intenzione di entrare
dettagli di questo, ma solo essere a conoscenza
questo perché non conoscevo quella lezione
il percorso era come una cosa del passato è a
dinosauro è morto ma tranne che tu puoi
usa ancora il percorso di classe se lo desideri ancora
usare il percorso di classe e questo fa parte del
il rumore intorno a quando rilasciamo Java
9 che aspetto ha il puzzle di quello che siamo noi
permesso di fare ciò che non ci è permesso
molte persone vogliono ancora usare a
classe non sorprendentemente e il
l’altra cosa è così la mia struttura qui è
Sto usando una struttura in stile grader che
ha il modulo con una fonte
directory e una directory di test e il mio
i test in realtà non hanno un modulo
file perché poi mi sarei diviso
pacchetti attraverso due diversi moduli
c’è un modo per risolvere ciò che non ho fatto
per questa demo ed eseguo il test da
dentro l’IDE quindi non ha impatto su di me
così tanto in movimento per usare un modulare
il sistema era un compito non banale per me
suggerimenti dai demo e roba
dai ragazzi Oracle è quello tuo
la struttura ha una directory sorgente al
livello superiore e i tuoi moduli sono all’interno
la tua fonte e poi hai una prova
sito tra i moduli all’interno di quello che
è quello che ho fatto quando ho migrato per la prima volta ma
è come se ovviamente lo stavo usando
Gradle sarebbe completamente fuori di testa
a tale proposito è completamente diverso
modo di lavorare, ma si può fare il
una sorta di più tradizionale Gradle Maven
modo e funziona ancora va bene bene
quindi stiamo parlando di architettura
scrivi cose così ho pensato di mettere un po ‘di UML
qui ho generato un diagramma usando
IntelliJ perché sono pigro e quello che io
volevo fare è quando stavo iniziando a
dividere il mio progetto in moduli di cui avevo bisogno
capire le mie dipendenze per capire
fuori se ho avuto le cose corrette e si trasforma
fuori non li ho corretti
perché ho il mio codice modulare da due
servizi diversi a
su codice da un altro servizio che
non è giusto può dipendere che può ascoltare
ai messaggi da quel servizio ma esso
non dovrebbe essere riutilizzare il codice da lì io
avere un file jar che viene utilizzato solo da
un particolare modulo che aveva un senso
non ha senso è una API che
non dovrebbe essere stato usato e ho avuto
un reattore trasmette il file jar che era
utilizzato da due diversi moduli che anche
non aveva senso che dovrebbe essere usato
da uno o tutti e così in realtà
mappare le mie dipendenze che tipo di
ho capito che ho progettato la mia applicazione in
un modo un po ‘strano quindi l’ ho ridisegnato
quindi tutti i miei servizi sono ora allo stesso livello
livello non dipendono l’uno dall’altro
codice saggio che è la cosa giusta loro
dipende dalla mia infrastruttura riutilizzabile
codice e dipendono solo dal mio
utility e tutti i miei servizi di back-end
dipende da questa utilità dei flussi del reattore
e due dei miei servizi si preoccupano di uno
implementazione reattiva e un altro
si preoccupa di una reazione diversa
implementazione l’idea è che
Sto usando reagire così flussi API così io
non importa delle implementazioni in
i servizi indipendenti e così è
il diagramma delle dipendenze di cui stavo parlando
sulla nostra intelligenza e sui nostri file jar
questo non è lo stesso di un JDK
diagramma del modulo, quindi se guardiamo uno di
questi moduli al client il modulo UI
diamo un’occhiata a ciò che il diagramma del modulo
sembra che questo sia abbastanza simile a
modo diverso di guardare le cose così mie
il client usa gli effetti Java così è
dipende da un numero di Java FX
moduli dal JDK specificamente FX ml
controlli e base Java X e puoi vedere
là tutte le dipendenze all’interno vi
di tutti i moduli da cui dipendono
tutti quelli gialli sono all’interno del JDK
se stesso e il punto sulla modularità è
che non devi usare l’intero JDK
devi solo definire quali bit vuoi
utilizzare ecco devo dire che voglio usare
questi specifici bit di Java FX e
apparentemente questo avrà tutti questi
altre dipendenze il mio back-end e
il modulo di servizio dipende dal file jar
che non è stato modularizzato così
non sembra carino come il jdk
dipendenze cosa succede quando tu
quando dipendi da un file jar
che non è stato modularizzato come si ottiene
trasformato in qualcosa chiamato un
modulo automatico e questo è qualcosa
altrimenti le persone stanno discutendo su cosa
i moduli automatici assomigliano a cosa
dovrebbe il nome essere come funzionano e
in questo caso sono dipendente da un vaso
file che è il server WebSocket
impulso e questo si traduce in tre
diversi moduli automatici perché è
in base al nome del pacchetto, quindi se c’è
qualcosa di cui essere consapevole di come c’è
non una mappatura uno-a-uno tra il
idea di un modulo e il vaso e e il
il punto qui è che i moduli jdk lì
sono un sacco di loro e si deve
capire come funziona anche questo nuovo e
questo diagramma del modulo è nuovo in IntelliJ
IDEA 2017 punto due quindi mi piacerebbe
mettersi in mostra ma è abbastanza utile
quando inizi a iniziare
con il puzzle per capire il
l’architettura è abbastanza utile ovviamente
disegnare questo per capire cosa
hai così puoi vedere se sei se
corrisponde alle tue aspettative così date
tutto ciò che avrebbe dovuto preamboli
prendere cinque minuti e non lo facciamo
guarda cosa succede se vogliamo
crea un file di informazioni sul modulo quindi diamo un’occhiata
a questo da un codice da uno sviluppatore
punto di vista e vedere come è difficile
È davvero ho intenzione di passare alla
ramo giusto
quindi quello che ho qui hmm ho il mio mio
diversi moduli la maggior parte di questi hanno a
informazioni sul modulo già ho un modulo
che non hanno uno così stiamo andando a
ne creo uno per questo modulo, ovviamente lo sono
andando a fare l’IDE farlo per me
perché sono veramente pigro e una volta che inizio
facendo ciò quando compilo come sono
menzionato prima il modo in cui il
il lavoro del compilatore ora è diverso , non lo è
dipende da tutto il codice sulla classe
percorso devi iniziare a definire il
moduli che ti interessano quindi se noi
dare un’occhiata a questa classe per esempio
in precedenza dipendevo da Java
util lager e che andava bene e
quello funziona e lo ha compilato e ora lo sono
ho aggiunto solo una cosa che ho aggiunto
modulo informazioni sul file ora non più
compila e sembra strano
ma è perché è necessario
in particolare dichiari di sapere che sei
usando il modulo Java logging quindi se lo facciamo
aggiungo che lascia che ti mostri le informazioni sul mio modulo
dobbiamo dire che abbiamo bisogno di punti Java
registrando per impostazione predefinita ciò che otteniamo non lo faccio
devo dire questo ti mostrerò solo cosa
sembra che di default otterremo
richiede Java dot base che non è necessario
dillo e la base doc di Java ha cose
come Java dot util e la maggior parte di base
roba che usi tutto il tempo così tu
non devo dire che ne hai bisogno per
qualsiasi altra cosa al di fuori della base
modulo di base del pacchetto è necessario
dichiari esplicitamente che sei dipendente
su un modulo diverso, quindi in questo caso
Java dot logging e l’altra cosa io
ho bisogno è sto usando un file jar esterno
Sto usando reagire ai flussi, quindi ho bisogno di farlo
dire al file di informazioni del modulo da cercare
quei moduli anche se non lo sono
moduli reali quindi qui dico che richiede
flussi reattivi se mi avvicino a
quella
eccoci che si sta caricando che significa
sta usando questo file jar qui bene così
la cosa buona è che l’IDE può fare molto
del pesante sollevamento per te se lo sei
non appassionato all’idea di fare sollevamento pesi
per te puoi usare uno strumento chiamato J dips
che analizzerà le tue dipendenze e
ti dirà quali moduli sei
a seconda e poi puoi fondamentalmente
copia incolla tutti quei moduli nel tuo
nel tuo file intro del modulo e poi esso
dovrebbe funzionare
Credo che tu possa usare J dips per generare
il tuo file di informazioni sul modulo ma non l’ho fatto io
non potevo farlo funzionare l’ultima volta
provato penso che potrebbe essere in una versione
questo non è ancora uscito e quindi in realtà costruito
qual è l’altro errore che abbiamo
ora se voglio usare il modulo di flusso
da un altro modulo questo è il modulo
il flusso non esporta il pacchetto send
interrompere il flusso in modo che se voglio il mio modulo
essere usato da altre persone che presumibilmente
Lo faccio perché ho creato il modulo di cui ho bisogno
per dire cosa esporto, quindi vado a
esportare solo quel pacchetto cosa significa
è questo il punto centrale della modularità
è quello di consentire di incapsulare il codice
quindi quello che potrei avere è se lo facessi
aveva un altro pacchetto qui diciamo nuovo
pacchetto se avessi un pacchetto di importazione I
non volevo che tu accedessi, allora no
esportare il pacchetto di importazione e non è possibile
fare qualsiasi cosa con esso non è possibile accedervi
così tutti i miei dettagli interni sono nascosti
lontano da te e questo è il punto di
il jigsaw non è solo lo sputo
il tuo codice ma nascondendo cose che tu
non voglio che le persone vedano bene così
parliamo del dolore del movimento
in particolare per il puzzle e alcuni
potrebbe essere necessaria una riorganizzazione strutturale
non tanto quanto ho inizialmente ho pensato
non ha dovuto ristrutturare tutto per
seguire il modo JDK di fare cose I
può ancora continuare ad avere moduli in a
Struttura in stile gradle ma dovevo farlo
fare qualche riorganizzazione strutturale ma
questo è in gran parte perché non ero stato
progettando la mia applicazione in un modulare
per cominciare, quindi è un po ‘mio
colpa per non averlo fatto nel modo giusto
il primo posto e questo progetto no
costruire la riga di comando perché non ho
Gradle, porto fuori Gradle così
tutto è fatto attraverso l’IDE tutto
le dipendenze sono gestite attraverso il
IDE eseguire i test viene fatto attraverso
l’IDE quindi non è super -mondo
applicazione voglio provarlo
spero di vedere se funziona correttamente
il supporto IDE per nuove funzionalità
in particolare il jigsaw ma roba Java 9 è
non abbastanza maturo come lo è per gli altri
roba e così hai potuto vedere che potevo
aggiungi moduli nel mio file info del modulo ma
Non posso generare il mio file di informazioni sul modulo I
impossibile generare la dichiarazione delle esportazioni
eppure, quindi, questa roba sta arrivando
stiamo lavorando su di esso abbiamo problemi
per tutto questo ma mu4 jigsaw
in particolare si tratta di una buona idea
capire cosa sta succedendo sotto il
coperture
in modo che tu sappia cosa fare è un raw
livello perché l’IDE non può risolvere
tutto per te e fai se vuoi
utilizzare il puzzle se si desidera utilizzare
modularità devi davvero fare il tuo
compiti a casa ho fatto un sacco di forza bruta
cercando di capire quale sia il mio modulo
i file sembrano lasciati mostrarti un
esempio quindi non ti mostro gli altri
diamo un’occhiata al client uno questo modulo
info I brute force mi fanno strada attraverso questo
quindi ho praticamente risolto tutte le mie compilation
errori che il compilatore Java ti darà
messaggi utili come devi dipendere
su questo modulo o è necessario esportare
che così ti dice cosa c’è che non va
ma ci vuole solo un po ‘di tempo per la forza bruta
la tua strada attraverso questo oltre ad alcuni dei
gli errori arrivano solo quando inizi a
runtime non solo al momento della compilazione quindi
non farlo a modo mio perché ci sono voluti circa
due giorni per farlo
corri jada e scopri come funzionano le punte J
Ero veramente pigro che non riuscivo a capire
come ottenere i suggerimenti J a lavorare così ero
come oh quanto può essere difficile due giorni
più tardi e dovremmo solo capire come
usare J dibs
quindi leggi il manuale e altrimenti
lui sarà completamente perso soprattutto questa
differenza tra percorso del modulo e classe
percorso che in realtà mi ha fermato
essere in grado di eseguire consigli J perché io
necessario un percorso del modulo non un percorso di classe
i vantaggi si ottiene un addetto alle pulizie
progetta è meglio il design è meglio
incapsulamento migliore separazione di
preoccupazioni e tu ottieni non ne sono sicuro
schierabili è una parola e tu puoi
potenzialmente rendere il codice che tu
distribuire i file jar più piccoli che possono
essere una buona cosa in particolare nella IOT
mondi forse in cloud, se sei come
pagando per byte non lo so ma può
per l’implementazione di coder più piccoli
probabilmente la maggior parte delle applicazioni in particolare
applicazioni aziendali che saranno gentili
di correre sul posto non li penso
i benefici valgono il dolore
certamente non subito il
cosa importante sapere se sei tu
non devi usare il jigsaw per usare Java 9
questo è tutto opzionale quindi se non lo usi
jigsaw non aggiungi informazioni sul modulo che sei
usando ancora il percorso di classe sei ancora
lavorare con i file jar come hai usato tu
a tutto dovrebbe funzionare come te
aspetto che lo faccia
quindi non andare giù per il puzzle solo
perché pensi che dovresti perché tu
non devo e non lo consiglio
o
giusto parliamo un po ‘di ap reattivo
Ho 20 minuti a jigsaw okay ciao
parliamo un po ‘ dell’API reattiva
nel mondo Java o nel mondo JVM non lo è
solo Java abbiamo come reagire
Streaming API per un po ‘di tempo in 1.0
e l’API dei flussi reattori ha la maggior parte
importante un editore e abbonato
e ha anche un processore che è
entrambe le cose combinate e a
abbonamento per aiutarti a gestire il tuo
abbonamenti e quindi ci sono molti
implementazioni come c’è il reattore attore
rx Java vertice un sacco di cose come
così se stai usando un reattivo
libreria di flussi è la maggior parte di loro piace
rx Java 2.0 in poi supporterà il
API reattive reattive si scopre che
i ragazzi Java pensato che questo è
abbastanza importante da costruirlo davvero
nella loro lingua così il reattore
l’ API di streaming è parte di Java 9 e lo è
non solo parte di Java 9 è in realtà
parte del modulo base Java così è
parte della roba gratis che ottieni così è
un po ‘come sembra suggerire che
la programmazione reattiva sarà I
stava andando comunque, ma come a
all’inizio un modo standard di lavorare
guarda questo sembra esattamente lo stesso di
l’ API di REC 2 stream non è ovviamente
e il nome del pacchetto è diverso così
Punto Java utilizza il flusso di punti simultaneo con
interfacce interne che corrispondono allo stesso
i nomi delle interfacce questo è un po ‘di
un dolore perché quando stavo realizzando
questo sto usando rxjava e reattore
e usano l’ API di flussi vettoriali e
Volevo che il personale di servizio parlasse
termini dell’API reattiva Java 9 e
quindi devo adattarmi tra i due così
è un po ‘ di dolore non ne sono davvero sicuro
come stanno andando gli sviluppatori della biblioteca
gestiscilo sospetto forse multi
i file jar di rilascio potrebbero aiutare, ma non lo sono
certo, comunque, sappi che sembra
lo stesso non è lo stesso dove lo uso
l’ API dei flussi di reazione è qui
torniamo al nostro caso di studio, quindi la mia
i servizi sono veramente stupidi che usano
WebSockets per parlare tra loro e
in pratica si occupano di stringhe così
Vado a mettere le corde e vado
a per stringa e ho intenzione di fare
roba nel mezzo e roba nel
medio perché era una demo di Java 8
roba in
sarà effettivamente un’espressione lambda
quella mappa è una stringa di una stringa così
questo è un po ‘ quello che stavo facendo
quindi posso fare qualcosa di più
potente con flussi reattivi, quindi posso
in realtà basta dire bene, supponiamo che
quando ottengo roba dalla WebSocket, posso farlo
pubblicarlo e le persone possono iscriversi a
io per ascoltare quell’informazione il
la logica aziendale ora può usare il potere di
un’implementazione reattiva da fare
qualcosa con quello e poi posso avere
un abbonato che ascolta l’uscita
di qualunque sia la logica aziendale e
poi mettere che di nuovo sul WebSocket è
ancora la stessa funzionalità ma
potenzialmente può darmi molto più potere
quindi darò una rapida occhiata a come
implementato questo così il mio sguardo al
l’editore per iniziare con il mio editore era
una classe chiamata endpoint del client quindi io
ha reso questo implementi carico editore
che è l’ API degli stream reattivi Java 9
e questo ha un solo metodo su di esso
iscriversi quindi qualcosa che un abbonato sarà
iscriviti a me quindi sto solo andando
attuare che qui mi viene dato un
abbonato e ho scelto nel mio servizio
codice per creare il mio reattivo
l’implementazione non consiglia di fare
questo a proposito perché altre persone
ho fatto questo e fatto tutto il duro
lavoro ma tutto ciò con cui volevo davvero fare
descrizioni di gestione così ho solo
fondamentalmente creare alcune sottoscrizioni hanno
una lista di abbonamenti e poi quando io
ottenere qualcosa dalla WebSocket, solo
dire a tutti i miei abbonati a riguardo
quindi la mia implementazione è abbastanza tranquilla
semplice così posso scrivere il mio
implementazioni Penso che suoni semplice
ci sono voluti anni per implementare, naturalmente
perché sai che tutto fa sempre
così dall’altra parte il mio sottoscrittore finisce io
avere un endpoint server di broadcasting che
il punto è che tutto può essere
come se avessi un numero di cose da ascoltare
al WebSocket lì e questo
implementa abbonato il SUBSCRIBE è un
un po ‘più complicato ho un
unsubscribe che
abbonamento sul prossimo che è il principale
cosa che fa qualcosa quando io quando io
ottenere qualcosa da come abbonato quando
Ho qualcosa su che cosa faccio
errore e al termine alla fine
cosa faccio alla fine quindi il mio
L’endpoint del server di trasmissione ha
Annulla l’iscrizione
annullare l’iscrizione tutto quello che ho intenzione di fare è
dimmi dammi tutto quello che hai
proprio come tutto, non solo un set
dei valori sul prossimo è la cosa principale quindi
Pubblicherò qualsiasi cosa ottenga
Ho pubblicato quello sul WebSocket per
tutto ciò che mi sta ascoltando
su errore non farlo perché ero
scrivere la demo perché stavo imparando
cose che sai che ho fatto cose che il
il modo più semplice e veloce possibile e io
vorrei chiamarlo così, se lo sei
lavorando con flussi reattivi il
il modo più semplice e veloce possibile non è quello
non fare nulla per errore questi sono
messaggi asincroni e così se
qualcosa va storto non hai idea
non si ottengono tracce dello stack non lo si fa
non lo ferma, semplicemente non lo fa
cosa vuoi che faccia e tu no
idea perché così questo non è un modo rapido per
impara sempre la programmazione reattiva
qualcosa con un messaggio di errore anche se
è appena stampato sul sistema in uscita
completamente chiuso di WebSocket quindi di nuovo
Ho un’implementazione abbastanza semplice
di questo tornerò all’errore
la gestione, ovviamente, in modo da ora che ho
fatto quello dove applico questo che cosa è
il punto qual è il punto in natura di
cambiando la mia intera infrastruttura a
esporre flussi reattivi a questo reattore
API di streaming bene ne ho messo uno specifico
esempio di esso 15 minuti non lo farò mai
fai parlare a meno di 50 minuti e
diamo un’occhiata a un esempio di ciò che ho avuto
qui sono come stavo dicendo prima di uno di
i punti di questa demo è
dimostrare Java otto flussi così ho
ho avuto molti travasi e lambda
espressioni cosa potrei fare invece di
l’utilizzo di otto stream Java per questo è utile
reagire storie quali sono le funzionalità
fa è sto leggendo un file e per tutti
linea in quel file che ho intenzione di filtrare
fuori un po ‘di rumore che inserirò
un ritardo di 100 millisecondi perché
grazie windows per voler riavviare
il mio computer è un codice demo quindi mi piace
della voglio la roba che visualizza sul
schermo per non piace solo essere licenziato al
schermo voglio ritardare di 100
millisecondi in modo che tu possa vederlo
ticchettando e poi me ne vado
pubblica quella stringa in modo che possiamo fare il
stessa cosa con reattivo con reattivo
flussi arriverò a quello che sto andando a
usare i nostri extra sono per questo particolare
implementazione quindi abbiamo flowable così io
necessità di aggiungere Rx Java reattivo al bracciale
polsino e ho bisogno di bene importa il
classe e quindi ho bisogno di aggiungere richiede rx
Java alle informazioni sul mio modulo che è il mio Java 9
dall’alto e quindi scorrebile da iterable
Ho intenzione di fare praticamente lo stesso tipo
di cosa potrei fare prima ma non lo faccio
prova bene con le risorse
funzionalità perché non è non è
abbastanza semplice ma lo faremo
qualcosa di simile e quindi posso sentirmi
significa che usiamo tutto quel picco in Java 8
faremo qualche operazione su tutto
che passa attraverso la pipeline di questo
fase e nella nostra ora in più posso dire di fare
uno dopo, invece, è lo stesso
funzionalità fondamentalmente in modo da poter usare il nostro
extravasated
Java 8 flussi da fare sbarazzarsi di
la versione di Java 8 così ora ho
leggermente più codice non è abbastanza come
carino e dipendo da un esterno
libreria per fare esattamente la stessa cosa ma
Ti mostrerò perché questo potrebbe essere un
vantaggio ero sempre a disagio
con questo è un po ‘come usare il tipo
del server il metodo di debug peek a piacere
iniettare un ritardo di 100 millisecondi ma lo è
in realtà parte della logica di business di
la mia applicazione in cui voglio ogni riga
il file che volevo fosse ritardato di 100
millisecondi con flussi reattivi
puoi farlo in un modo leggermente diverso
modo, quindi posso dire dare intervallo scorrevole
è un intervallo di 100 millisecondi
chiamiamolo spunta, quindi questo è un flusso
che sta andando a spuntare ogni 100
in millisecondi ci vorrà molto
valore ogni 100 millisecondi ora ciò che io
può fare invece di inserire questo ritardo
qui posso comprimere il mio flusso di stringhe da
il file al mio flusso di zecche a un
intervallo e poi devo dire bene
dato che ho una stringa da questo flusso
e un lungo da questo flusso cosa fai
voglio che faccia bene con questi due valori
Non mi importa del tempo che voglio
li voglio solo il valore stringa e
allora posso sbarazzarmi di questo e così via
è un bel modo di avere il
stessa funzionalità e anche dimostrare
qualcosa di molto diverso sul reattore
flussi contro Java otto flussi voi
può effettivamente unire due flussi insieme
puoi usare due flussi allo stesso tempo
puoi anche fare le cose che puoi
riutilizzare i flussi in Java otto flussi quando
non lo fai per ciascuno, allora questo flusso è
fatto e questo è ciò che non puoi fare
qualsiasi altra cosa con esso ma con reattivo
flussi se ho questo come flusso in
che posso fare e che posso fare
altre cose con un flusso e e io posso
riutilizzarlo in modo da poter dividere i flussi e io
posso unire gli stream e posso riutilizzarli
stringhe che non posso fare in Java che ho
un’altra implementazione e quali
usa il reattore ma è praticamente lo stesso
cosa mostra che hai una sintassi
che è molto simile a Java otto ma
la funzionalità è leggermente diversa
in questo in questo altro caso sto usando
mappa piana e mappa piatta in flussi reattivi
ha un modello di concorrenza molto diverso
alla mappa piatta in Java otto flussi e
è qualcosa di cui essere veramente consapevole
perché non funziona se pensi
che funziona solo in un singolo thread
va bene così solo per riassumere il
lato reattivo delle cose ti ho detto come
ti darà un colpo molto veloce
demo di otto stream reattivi e Java
e i flussi reattivi sembrano molto
identica la sintassi è molto simile ma
non sono la stessa cosa e loro
non lavorare allo stesso modo
così i flussi del reattore con cui puoi lavorare
più flussi è possibile zip li
può
hai più consumatori indietro
la pressione è una parte molto molto importante
di flussi reattivi e questo è questo
una buona cosa
Trattate la contropressione come se fosse un
cosa di prima classe da considerare come cosa
faccio se è il produttore
producendo più del consumatore possibile
consumare faccio cadere i messaggi che faccio bloccare
Invio un messaggio all’utente che dice stop
premendo quel pulsante così tanto intendo quello
Cosa faccio
nel caso in cui quando ho quello
pressione e ha un aspetto molto diverso
modello di concorrenza c’è come il threading
andare su questi sono cover a volte
non sei a conoscenza di dove sia Java 8
i flussi sono single threaded a meno che tu
dì loro di essere paralleli e ma il
punto a proposito dell’API reattiva di Java 9
che puoi esporre la tua API attiva e
usa qualsiasi implementazione tu voglia
sotto le coperte quindi in questo caso l’ho usato
Rx Java e reattore potrei anche essere
utilizzando diverse lingue jvm e ma
stanno ancora parlando nella stessa API quindi
questo è davvero un buon vantaggio tutto bene
oh bene ho 10 minuti quell’altro
Funzionalità Java 9 questo va bene lì
non erano molti di loro
Penso che la caratteristica Java 9 più usata sia
sarà questa fabbrica di convenienza
metodi per le collezioni e lo mostrerò
tu perché diamo un’occhiata al vecchio?
giorni cioè ora e quando vogliamo creare un
nuova lista diciamo porta matrici come liste in
il Nuovo Ordine Mondiale posso dire un elenco di
Mi sono appena salvato sei personaggi
yay e l’ implementazione della lista è
leggermente diverso è immutabile
elenco ma credo che gli array siano come una lista
ti dà una lista immutabile lo è comunque
solo un tipo leggermente diverso di a
elenco mutabile quindi è fantastico
la funzione più usata no, quindi lascia che ti mostri
perché è interessante facciamo finta che
abbiamo un set invece ora al momento se
vuoi un set abbastanza grande
modo succinto di farlo è creare un
elenca e poi metti in un set di hash e
quindi mettilo in un set ora ovviamente noi
non devo farlo più
tada e questa è la collezione immutabile
così anche questa è una buona cosa e di
Naturalmente si può fare di questo let stretto
sbarazzarsi di quello e poi in alcuni
punto nel prossimo futuro nuove funzionalità
come Java 11 si potrebbe essere in grado di dire
quello va bene probabilmente non per una costante
forse per come una variabile ma um così tu
possiamo vedere come iniziamo a sbarazzarci di alcuni
del boilerplate di tutti
gemendo sempre in Java l’altro
i posti sono davvero interessanti
particolarmente cuz Ho lavorato per
MongoDB e abbiamo usato molto per creare
mappe è questo è solo di nuovo questo è il codice
che esisteva in questa applicazione I
necessario per inizializzare una mappa in questo modo e
questo è nel codice di produzione non in
il codice di test e non è raro da
vedi questo ed è brutto e orribile ma
era l’unico modo per farlo, ma
non più potrei dire la mappa delle voci I
posso usare la mia colonna preferita
modalità di selezione mappa negozio voce che posso usare
la caratteristica più utilizzata di IntelliJ IDEA
sostituisci ora attendo ho bisogno di sostituirlo
con quello
e così ora questo è come creo il mio
la mia mappa è un po ‘più piccola , non è come
quelli più piccoli ma è un po ‘più piccolo a
un po ‘più succinta cosa è veramente bello
a riguardo è se ne hai meno di dieci
sbarazzarsi del conflitto
ne hai meno di dieci che puoi dire
mappa e puoi sbarazzarti di tutti
questo mi capita di chiamarli per sfogliare i nostri
IntelliJ non mi deludere ora oh tu
mi odiano così tanto
bene , usiamo la caratteristica più usata I
ti ho detto che è un EIP anche io sto usando un
superficie
così via tutto bene e quindi posso solo
fornire coppie di valori chiave se sono un numero inferiore
di 10 quindi puoi vedere che ho la chiave 9
Ecco, quindi è molto carino, quindi questo sarebbe
sono stato super utile quando ero
lavorando a MongoDB tre anni fa e
non è ancora ancora in Java 9 ma e
non è bello come forse il
un modo fantastico di creare mappe ma è un
enorme passo nella giusta direzione quindi
lavorare con le collezioni sta andando
essere molto più semplice in Java 9 e
Onestamente questa è la cosa che penso di essere
userà di più da Java 9 in più rispetto a
qualunque altra cosa
segnala agli sviluppatori Oracle che lavorano
davvero difficile su Java 9 per sette anni
e io sono tipo oh mi piace davvero il tuo
metodi di raccolta è fantastico se si utilizza
jigsaw no, ti abbiamo drogato Tilley e giusto
metodi privati ​​su interfacce questo potrebbe
sembra davvero stupido perché quello che è il
punto di avere un’interfaccia che
definisce la tua API e quindi ha a
il metodo privato lì ora mi permette di mostrare
di nuovo questo è il vero codice che era
in realtà nella predazione Maya e devo
avere il codice duplicato senza essere in grado
per estrarlo in un metodo riutilizzabile
perché in Java 8 come sai puoi farlo
avere metodi statici su interfacce e
metodi di default sulle interfacce così
le interfacce non li definiscono semplicemente come a
firma in realtà hanno un comportamento in
loro così potresti potenzialmente in Java 8
ho il codice duplicato che potrei, naturalmente
averlo estratto in un metodo get
valore per campo e si sedette e ma io
non volevo che facesse parte del mio
interfaccia quindi non voglio che questo sia un
metodo pubblico e in Java 9 no
deve essere ok
quindi è super utile per i metodi statici
e per i metodi predefiniti altrimenti è
davvero stupido per avere un metodo privato
o interfaccia e questo fa parte di a
getto più grande chiamato moneta da progetto di fresatura
e ci sono un sacco di piccoli bit e
pezzi in questo su modi migliori di
lavorando con generici e anonimi
classi interne e alcune altre cose
che stringe solo alcuni dei
sintassi nuovi metodi sull’API dei flussi così
Gli stream Java 8 possono avere questa funzione
torna in Java 8 flussi
Pensa che e anche questo è il vantaggio di Java
flussi Java, i flussi possono essere infiniti
trasmette gli stessi flussi meno reattivi
sono progettati per i flussi infiniti
Java 8 streams communes in extremes I do
non lo consiglio questo è molto
difficile terminare i flussi in Java 8
piastra quelli sono molto è molto difficile
per dire che ho finito, ora sono contento come facciamo
superarlo e ora in Java 9 c’è un
modo di dire prendere mentre così prendere tempo
un predicato è vero, quindi supponiamo
che il nostro file di tweet diciamolo
è stato ordinato e ogni stringa è iniziata con
come un numero, quindi diciamo che voglio
prendi il primo tutto ciò che inizia
con 1 a 5 quindi potrei dire che ho
iniziato inizia con così vado a
prendi e non inizia con 6
e poi quando arrivo alla prima voce
che inizia alle 6 ho appena interrotto il flusso
e lo termina potrei potenzialmente
combinare questo con goccia mentre e io posso
dire che una partenza inizia con I do not – so I
può prendere tutto da come 3 a
5 quindi questo sarà, lo penso
potrebbe essere davvero utile se stai lavorando
con flussi infiniti è particolarmente
utile se stai lavorando con ordinato
Flussi ovviamente perché tu vuoi essere
in grado di dire come se non fosse il
prima serie di valori e ignorare l’ultimo
insieme di valori che puoi usare per
barare e fare altre cose quindi ho avuto un
il campo di corsa così in esecuzione è uguale a vero e
quindi posso impostare l’esecuzione equivale a false quando
In realtà voglio che sia falso e poi
il mio stream terminerà, quindi posso farlo
anche questo dovrebbe essere un booleano atomico
perché è multi-threaded e nero
ma si ottiene l’idea è possibile
terminare le cose con esterni e
anche i criteri sono davvero utili
e secondo me avrebbe dovuto essere lì
dall’inizio ma tu conosci questi
le cose sono difficili da vedere
e impostare API a piedi questo è tutto
lo sa creare o ottenere una pila
la traccia è piuttosto costosa, proprio adesso
ora possiamo fare le cose in modo più pigro
che abbiamo cose come lambda e
flussi e cose così che possiamo noi
non c’è bisogno di ottenere l’intero stack commerciale
e poi fare qualcosa con ciò che possiamo
tipo di costruirlo in modo pigro e io
non conosco tutti i dettagli
ma l’ho solo suonato un po ‘ma
quello che fai è ottenere uno stack Walker
e poi ti finisci con
frame dello stack di sintassi leggermente complicato
flusso che è un flusso reale ho messo questo
quaggiù, quindi posso fare il genere di
operazioni mi aspetto di poterlo fare
quando lo filtro, potrei dire che non lo faccio
so che voglio filtrare qualsiasi cosa
il mio set frame inizia un frame stack get
il nome della classe inizia con non so come
il mio nome del pacchetto e poi forse voglio
essere qualcosa come contare quanti
le istanze delle mie lezioni sono in questo
stack frame Intendo che non sono esattamente sicuro
cosa potresti voler fare, ma il punto
è che puoi non è quello che volevo
fare e quindi puoi fare cose come te
può fondamentalmente fare query nello stack
frame così com’è e non è così costoso
come lo era ovviamente se lo fai per
ciascuno quindi se è costoso come
ottenere il frame dello stack per cominciare
ma è una cosa piuttosto interessante e
non deve essere in un o in un
messaggio di errore potrebbe essere potrebbe essere a
qualsiasi punto nel tuo codice, quindi se lo sei
fare cose di livello inferiore che potresti desiderare
per capire dove sei cosa
successo e così via un multi rilascio
file jar questo è come un grande argomento in
di per sé ho avuto un po ‘di gioco con
noi d’ ora in poi potenzialmente una biblioteca
potrebbe darti un singolo file jar che
è per Java 9 e pre Java 9
versioni solo in un unico file jar così
lo sai al momento, se lo sei
usando Java 8 alcune delle tue librerie
potrebbe dire usare questa versione per Java 8
e utilizzare questa versione per pre Java 8 bene
d’ora in poi lo farai
il file Java stesso avrà Java nove
codice specifico se stai usando Java
9 altrimenti utilizzerà Java 8 e
il 4 codice nota che funziona solo
Java 9 pre Java 9 non è possibile eseguire Java
8 versione e una versione Java 9 che è
un po ‘triste ma andando avanti sarai
in grado di avere una versione Java 9 di Java 10
versione Java 11 quindi questo è gentile
di fresco non ho visto nessuno usarlo
eppure ne ho sentito parlare, non è così
impossibile lavorare con ci sono alcuni
idee di best practice che l’API dovrebbe
essere lo stesso tra i diversi
versioni quindi non sono sicuro se questo è un
soluzione all’API reattiva dei flussi
problema o no ma è potenzialmente
il loro processo per gli aggiornamenti API sono gentile
di veramente fuori tempo quindi sto solo andando
per dare una rapida dimostrazione di ciò che sembra
come e la cosa principale qui è che tu
puoi prendere il tuo bambino così ottieni il tuo
processo ID ora che è abbastanza bello ora
quindi penso che sia la cosa più utile
qui c’è un sacco di altre cose in giro
essere in grado di costruire una linea di comando
roba e va benissimo, ma penso
probabilmente la cosa più utile è la
possibilità di aggiornare il tuo amplificatore
la deprecazione è una specie di figo questo è
tutto bene altrimenti voglio metterlo dentro
qui e discussioni qui andiamo
ora quando vedi i metodi deprecati
possono anche essere annotati con quando
erano deprecati quindi Java 1.2 e
se stanno andando via o non va bene
quindi è fantastico, quindi puoi averne uno
l’idea di è questo mi sconsigliato
non dovrebbe davvero usarlo o questo è
deprecato e se non si smette di usare
andrà via e il tuo codice funzionerà
rompere quindi questo è davvero utile per quando
stiamo guardando un’altra libreria, se lo sei
lavorando sul codice della libreria del tuo allora
inizia a usare questo perché è super
utile per i tuoi utenti e cos’altro
Continuo a spostare le diapositive così velocemente che
non puoi fare foto mi sento dispiaciuto
puoi generare html5 Java doc y we
ha portato Java doc nel 21 ° secolo
solo 17 anni troppo tardi
questo è grandioso se si genera un documento Java
ovviamente questo è un po ‘utile da sapere
per lo più leggeremo il documento Java così
è gentile di sapere che il nostro Java
doc non sarà così brutto più
importante questo ci permette di avere un
Ricerca doc in Java
guardare ed è ottenuto di immissione facilitata pure in modo
quando inizi a digitare lì, dice
cosa intendi , non lo so, suppongo
Java dot util dot qualunque e intendo
questo quindi questo è l’effettivo Java 9 Java
doc e ho usato la ricerca
funzione qui ed è super utile
è davvero bello oh, che peccato che non lo faccia
avere il tempo di parlare della pace e
se sei interessato alla lotteria
c’è un tutorial qui ti dice come
per iniziare ti dice il tipo di
cose che puoi fare dalla lotteria
se hai usato un disco prima e tu
tipo di sapere cosa vuoi fare con a
referenza e in particolare come volevi
per integrarsi con l’IDE, dicci come
vuoi che IntelliJ IDEA si integri con
la novità perché non l’abbiamo fatto
ancora e vogliamo davvero saperlo e
usa i casi da voi ragazzi ok dentro
sintesi Mi dispiace che ho fatto tardi per
pranzo il dolore di Java 9 potrebbe il tuo codice
pausa e così la mia raccomandazione è
scaricare un accesso anticipato di Java 9 do
provalo ora, capisci quali sono le cose
rompi perché probabilmente non è il tuo
codice potrebbe essere la tua infrastruttura
potrebbe essere il tuo server CI potrebbe essere
Gradle potrebbe essere qualcos’altro
potrebbe essere una libreria che sei dipendente
per questa demo ho dovuto migrare da
Marketo per puntare il sette punto otto a
mockito per punto otto punto nove
perché dipendeva da una biblioteca
chiamato compagno morso che non funzionava
con il puzzle con la versione che ero
utilizzando quindi scaricarlo e vedere cosa c’è
smettere di funzionare probabilmente non lo è
il tuo codice è probabilmente qualcos’altro
allora la cosa importante qui è che se
trovi una libreria che non funziona
con esso o trovi uno strumento che non è
lavorando con esso, dillo alla biblioteca
manutentore Zoar il fornitore di strumenti perché
non sappiamo sempre quali cose strane
stai facendo nel tuo sistema e abbiamo bisogno
per sapere come come il dolore che
ti senti così che possiamo aggiustarlo e
Sembra ingiusto mettere il lavoro su
voi ragazzi, ma quando ho lavorato a Mongo questo
la biblioteca è come un centinaio di classi
questa piccola libreria che include test ma
le persone stavano usando in tutti i tipi di dispari
modi e non c’è modo che possiamo testare
in un milione di diverso
ambienti non è possibile il
il motivo per cui il tuo codice potrebbe rompersi è quello
ci sono molte cose che stanno andando via
roba deprecato è stato eliminato in
Java 9 whoo
e c’è un sacco di cose che il
riga di comando quindi flag di garbage collection
e la selezione della versione JRE del tempo di lancio
che non sono sicuro di aver mai usato ma
un sacco di cose che puoi usare
la linea di comando è praticamente andata via
incapsulare la maggior parte delle API interne che è
la cosa in cui qualcuno ha perso qualsiasi cosa
se ne vanno tutti così dice incapsulato
che suona bene cosa significa è
andato via non puoi arrivare ad esso e il tuo
i codici vanno in pezzi e li hanno rimossi
un sacco di cose che probabilmente
non stavano usando comunque oh sì deprecato
l’ API dopo che qualcuno mi ha chiesto
Lunedì, a cosa serve la sostituzione
l’applet HTML non è sicura e ci sarà
un comportamento inaspettato credo di si
ci sono cose qui queste sono le forme
di cose che sono una specie di cambiamenti
che le persone pensano che tu lo sappia
non avrà impatto su nessuno e andrà a finire
che qualcuno sta facendo da qualche parte
qualcosa di strano come guardare il GC
file di registro e come mettere in pausa la stringa
valori per ottenere errori particolari a
capire cosa è andato storto e loro hanno
cambiato un sacco di registrazione così hanno
cambiato includendo parte dell’amore
messaggi e roba così alcuni di quella roba
potrebbe influire su cose strane che tu sia
facendo per me la cosa numero uno qui
pensa bene un’altra cosa è che g1 è
ora il garbage collector predefinito I
non pensare che sia un grosso problema perché io
pensa se ti importa di spazzatura
collezione che probabilmente hai messo a punto
sistemi entro un pollice della sua vita e
non ti importa dei valori predefiniti e se
sei se non ti interessa il
garbage collector stai usando i valori predefiniti
e non ti interessa quindi penso che non sia un
problema ma sii consapevole dell’unica cosa
che penso morderà le persone
il culo e non rendersi conto che è nuovo
è lo schema di stringa della versione Java 9
ufficialmente Java 9 non Java 1.9 come Java
8 con Java 1.8 e quando si ottiene il
stringa di versione ritorna come 9 e
vedrai che alcuni degli strumenti che
usi le versioni precedenti di
Gradle e versioni precedenti penso
IntelliJ ti dirà che non ne ho idea
cosa è questa versione 9 o potrebbe dirlo
te ne hanno tirato fuori un raggio
indice di eccezione mentre prova a fare uno
punta qualcosa e non è lì così io
penso che questo morderà di più
persone di chiunque altro si rendono conto di essere consapevoli
di esso se stai facendo qualsiasi versione
è una pausa per mettere in pausa l’applicazione
non funzionerà in Java 9 Java 9 è
ancora in evoluzione la sua
evolvendosi anche ora Oliver a giugno era
dovrebbe essere rilasciato il mese prossimo e
l’API sta ancora cambiando i gif sono ancora
cambiando molto soprattutto per il meglio
quei file di informazioni sul modulo che ho mostrato
tu quando ho fatto questa applicazione per la prima volta
che erano solo febbraio marzo
enorme che dovevo definire come ogni
singolo pacchetto che stavo usando e ora
sono molto più piccoli e molto
più facile da gestire
così ancora in continua evoluzione sta migliorando ancora
IntelliJ IDEA è ancora in evoluzione e
abbiamo bisogno del tuo aiuto come e dei ragazzi di Oracle
sul JDK e sugli sviluppatori della biblioteca
ho bisogno dell’aiuto di veri sviluppatori per dirlo
noi che dolore provi o cosa
caratteristiche che vuoi vedere per aiutarci a dare
tu quello di cui hai bisogno e Java 9 ho
effettivamente sollevato come due o tre bug
da Java 9 pensavo di essere stupido
e ho rotto qualcosa che si è scoperto
fare qualcosa di abbastanza ordinario ma
non era stato previsto quindi ho sollevato bug
su JDK e JDK è cambiato
di conseguenza, quindi stanno ancora cercando di
farlo ora meglio farlo ora che
prima che sia effettivamente rilasciato ufficialmente
ne vale la pena non poltiglia nel modulare
non devi usare il puzzle per
utilizzare Java 9 e non consiglio modulare
occhi nel tuo codice a meno che non sia necessario
nuove applicazioni Penso che sia un bene
idea di pensare in modo modulare perché io
pensa che il tuo design sarà più semplice e
più pulito ed è un po ‘come andare avanti
ma se lavori in modo abbastanza maturo
applicazione che non consiglierei di fare
grandi cambiamenti come motorizzare il tuo codice
è come decidere di migrare il tuo
monolite a microservizi solo per merda
e risatine che abbiamo fatto tutti di lasciare
sii un piano equo quindi sì, potrebbe non esserlo
ti rendi conto che non è banale
cosa che accediamo ai flussi non sono la stessa cosa
come Java 8 flussi sembrano uguali ma
hanno un comportamento diverso e loro lo sono
progettato per diversi casi di notizie il
in particolare il puzzle di gioco incoraggia
buon design e separazione della capsulazione
preoccupazioni che la grande Java 9 incoraggia
nuovi modi di lavorare in particolare attraverso il
repple attraverso flussi reattivi e cose
come che così va bene è una specie di
ci sta muovendo in avanti ci sta aiutando a
evolvono per me non è il massimo
tag tag convincente Java 9 solo un po ‘
più bello scrivere codice ma se questo è
in realtà la cosa più avvincente
anche se sarà più facile per noi
creare collezioni ci saranno
leggermente meno caldaia
saremo cose come essere in grado di ottenere
i bambini per i nostri processi e cose oh
Penso che queste cose farebbero semplicemente il nostro
la vita un po ‘più facile tutte le diapositive
tutte le risorse tutti i link a dove
per scaricare Java 9 tutti i collegamenti a
praticamente tutto è disponibile da
questo link qui questo URL quindi per favore
dare un’occhiata e perché non ho alcuna
tempo per il servizio domande o e grazie
tu molto
tu

Please follow and like us: