
[Musica]
1 1 2 3 5 ciao, il mio nome è Oleg, grazie
per l’ introduzione e lo faremo
parlare di valium e sono molto felice
che ha scelto questo argomento perché in effetti
questo è uno sviluppo piuttosto eccitante
nel mondo delle macchine virtuali
linguaggi di programmazione e sembrano essere in
l’ industria altrove
Lavoro come promotore degli sviluppatori per il ringhio
veeam o crollo che è una ricerca
e dipartimento di sviluppo all’interno di Oracle
Quindi l’obiettivo di che è quello di fare in realtà
tu ricerca accademica e spingi il
confini di ciò che conosciamo come umanità
in informatica e nel software
ingegnerizzare e accumulare quelle
quella conoscenza e poi ad un certo punto
convertirlo in progetti industriali
si spera per il beneficio del
comunità e la società madre ma esso
è e istituto di ricerca prima così
ci sono un bel po ‘di carte accademiche
e se proprio vuoi piacere nel profondo
dettagli di livello su gravia e come sono
implementato allora forse puoi guardare
in che sono disponibile nel
La maggior parte di Internet passa quasi per cenere
ovunque se vuoi fare domande
ma per qualche motivo non sei riuscito a farlo
fallo qui faccia a faccia solo per twittare
Sarò felice di trasferire in qualsiasi momento, ma
Ravi, mi occupo di ingegneria del software di vita
o qualsiasi cosa senza alcun particolare
differenza quindi se avete domande qui
e tu non vuoi chiedere loro dopo
per favore usi l’app è abbastanza
importante anche per favore non basare nessuno
per fare qualche impresa in forte crescita
decisioni basate sulla fiducia di
questa presentazione è molto importante
ma con tutte quelle cose necessarie fuori
parliamo del growl VM
dravyam è un poliglotta ad alte prestazioni
macchina virtuale incorporabile capace di
esecuzione di programmi scritti in diversi
le lingue
attualmente supporta le lingue jvm così
Java Catalan Scala chiusura Dru V e così via
sopra
abbiamo notato l’implementazione e a
Motore JavaScript abbiamo Ruby
implementazione anche il nostro Python e noi
ha anche un interprete LLVM così anche se
stai cercando di eseguire il codice nativo, se tu
riesci a compilare questo tramite LLVM tu
può funzionare sopra a Gravia e il
la promessa del problema è che vogliamo
per essere il più veloce
macchina virtuale ad alte prestazioni per tutti
date le lingue quindi dovrebbe essere il
macchina virtuale per qualsiasi applicazione
scritta qualsiasi lingua che si desidera
eseguire se si parla di tutta la guavian
nella singola immagine se vuoi
portare via una cosa da questa sessione
quindi probabilmente questa diapositiva è ciò che voglio
tu per ricordare così sugo non sono solo io
può supportare tutte quelle lingue ed eseguire
terminali scritti con entrambi
individualmente e nel mix
interoperando tra diversi
lingue ma può anche essere eseguito
diversi contesti nell’uso del sottostante
piattaforme in modo da poter eseguire programmi
scritto in quelle lingue in cima al
JVM e attualmente siamo aperti JDK che puoi
eseguirli nel contesto della nota normale
applicazione quindi ci sarà il normale
ciclo di eventi e tutto ciò che è
previsto dalla distribuzione del nodo è
anche incorporato quindi è stato progettato da
l’inizio di essere modulare e utilizzare il
componenti diversi componenti
necessario per eseguire una programmazione gestita
lingua dalla piattaforma sottostante così
per esempio puoi fornire una spazzatura
implementazione della collezione dall’esterno
o codice shuttling thread shadowing o
codice
tutto questo in modo che tu possa incorporarlo nel tuo
applicazioni e arricchirle con
possibilità di eseguire programmi in questi
lingue in questo modo
puoi eseguirlo di più nel database Oracle
per esempio nel mio sequel o se lo hai
qualsiasi piattaforma che si desidera
incorporalo sia su base Java sia nativo
piattaforme puoi farlo e anche tu
puoi compilare il tuo bytecode JVM su un
immagine nativa autonoma per eseguire tutto
libreria binaria o condivisa ed esegui come
codice nativo che quale che è a
piattaforma diversa e quindi quanti
di te usi Java per lo più giorno per giorno
altre lingue del genoma eccellenti
Scala, questo potrebbe essere molto
interessante per te
In particolare , dovremmo davvero grandioso
risultati per carichi di lavoro eruditi
javascript un paio di persone eccellenti
qualcosa dalle altre cose, Ruby
sono Python non così tanto ma sì alcuni
la gente lo fa in un certo senso cosa li coltiva
attualmente supporta e quelle cose sono
in diverse fasi di maturità e
compatibilità con il sistema eco ma cosa
supporta o sosterrà dentro nel
tipo futuro di maniglie la cima del
i più popolari linguaggi di programmazione
attualmente in uso così nel nel
profondità del problema ciò che accade è
che trasforma la programmazione
lingue e interpreti per quei due
e un compilatore molto efficiente e poi
può compilare il codice da quelli
lingue la macchina molto efficiente
codice e tipo di iniettare quello ed eseguire
quelle piattaforme così ti alzi
prestazioni in tutti questi contesti
perché a causa del compilatore e con
tutto questo se sei interessato a
diversi casi d’uso in cui è possibile utilizzare
volume ciò che puoi fare puoi leggere a
post sul blog di Chris Eaton che è
attualmente il
lead di progetto per la nostra implementazione di Ruby
e in aprile ha scritto la top 10
cose da fare con la rissa VM e cosa
può essere per te e anche per alcune persone
la squadra di terra ne fu sorpresa
Braham può davvero farlo perché è così
un progetto molto versatile quindi lo faremo io
mostra un paio di demo per diversi
le cose qui ma se vuoi prendere un
loop solo se c’è una risorsa
e si può si può provare voi stessi da
il punto di vista dell’architettura sembra
così che in fondo avremo un
piattaforma sottostante in questo caso questo
sarebbe l’ hotspot VM della normale JVM
ma potrebbe essere nota o qualcos’altro
Qui
quindi con hotspot lo strato successivo è il
growl compilatore e il compilatore growl
si integra con JVM usando il cielo JVM che
è il compilatore di macchine virtuali Java
interfaccia che è il modo normale come
dovresti collegare un compilatore di terze parti
nella JVM quindi c’è un definito
interfaccia è stata aggiunta in Java 9 e noi
di nuovo su Java 8 e in pratica
ciò che dà alla JVM un’opportunità
basta chiamare un compilatore di terze parti e
Dice di dire oh, ecco il mio codice per favore
Ottimizza questo per me compila questo
per codice macchina ed è così grandioso
compilatore si inserisce e proprio attraverso quelli
due livelli possiamo eseguire bytecode JVM
perché con l’intera JVM come piattaforma
può fare tutto normalmente con la JVM
fa e poi viene fornito il normale bytecode Java
e il compilatore può ottimizzare che
e compilare quello per codice macchina in modo che il
lingue jvm supportate direttamente e
poi in aggiunta a quello per altre lingue
integrazioni c’è strato aggiuntivo
strato chiamato tartufo quadro così
la struttura del tartufo è la struttura per
creare i linguaggi gestiti che ti dà
un’API per definire un interprete per
linguaggio in modo da non dover scrivere un
ottimizzando il compilatore o il completo virtuale
macchina ma di cosa hai bisogno per fare
per definirlo in una sintassi astratta
interprete albero fondamentalmente un albero
composto da nodi che definiscono
operazioni
e poi si passa attraverso l’albero nel
valle quella nota di luce nota come te
farebbe normalmente un interprete e
gravia lo compilerà e ottimizzerà
che a runtime in modo molto efficiente attraverso
così che abbiamo Ruby e tutti quelli
interpreti e abbiamo un LLVM inter
interprete di codice bit attraverso il quale
le forme native possono essere eseguite questo è molto
importante perché per quelli dinamici
le lingue con cui molti di loro vengono
estensioni native quando le persone hanno realizzato
che un certo codice non funziona fino a
le loro aspettative hanno riscritto
alcune parti di quel comportamento in nativo
lingue per migliorare la velocità
prestazioni di quei percorsi critici così
al fine di sostenere l’ecosistema di
quelle lingue che dovevamo essere in grado di
esegui codice nativo e con Olivia
interprete possiamo farlo e porta
risultati molto affascinanti quindi se parliamo
riguardo alle prestazioni questo è approssimativo
risultato approssimativo che abbiamo ottenuto nel
estate penso che l’anno scorso da uno dei
documenti accademici che confrontano il sorteggio con il
concorrenza in modo da poter vedere che abbiamo
risultati un po ‘migliori rispetto a Java o
normale codice Java e questo è tutto
i benchmark del normale disaccoppiamento e
tutto ciò che potrebbe non essere come
significativo ma anche non male come
JVM è davvero virtuale allo stato dell’arte
macchina molte persone molto intelligenti
ha lavorato molto duramente per molti anni
è molto veloce e non lo è
non è facile come sembra diverso
carichi di lavoro che otteniamo diversi
risultati e devi valutare sul tuo
codice ma anche su tutto il
benchmark in media otteniamo un po ‘
un po ‘di miglioramento delle prestazioni per le prestazioni
delle altre lingue anche jvm
lingue potrebbe essere il modo migliore per
Scala per esempio mostriamo qualcosa di simile
20 miglioramenti del 25 % perché Scala
bytecode i modelli di bytecode che
Il codice Scala emette che non sono simili a
il normale Java ai genitori normali
che i programmi Java generano proprio così
Ct il normale compilatore sa molto
intimamente su quali genitori bytecode
sono creati da programmi Java e se li hanno
disegnato insieme quindi è molto meglio
ottimizzazione del codice Java rispetto al codice Scala
così su Scala e altri linguaggi jvm noi
ottenere un aumento delle prestazioni più grande tipico
linguaggi dinamici otteniamo molto di più e
molto interessante otteniamo un ottimo risultato
preferiscono le prestazioni fuori dall’ascensore
per il codice nativo che è in realtà
totalmente sorprendente per me stesso ma otteniamo
che e ci sono solo un po ‘più lento
rispetto a v8 che è molto buono
macchina virtuale per JavaScript ma DRA
VM è una macchina virtuale per eseguire tutto
quelle lingue quindi ci arriveremo
qualche punto del tempo speriamo che dovrebbe
essere il migliore la preferenza più alta
macchina virtuale per tutte le lingue quindi
squadra sta lavorando al miglioramento per
telefoni per tutti quelli così così se
vuoi sapere come li otteniamo
risultati questo è uno dei documenti che io
raccomanderei che sia un documento accademico
quindi non è scritto come un tipico blog
post, ma è davvero abbastanza facile
capisco o atlas skim e parla
sulla tecnica di valutazione parziale
e tu sei il benvenuto a leggerlo così
spiega come ottimizziamo l’ast
alberi sintattici astratti degli introversi
prima di darlo al compilatore JIT
quindi ci sono diversi livelli di
le ottimizzazioni accadono quindi se lo sei
interessato a come puoi ottenere tutto questo
roba buona questa è una fonte aperta
progetto in modo da poter andare a github il
lo sviluppo sta accadendo su GitHub
è la scansione flash di Oracle ci sono a
coppia altri repository per esempio
per gli intrapreneurs per javascript
c’è un repository separato e
python è un’implementazione diversa
repository separato ma questo è il principale
uno e puoi seguire i link a
altri puoi guardare il codice uno
dei grandi benefici del
growl vm project is that all of the
le cose sono scritte in Java quindi se lo sei
interessato a macchine virtuali o
compilatori o altro ma in qualche modo il tuo
la conoscenza del codice nativo ti ha fermato
dalla ricerca di questo e tu sei come me
non proprio sicuro di quale sia il
operatore di dereferenziazione è o commerciale o
una stella o un punto interrogativo non è un
punto interrogativo che conosco ma se
non siete sicuri, ma eri in grado di
leggere la scrittura e comprendere il codice Java
puoi dare un’occhiata e tu puoi
capire cosa sta succedendo dietro il
tende all’interno della macchina virtuale così
è possibile scaricare i file binari solo se
vuoi usarlo non solo ricerca o
contribuire a qualsiasi cosa tu possa
scaricali dal grow em che org
sito web c’è un’edizione comunitaria
che si basa sull’open source
componenti che puoi vedere su
github quindi puoi costruirlo tu stesso o
puoi usare il nostro costruito e attualmente esso
è per Linux e Mac OS e c’è un
Enterprise Edition che viene fornito con
dare un compilatore avanzato più potente
tu prestazioni aggiuntive e alcuni
funzionalità di sicurezza e scalabilità ma
questo è un valore aggiuntivo che puoi fare
tutto, tutti i demo e tutto il resto
carichi di lavoro sull’edizione comunitaria ma
se scegli consapevolmente di optare per
prestazioni migliori che sei il benvenuto
valutare e provare l’ edizione Enterprise
e devi scaricarlo da
Oracle Technology Network quindi devi
accetta questa casella di controllo dicendo questo
hai letto la licenza di valutazione ma lui
può valutarlo e vedere cosa
potenziamento delle prestazioni che ti dà e come
puoi interrompere la community
L’edizione è funzionalmente completa per te
puoi usare quello se vuoi il
le licenze per coloro che sono al
L’edizione comunitaria è ragionevole
l’ecosistema per Java parte questo
GPL le due eccezioni del passaggio di classe plus
proprio come aprire JDK lo script Java
il runtime fresato è sotto il nodo normale
licenza Python e quindi potrebbe essere un
sostituzione drop-in per quelli
Runtimes se vuoi che sia il reale
implementazioni degli interpreti che
abbiamo creato sotto la GPL che è
il principio universale è quello che è
un mito come licenza molto molto sicuro
gratis quindi sei libero di provarlo e vedere
dove ti porta così ora è demo
tempo da quando hai detto tutti che molti di voi
ho detto che per lo più stai facendo Java
ti mostrerò cosa può fare graylien
il tuo codice Java quindi vediamo che ho un
punto di riferimento qui è un flusso Java semplice
punto di riferimento ed è molto semplice così è
normale benchmark jmh quindi Java micro
Cablaggio di riferimento So che lo fa giusto
ha solo una lista di numeri interi e
quindi esegue le tipiche operazioni di streaming
in cima a quelli
così trasmetti in streaming quella matrice e poi tu
mappare un paio di funzioni tutte sopra
quello e poi lo gestisci e ottieni
cosa ottieni riceverai un numero indietro così
questo è il codice che tipicamente
vedrebbe in una normale applicazioni giusto
voi quanti usereste Java 8 e
dopo
per curiosità Giovanni 9 e dopo come
molti di voi sono emigrati bene, quindi lo siamo
provvedendo alle fatture gravettiane siamo
fornendo build basate su Java 8 in modo da voi se
vuoi valutarlo sul tuo codice
puoi semplicemente scaricarlo e avere un
sostituire hanno appena sostituito il tuo normale
JVM con quello così ho questa VM grigia
Enterprise Edition qui ho scaricato
che puoi vedere che se guardi dentro
nella cartella bin troverai un normale
Comandi Java lì java java c e
tutto ciò che troverai anche normale
JavaScript comanda j / s e ne nota alcuni
comandi per il nostro Python Ruby e così via
quindi puoi semplicemente scaricare quel file e
usa questo Java al posto del tuo normale
Java e C
dove ti porta così ho il mio
punto di riferimento e ho compilato quello e poi
lo gestiremo così prima di tutto
esegui questo e eseguirò questo con no
ringhio lascia che ti mostri cos’è questo così noi
userà il genere da growl VM
ma disabiliteremo il compilatore s JVM
disabiliteremo il compilatore growl così
questo funzionerà con CT normale e poi
ti mostreremo che voglio solo che tu lo mostri
la differenza quindi funzionerà per 40
secondi ma quello che fa in sostanza
carica una macchina e cerca nuove minacce
e esegue quel codice ancora e ancora
e di nuovo per consentire a JIT di ottimizzarlo
codice e ed eseguirlo il più velocemente possibile
possibile così e ha scaldato qualcosa
e poi fa le iterazioni e it
riporterà i numeri che devono
capisci che quei numeri sono giusti
numeri che devi interpretare
non puoi semplicemente guardare i numeri e
ed essere davvero eccitato ed estrapolare
questo a tutti i carichi di lavoro ma quei numeri
stanno ragionevolmente mostrando qualcosa in modo nostro
il punteggio qui è 174 nanosecondi per
operazione per una chiamata al metodo che è 174
nanosecondi quindi se faccio solo il ringhio
cosa giusta così solo io
Non disabiliterò il compilatore quindi
lo farò allo stesso modo e andrò
torna alle diapositive per non rovinare il
risultati funzionerà allo stesso modo per 40
secondi per scaldarlo e poi basta
le cose quindi quanti di voi pensano che ruggiscano VM
sarà più veloce qui con la ragazza
compilatore sì sì, sarà più veloce
dovrebbe essere più veloce giusto quanti di voi
quanto più veloce sarà come cinque
per cento chi pensa che saranno le cinque
per cento più veloce è ragionevole cinque
cento non molto il 10 per cento uno va bene
la mano può andare più alta del 20 percento
non proprio si, la JVM è una
è la macchina virtuale più moderna
veramente molto veloce , è pesante
ottimizzato fa cose così anche
quando una percentuale è fuori dai grafici
incredibile incremento delle prestazioni in modo
tipicamente nel pubblico ci sarà
persone più ottimiste , quindi andremo a
come due volte più veloce e poi le persone tipo
di smettere di iniziare a dire su cinque
tempi più veloci perché è solo pazzesco
passano così quaranta secondi vediamo il
numeri e possiamo vederlo
esecuzione di questa operazione lì con
i benchmark del compilatore di terra anche
sebbene i numeri qui sotto siano solo dati
erano nove nove secondi per operazione
in c2 era 174 e 20 volte più veloce
questo è 20 volte più veloce di 20 volte
più veloce è che è fantastico
aumento delle prestazioni e ovviamente sì
questo è un punto di riferimento sintetico
giusto non sono carichi di lavoro rappresentativi
e nove nanosecondi per il suo funzionamento
probabilmente significa che il compilatore è giusto
davvero molto intelligente che sia giusto
lo collassa nel nulla
e restituisce solo il risultato ma mostra
che può essere molto più veloce anche su
piccoli pezzi di codice sono davvero
impressionante e davvero importante perché
ti dà capire che potrebbe essere
potenzialmente molto più veloce del
compilatore che stai usando in questo modo
prendilo con un granello di sale ma anche
prendilo come un invito a valutare
grahyam sui carichi di lavoro umani anche se tu
ottieni il 20% o se ottieni il 10% di più di te
previsto su questi nuovi benchmark che è
un sacco di prestazioni aggiuntive che
renderà i vostri clienti più felici che
potrebbe rendere il tuo provider cloud build
più piccolo se distribuisci le tue cose su
cloud sai che devi pagare
che se paghi il 20% in meno che potrebbe risparmiare
un sacco di soldi
quindi diamo un’occhiata ad altre cose
penso di avere altre cose qui, sì
L’ho fatto , noi corriamo, naturalmente, corriamo tutti
tipi di benchmark non solo quello ma noi
anche altri altri benchmark tipici
e tipo di articoli pubblicati su
che così per esempio valutiamo a
problema su diverse operazioni di flusso
diversi punti di riferimento su questo inizio
da semplice come questo e altro
complicato dove hai 10 filtri
chiamate e mappe e aggregazione diverse
operazioni di streaming e ha mostrato
risultati ragionevoli che Dravyam è due volte
come veloce o a volte più a volte a
un po ‘meno ma è più veloce di
hotspot su quei carichi di lavoro quindi corriamo
uno di quelli era JavaScript Scrabble
punto di riferimento è solo il gioco completo dal vivo
Scrabble che ho scritto usando gli stream API
e lo gestiamo e tu lo gestisci
un punto di riferimento dell’età della gemma in un ciclo e tu
anche ottenere prestazioni X due volte , quindi cosa
ti dice che, nonostante tutto
benchmarks forse questo incremento delle prestazioni
non è stabilito ma per il
codice a livello di applicazione che scrivi
perché molto probabilmente non scrivi
matematica aritmetica della sabbia di basso livello n
generazione di particelle allora allora probabilmente
per codificare quelle prestazioni aumentano
i benefici saranno più pronunciati se tu
usa altri linguaggi di gemma specialmente per
esempio Scala i risultati sono molto
affascinante quindi l’ edizione comunitaria
il compilatore ti dà qualcosa come il 10%
aumento delle prestazioni sui carichi di lavoro tipici
così, per esempio, abbiamo valutato quello giusto
compilare progetti Scala perché SBT e
Scala Co normali programmi di produzione Scala e
ti dà i numeri l’Enterprise
L’edizione ti dà un 10 a 1/3 di
incremento delle prestazioni e si can can
valuta questo così sei il benvenuto
che soprattutto le persone che stanno usando
Scala che ha una certa reputazione per
essere più lento in fase di compilazione che forse
potrebbe essere forse si dovrebbe guardare in
questo e ottenere un po ‘di quel tempo indietro e
per di più così che era solo numeri
correndo per terra
c’è questo ci sono due progetti
quali sono macchine virtuali per Java
giusto quindi c’è JDK aperto che è
per lo più sviluppato e mantenuto dal
gruppo drammatico di persone presso Oracle e il
comunità e numero di aziende e
c’è una VM di terra che è anche una
macchina virtuale che è capace
l’esecuzione di Java devi capirlo
quelli sono T diversi progetti con
visione diversa e diversa
priorità per cui Brown VM vuole essere il
macchina virtuale per eseguire tutto e
è ovunque progetto greenfield che siamo
nemmeno quella prima versione ancora
attualmente abbiamo il candidato per il rilascio
scrocchi fuori e apri JDK è molto maturo
progetto con milioni di implementazioni e
hanno bisogno di svalutare la stabilità all’indietro
modo di compatibilità più così ma questi due
i progetti funzionano come open source amichevole
progetti quindi, ad esempio, invia mandate JDK
alcune versioni indefinitamente nei limoni
include il compilatore di grant la versione di
il compilatore di concessione open source che
tirano nelle loro fonti JDK aperte
e puoi sperimentare con la sovvenzione
compilatore usando semplicemente il normale JDK aperto
e stiamo usando JDK aperto come
piattaforma per i nostri carichi di lavoro generali così noi
utilizzare l’intera JVM solo sostituendo la
compilatore un po ‘e noi ci stiamo provando
essere molto amichevoli e buoni cittadini di
la comunità open source sia noi che così
se provi con quelli a terra
compilatore nel lato JDK aperto quello che tu
devi farlo devi avere ragionevolmente
versione recente di Java e quindi solo tu
aggiungi un flag di linee comuni
quindi sblocchi le opzioni sperimentali di VM
perché usare il compilatore di terra è un
opzione sperimentale attualmente in
apri JDK e poi dici di usare JVM
Compilatore CI e quindi concedere il compilatore lo farà
essere il livello superiore just-in-time del compilatore in
il tuo JDK aperto in modo da poter eseguire il tuo normale
Java scaricalo da qualunque posto tu
scarica le build JDK aperte e ce ne saranno
essere ground compilare così la settimana scorsa a
un paio di settimane fa la scorsa settimana appena dentro
alla fine di ottobre c’era il codice Oracle
uno
conferenza e keynote hanno parlato
riguardo le prossime piante e, naturalmente
Ho citato i dati del progetto Valhalla
tipi e hanno mostrato questo punto di riferimento di
moltiplicazione della matrice che c’erano
più codice di quello e sei il benvenuto
per vedere il flusso lì, ma
essenzialmente ciò che fa si moltiplica
numeri complessi in modo da avere complessi
numeri e rappresentati come un oggetto
ha le parti reali e immaginarie e tu
fare alcune operazioni di matematica in questo e il
punto di riferimento ha mostrato che se se lo usano
un prototipo con Valhalla di valore
tipi che possono comprimere molto nella memoria
più efficiente e le prestazioni
migliora di dieci volte così che abbiamo fatto noi
ha preso questo punto di riferimento e lo gestiamo
compilatore a terra in JDK 11 aperto
che è attualmente valutabile in modo che possiamo
eseguire quello attualmente così i risultati sono a
il tavolo come questo
quindi se lo esegui su JDK 11 ottieni
il punteggio di come quello sette nove quattro
quattro e anche questo non è un secondi per
operazioni così inferiori è meglio e se tu
corri su JDK 11 con quelli comuni
line flags ottieni il doppio del risultato
e se lo esegui su Java 8 basato
costruito della corona VM Enterprise Edition
ottieni un po ‘più di prestazioni
potenziare di questo su questo particolare
carico di lavoro ma devi capirlo
è due volte più veloce e un po ‘più veloce
di quello
quindi cosa puoi fare attualmente se lo hai
quei carichi di lavoro che puoi valutare ringhiare
compilatore non ha nemmeno scaricato nuovo
macchina virtuale ma proprio come aggiungere
bandiere di linea comune che è un gioco da ragazzi
molto probabilmente non otterrai il
aumento delle prestazioni come quello per tutti
i tuoi carichi di lavoro ma ce ne sono diversi
davvero buone ottimizzazioni che guala
implementatori del compilatore c’era una domanda
per l’Enterprise Edition non lo sono
in realtà sono sicuro che lo eseguo sul mio così il
la domanda era perché il valore dell’errore qui è
così grande che eseguo questo sul mio macbook
che non è il più appropriato
macchina per eseguire i parametri di riferimento forse
stava accadendo qualcos’altro
forse non c’erano abbastanza iterazioni
perché ho appena eseguito questo per un paio di
minuti forse qualcosa quindi devi
rivalutare questo e ma tu hai come a
un paio di parole sulle ottimizzazioni
quello che porta quell’aumento di prestazione è
che il compilatore di controllo dravyam è fantastico
algoritmo inline inline polimorfica
così quando hai le interfacce
che chiami molto diversi
implementazioni di ottimizzazioni come dire
interfacce di raccolta che tutti
utilizza in ogni applicazione e grande
analisi di fuga quindi non generiamo come
tanto quanto molti oggetti nel
cicli più intimi e perché possiamo
eliminare quella creazione di oggetti che possiamo
basta operare in pila con la primitiva
valori e quindi si risparmia sulla creazione
oggetti che si salvano sulla garbage collection
e tu risparmi su tutto il resto e poi
inline tutto meglio
quindi a causa di quei tre penso a quelli
sono le ottimizzazioni più importanti per
i carichi di lavoro come quello a causa di ciò
ottieni quei numeri che Twitter è uno
società che utilizza il compilatore di terra in
produzione in questo momento in modo che siano in esecuzione
i loro micro servizi Scala Scala con
il compilatore di terra non penso
stanno usando So che non stanno usando
le nostre build di growl iam ma loro solo
inserisci un compilatore nel JDK aperto
usando JVM sky e Chris dicendole che lo è
un ingegnere del gruppo ingegneristico di Twitter VM
e lo fa presentazioni su come
usa quello e alcuni dove si tratta di come
per misurare i miglioramenti delle prestazioni
per esempio il compilatore growl è scritto in
Java così quando attualmente lo stai facendo
è necessario compilare prima quel codice macchina
per compilare in modo efficiente altro codice così da te
è necessario dargli un po ‘
più caldo per i tuoi parametri di riferimento perché
ci sono più cose da compilare e
anche perché è solo il codice Java che usa
Giava
mantieni la compilation così inizialmente
si potrebbe vedere un maggior utilizzo dell’heap perché questo
mette semplicemente l’infrastruttura del compilatore
dati nel tuo heap e poi dopo il
la compilazione è terminata
si arriva di nuovo a voi, ma che potrebbe essere un
problema inaspettato se lo fai benchmark
Raccomando di ascoltare i suoi discorsi e
lui dimostra che anche il compilatore di growl
la Community Edition offre prestazioni
aumentare a loro e incoraggia gli altri
le persone a provare quale è quello che vorrei anche io
piacerebbe dirti se hai una possibilità
prova compilatore di gabbiani o graham build e
torna da noi con i risultati che abbiamo
vorrebbe farlo davvero bene
runtime così ma abbastanza su java per a
momento parliamo di altre lingue
perché vogliamo sostenere gli altri
le lingue è perché l’ecosistema di
lingue diverse o molto grandi così
ha senso che a volte il meglio
lo strumento per un dato problema non è da usare
la lingua che stai attualmente
usando o quale sia la tua piattaforma al momento
supporta ma lui è qualcos’altro lì
ci sono mezzo milione di moduli su
NPM tutto ciò che vale letteralmente
la scrittura è stata scritta in JavaScript
ad un certo punto del tempo, così puoi farlo
usa queste implementazioni per esempio
da qualsiasi altra lingua o puoi usare
le tue librerie Java da qualsiasi altra
linguaggio quindi ha senso abilitare
questa interoperabilità tra diversi
cose quindi vorrei mostrarti
un’altra demo quanti di voi usano Spring
Quadro di scrittura eccellente web
applicazioni quindi è qualcosa che
L’ ecosistema Java è noto per la sua scrittura
applicazioni primaverili quindi diamo un’occhiata
Questo mi lascia solo mostrare Ho un
applicazione di primavera qui fammi vedere se io
può renderlo più grande è una primavera normale
applicazione giusta così è
Applicazione Springwood e ne ha alcuni
fagioli ha alcune mappature richiesta così
con l’applicazione web ciò che è insolito
su questo è che mi piacerebbe che tu
mostrare l’interoperabilità tra la primavera
e così è noto il nostro linguaggio
essere eccellenti nei dati statistici
visualizzazione e elaborazione dati e
anche visualizzazione di grafici di dati e
tutto così se ti piacerebbe
arricchire le tue applicazioni Java esistenti
con un modulo di un’altra lingua questo
è ciò che potenzialmente puoi fare e questo
è come l’inter-tra diversi
le lingue funzionano così che devi fare
è necessario creare un contesto in cui
valuterai gli script in diversi
in una lingua diversa e qui nella mia
applicazione di primavera lo faccio in un molto
modo semplice quindi dico solo che lo farò
usa un contesto e questa è l’API da
i file jar M gravy quindi creerò a
contesto e dirò che basta costruire
così ora il mio contesto è un fagiolo primaverile
normalmente e la primavera lo avvierà
e nel fare le cose del ciclo di vita e ora
dopo di ciò posso dire che mi piacerebbe
per usare quel contesto il mio fagiolo qui in autunno
arte e mi piacerebbe valutare a
file sorgente che è un file artistico e
qui puoi vederlo quindi questo è ciò che è nostro
il codice in genere assomiglia a quello che fa
qui ci vogliono solo alcuni dati da un dato
titolare che è questo oggetto Java e
cosa fa oops quello che fa trame
i dati usando il pacchetto ggplot che
è normale il nostro pacchetto e si carica
così e restituisce un’immagine SVG così dentro
la mia applicazione Java che cosa valuto
quella fonte e io dico perché lo so
che questa sarebbe una funzione questo
lo script definisce solo una funzione
Diciamo che voglio una funzione su qualsiasi cavo automatico
quella funzione al mio fagiolo di funzione plot
quindi ora questa funzione e questo è normale
Interfaccia Java giusta interfaccia pubblica
funzione per
la funzione java.util del pacchetto quindi questo
è una normale funzione Java, ma questo è
questo non è solo una normale funzione Java
una funzione artistica così e lo userò
come una normale funzione Java, lo farò
chiamata applicare e passare dati normali Java
oggetti lì e poi correremo tutti
questa cosa come faccio a correre questa cosa io
verrà eseguito utilizzando l’applicazione a molla
smettere di farlo ci vorrà un momento per
iniziare perché è un’applicazione a molla
e ha bisogno di costruirlo
inizia e funziona e puoi vederlo
normale applicazione della molla, quindi cosa
fa in background si inizializza
i fagioli inizializza il contesto e
un motore per valutare altre lingue
per esempio qui R e va e carica
la sceneggiatura e valuta che la nostra
codice e crea la nostra funzione e
allora lo chiamiamo così se andiamo al
browser e facciamo 8080 carico e abbiamo
10 minuti, quindi stiamo andando andare più veloce che cosa
puoi vedere, spero che non ti rompa nulla
vedi che c’è un’immagine SVG che è
reso dalla nostra funzione che è
tipo di strabiliante allo stesso modo di te
può interrompere con il codice JavaScript o
Codice Python o codice rubino se vuoi e
puoi farlo da like in any
direzione dove se hai un nativo
libreria si può semplicemente chiamarlo attraverso il
Interprete LVM
la parte migliore è che questa Interop api
è unificato giusto quindi non devi
capisci oh questa è una funzione nativa
interfaccia o interfaccia di funzione straniera
hai i tuoi oggetti java che
rappresentare classi e valori e
funzioni da diverse lingue e
puoi usarli normalmente così ora il
il carico va giù ma smetteremo di farlo
veramente veloce perché non ne ho bisogno
più
e andrà più veloce in avanti, quindi che altro
può fare javascript in java 11 bello
corrente che era il motore per la corsa
JavaScript ontology mmm è stato deprecato
allo stesso tempo e questo è un
coincidenza perché il gruppo di Java ha deciso
che non vogliono sostenere nasara
più
grav yam fornisce un motore per
JavaScript che esegue JavaScript così è
compatibile con lo script equi quindi supporta
normali funzioni JavaScript e non di più
normali caratteristiche del linguaggio JavaScript e
è ragionevolmente veloce noi eseguiamo un numero di
punti di riferimento quindi se si guarda il
composito questa linea rosa è il
Community Edition e la linea rossa è
l’Enterprise Edition è approssimativamente
quattro e sei volte più veloce su quelli
benchmark punteggio composito rispetto alla massa
nato che è ciò che è grande e
inoltre è più facile per noi supportare nuovi
caratteristiche linguistiche perché abbiamo solo bisogno
per aggiungerli l’interprete non lo facciamo
bisogno di capire manualmente come
generare il bytecode efficiente da
è così che supporta l’ altra lingua
molto più facile su VM relazionare che altrimenti se
vuoi sperimentare con ljs o
javascript lo puoi fare su jdk di magazzino
quindi ci sono un sacco di esperti
dipendenze che puoi includere
ti darà il motore per ringhiare
GS the api per usare tutto questo e tu puoi
controlla la demo e puoi eseguirla
e puoi eseguire growl GS su jdk di riserva se
tu se usi questo compilatore corretto
qui dov’è il compilatore c’è il
compilatore di gara in modo da poter sostituire il
growl compilatore in open JDK con il
compattatore growl proveniente da un esperto
dipendenza quindi otterremo l’ultima
versione del reddito principale del ringhio
compilatore e quindi sarà in grado di
ottimizzare il modo dell’interprete JavaScript
meglio ma sei il benvenuto a provarlo
Ruby è più veloce e se sei interessato
in Ruby puoi guardare questa sessione per
benoît attraverso bakari’s quest’anno
dove parla di parallelismo e come
per eseguire Ruby e Ravi ham our our
l’implementazione è ragionevolmente più veloce di
sei e hai la possibilità di controllare
quel libro
ospitare uno dei bit più impressionanti
su questo è che i nostri utenti in questo
esempio usa un codice Fortran – per
ottimizzazione e percorsi critici quindi se noi
riscrivi quello nella nostra allora più avanzato
compiler in growl VM è in grado di ottimizzare
quel codice migliore e il suo risultato è
in realtà più veloce di ignorare le chiamate
Fortran quindi se vuoi codice veloce te
non è necessario scrivere codice nativo per questo
hai solo bisogno di usare un compilatore migliore
per Python siamo attualmente i più giovani
implementazione del motore per Brawl
vm allora perché attualmente ci si concentra sull’essere
compatibile con carichi di lavoro i5 non di prezzo
sei libero di provare i frammenti di codice e
i programmi di lingua funzionano ma il
la compatibilità con il sistema echo
non ancora al livello in cui hai appena eseguito
e non ci sono eccezioni quindi state attenti
oltre a questo essere questo pezzo centrale
tra le lingue e la piattaforma
ci consente di utilizzarlo come integrazione
punto per tutti gli strumenti in modo da poter utilizzare
un debugger per tutte quelle lingue
puoi usare un visualizzatore di heap su
capire cosa succede con la memoria
il tuo con la tua applicazione così è
la VM virtuale virtuale è possibile utilizzare il
profiler per tutto quel codice, quindi se lo sei
strumenti di scrittura o stai usando strumenti per
il tuo linguaggio di scrittura poi li ottieni
strumenti gratuiti se si implementa il tuo
linguaggio in cima al ringhio yeah quale
è fantastico e poi ha ancora cinque minuti in più
destra
sei minuti eccellenti tornano a
le persone primaverili usano la primavera e lo faremo
parlare di compilation alt solo per a
un paio di minuti in più, quindi lo sappiamo
le applicazioni di primavera su Java forse no
il più veloce da avviare quindi ho qui a
applicazione di primavera e io correrò che io
pre-compilare quello naturalmente e correremo
quello e possiamo contare tutti quanti come
molto tempo ci vorrà per iniziare una primavera
domanda quindi contiamo sui miei tre
inizieremo a contare uno due tre così
uno due tre facciamolo, facciamolo
di nuovo uno due tre ha fatto così
primavera
applicazione avviata in 24 millisecondi
sì che non è ora non è rotto
funziona ancora
oh forse si è rotto perché il precedente
uno è vincolante questa importazione no questo
fermato vediamo localhost: 8080
yeah yay ringhio di immagini native cosa
hai visto qui era la primavera
applicazione appositamente creata così è
non ancora pienamente supportando il tutto
ecosistema di applicazione primaverile I
applicazione stringa appositamente realizzata
che è stato compilato in anticipo per a
immagine nativa all’eseguibile standalone
che puoi correre e come puoi vedere
l’eseguibile non richiede un virtuale
sistema la JVM alla macchina virtuale java
quindi inizia davvero molto velocemente in 24
millisecondi quindi se stai gestendo il tuo
carichi di lavoro nelle distribuzioni in cui il
l’avvio è davvero importante come te
usando un ambiente di servizio funzionale
dove hai solo bisogno di un po ‘di
il calcolo sta accadendo e tu non vuoi
forse per pagare i costi di start-up
qualcosa di simile sarebbe sarebbe
interessante per te, quindi torniamo indietro
alle diapositive e parla di perché no
tutti stanno usando questo sì e allora
succede sullo sfondo è pieno
alt compilation al codice macchina così
normalmente corri sull’hotspot che è
è pre compilato e quindi il codice Java è
eseguito dinamicamente così che cosa facciamo noi
pre compilare tutto ciò e forniamo a
piccola macchina virtuale che farebbe il
raccolta dei rifiuti per te e il
filo spola tutto ciò che ho detto
i componenti che la VM deve fornire
per il runtime, quindi il tuo programma è ancora
gira con un garbage collection che dà
illusione della memoria infinita e
puoi ancora eseguire lingue dinamiche
in cima a quello, ma al momento non puoi
aggiungere dinamicamente classi Java così là
non sarà caricato in classe dinamica
attualmente possibile con ciò che è
uno dei limiti ce ne sono altri
limitazioni pure che sono completamente
documentato su alzati e sei il benvenuto
per seguirlo, ma essenzialmente cosa
succede è che prendiamo tutte le classi
Classi Java e li analizziamo
staticamente e vediamo cosa raggiunge e
chiama cosa e poi produciamo il
codice macchina
usando il compattatore growl come nella testa di
compilatore di tempo quindi diamo semplicemente il
bytecode per fronte e concessione ci dà
codice macchina e inseriamo il codice macchina
in un unico binario e poi avvolgerlo
con i bit eseguibili per essere in grado di
eseguire che l’avvio di quella cosa è
davvero davvero impressionante il ricordo
in testa a quella cosa è davvero
impressionante rispetto alla normale JVM
perché non abbiamo bisogno di macchinari per
aggiungi altro e carica altro
le classi non abbiamo bisogno del meta
informazioni sulle classi quindi non lo facciamo
ho bisogno di tanta memoria, quindi non sarebbe
come la cosa più importante per tutti
applicazioni quindi se stai correndo a lungo
in esecuzione quindi su server normali
probabilmente il compilatore JIT è il migliore
amico comunque ma se lo sei davvero
in attesa di avvio questo è il
cosa che si potrebbe esaminare per
esempio se corri in Scala puoi farlo
compila Scala C all’immagine nativa e poi
inizia davvero molto velocemente più velocemente
che normalmente è fantastico
perché ancora una volta Scala non è nota
per avere il compilatore più veloce o il
più veloce compilatore di partenza quindi siamo
benvenuti a provare che ci sono un paio
di app di linee comuni che sono state
convertito e non vediamo l’ora
aumentare il supporto agli ecosistemi
se stai cercando in particolare
molla attualmente fuori dalla scatola di primavera
le lacune e le app di avvio a molla non funzioneranno
con quella squadra di primavera e rally em team
ci stiamo lavorando per portare questo
compatibilità insieme puoi seguire
quel problema penso che questo sia chiuso
attualmente ma si collega a tutti gli altri
questioni importanti e puoi vedere il
progredire lì e per le immagini native
attualmente Linux Mac OS Java 8 così siamo
lavorando per portare il supporto di Windows
lì e stiamo lavorando per abilitare
che in Java 11 in modo ci si può aspettare che
in futuro non ci sono stime di tempo
attualmente da me ma lo porteremo
c’è così e poi avremo il pieno
ecosistema di sistemi operativi ma
attualmente per la maggior parte dei casi d’uso di produzione
tutti eseguono principalmente le esecuzioni di Linux
tutti eseguono Linux quindi è fantastico
perché è supportato così alto
livello di linguaggio poliglotta prestazioni
ritualizzazione integrabile attraverso il
stack a questo punto del tempo mostrerei
tu
demo come si può eseguire gravy em JavaScript
motore in un database Oracle così tu
puoi scrivere scrivere le tue stored procedure
come in JavaScript invece di seguito di Kiel
quindi se non sei un fan delle pillole se tu
conosci il sequel di PL che sei bravo che puoi
scrivi le tue procedure e definite dall’utente
funzioni semplici ma se non lo sono
forse JavaScript è una scelta migliore per
tu ho quella demo che puoi, puoi
scarica e gioca con lo sperimentale
costruisce di quello che è possibile provare
che sei il benvenuto nel trovarlo
Internet ha recentemente annunciato un apice
che è un modo in cui puoi costruire il pieno
applicazione all’interno del virtuale all’interno
database in modo da poter eseguire JavaScript
e Python attraverso la valvola sono dentro il
database e ed e usarlo per il
applicazioni complete ce ne sono molte
persone che lavorano sul terreno principale
progetto dentro che era collassato lì
siamo più contributori esterni che siamo
lavorando con Red Hat per portare l’arco
64 supporto come l’altra infrastruttura
le persone contribuiscono pensando che sia così
se lo sei se vuoi farlo
la costruzione di una macchina virtuale è a
lo sforzo della comunità sarebbe fantastico se
puoi scaricare e provare il tuo
applicazioni se ci si connette con noi se
ci dici cosa non funziona cosa è
lavorando bene dove possiamo migliorare voi
ci puoi trovare su alzati puoi trovarci
mailing lists puoi twittare su di noi e noi
tornerà da te
vogliamo davvero essere davvero aperti
progetto sorgente ma per questo abbiamo bisogno del
aiuto della comunità grazie
1 1 2 3 5 ciao, il mio nome è Oleg, grazie
per l’ introduzione e lo faremo
parlare di valium e sono molto felice
che ha scelto questo argomento perché in effetti
questo è uno sviluppo piuttosto eccitante
nel mondo delle macchine virtuali
linguaggi di programmazione e sembrano essere in
l’ industria altrove
Lavoro come promotore degli sviluppatori per il ringhio
veeam o crollo che è una ricerca
e dipartimento di sviluppo all’interno di Oracle
Quindi l’obiettivo di che è quello di fare in realtà
tu ricerca accademica e spingi il
confini di ciò che conosciamo come umanità
in informatica e nel software
ingegnerizzare e accumulare quelle
quella conoscenza e poi ad un certo punto
convertirlo in progetti industriali
si spera per il beneficio del
comunità e la società madre ma esso
è e istituto di ricerca prima così
ci sono un bel po ‘di carte accademiche
e se proprio vuoi piacere nel profondo
dettagli di livello su gravia e come sono
implementato allora forse puoi guardare
in che sono disponibile nel
La maggior parte di Internet passa quasi per cenere
ovunque se vuoi fare domande
ma per qualche motivo non sei riuscito a farlo
fallo qui faccia a faccia solo per twittare
Sarò felice di trasferire in qualsiasi momento, ma
Ravi, mi occupo di ingegneria del software di vita
o qualsiasi cosa senza alcun particolare
differenza quindi se avete domande qui
e tu non vuoi chiedere loro dopo
per favore usi l’app è abbastanza
importante anche per favore non basare nessuno
per fare qualche impresa in forte crescita
decisioni basate sulla fiducia di
questa presentazione è molto importante
ma con tutte quelle cose necessarie fuori
parliamo del growl VM
dravyam è un poliglotta ad alte prestazioni
macchina virtuale incorporabile capace di
esecuzione di programmi scritti in diversi
le lingue
attualmente supporta le lingue jvm così
Java Catalan Scala chiusura Dru V e così via
sopra
abbiamo notato l’implementazione e a
Motore JavaScript abbiamo Ruby
implementazione anche il nostro Python e noi
ha anche un interprete LLVM così anche se
stai cercando di eseguire il codice nativo, se tu
riesci a compilare questo tramite LLVM tu
può funzionare sopra a Gravia e il
la promessa del problema è che vogliamo
per essere il più veloce
macchina virtuale ad alte prestazioni per tutti
date le lingue quindi dovrebbe essere il
macchina virtuale per qualsiasi applicazione
scritta qualsiasi lingua che si desidera
eseguire se si parla di tutta la guavian
nella singola immagine se vuoi
portare via una cosa da questa sessione
quindi probabilmente questa diapositiva è ciò che voglio
tu per ricordare così sugo non sono solo io
può supportare tutte quelle lingue ed eseguire
terminali scritti con entrambi
individualmente e nel mix
interoperando tra diversi
lingue ma può anche essere eseguito
diversi contesti nell’uso del sottostante
piattaforme in modo da poter eseguire programmi
scritto in quelle lingue in cima al
JVM e attualmente siamo aperti JDK che puoi
eseguirli nel contesto della nota normale
applicazione quindi ci sarà il normale
ciclo di eventi e tutto ciò che è
previsto dalla distribuzione del nodo è
anche incorporato quindi è stato progettato da
l’inizio di essere modulare e utilizzare il
componenti diversi componenti
necessario per eseguire una programmazione gestita
lingua dalla piattaforma sottostante così
per esempio puoi fornire una spazzatura
implementazione della collezione dall’esterno
o codice shuttling thread shadowing o
codice
tutto questo in modo che tu possa incorporarlo nel tuo
applicazioni e arricchirle con
possibilità di eseguire programmi in questi
lingue in questo modo
puoi eseguirlo di più nel database Oracle
per esempio nel mio sequel o se lo hai
qualsiasi piattaforma che si desidera
incorporalo sia su base Java sia nativo
piattaforme puoi farlo e anche tu
puoi compilare il tuo bytecode JVM su un
immagine nativa autonoma per eseguire tutto
libreria binaria o condivisa ed esegui come
codice nativo che quale che è a
piattaforma diversa e quindi quanti
di te usi Java per lo più giorno per giorno
altre lingue del genoma eccellenti
Scala, questo potrebbe essere molto
interessante per te
In particolare , dovremmo davvero grandioso
risultati per carichi di lavoro eruditi
javascript un paio di persone eccellenti
qualcosa dalle altre cose, Ruby
sono Python non così tanto ma sì alcuni
la gente lo fa in un certo senso cosa li coltiva
attualmente supporta e quelle cose sono
in diverse fasi di maturità e
compatibilità con il sistema eco ma cosa
supporta o sosterrà dentro nel
tipo futuro di maniglie la cima del
i più popolari linguaggi di programmazione
attualmente in uso così nel nel
profondità del problema ciò che accade è
che trasforma la programmazione
lingue e interpreti per quei due
e un compilatore molto efficiente e poi
può compilare il codice da quelli
lingue la macchina molto efficiente
codice e tipo di iniettare quello ed eseguire
quelle piattaforme così ti alzi
prestazioni in tutti questi contesti
perché a causa del compilatore e con
tutto questo se sei interessato a
diversi casi d’uso in cui è possibile utilizzare
volume ciò che puoi fare puoi leggere a
post sul blog di Chris Eaton che è
attualmente il
lead di progetto per la nostra implementazione di Ruby
e in aprile ha scritto la top 10
cose da fare con la rissa VM e cosa
può essere per te e anche per alcune persone
la squadra di terra ne fu sorpresa
Braham può davvero farlo perché è così
un progetto molto versatile quindi lo faremo io
mostra un paio di demo per diversi
le cose qui ma se vuoi prendere un
loop solo se c’è una risorsa
e si può si può provare voi stessi da
il punto di vista dell’architettura sembra
così che in fondo avremo un
piattaforma sottostante in questo caso questo
sarebbe l’ hotspot VM della normale JVM
ma potrebbe essere nota o qualcos’altro
Qui
quindi con hotspot lo strato successivo è il
growl compilatore e il compilatore growl
si integra con JVM usando il cielo JVM che
è il compilatore di macchine virtuali Java
interfaccia che è il modo normale come
dovresti collegare un compilatore di terze parti
nella JVM quindi c’è un definito
interfaccia è stata aggiunta in Java 9 e noi
di nuovo su Java 8 e in pratica
ciò che dà alla JVM un’opportunità
basta chiamare un compilatore di terze parti e
Dice di dire oh, ecco il mio codice per favore
Ottimizza questo per me compila questo
per codice macchina ed è così grandioso
compilatore si inserisce e proprio attraverso quelli
due livelli possiamo eseguire bytecode JVM
perché con l’intera JVM come piattaforma
può fare tutto normalmente con la JVM
fa e poi viene fornito il normale bytecode Java
e il compilatore può ottimizzare che
e compilare quello per codice macchina in modo che il
lingue jvm supportate direttamente e
poi in aggiunta a quello per altre lingue
integrazioni c’è strato aggiuntivo
strato chiamato tartufo quadro così
la struttura del tartufo è la struttura per
creare i linguaggi gestiti che ti dà
un’API per definire un interprete per
linguaggio in modo da non dover scrivere un
ottimizzando il compilatore o il completo virtuale
macchina ma di cosa hai bisogno per fare
per definirlo in una sintassi astratta
interprete albero fondamentalmente un albero
composto da nodi che definiscono
operazioni
e poi si passa attraverso l’albero nel
valle quella nota di luce nota come te
farebbe normalmente un interprete e
gravia lo compilerà e ottimizzerà
che a runtime in modo molto efficiente attraverso
così che abbiamo Ruby e tutti quelli
interpreti e abbiamo un LLVM inter
interprete di codice bit attraverso il quale
le forme native possono essere eseguite questo è molto
importante perché per quelli dinamici
le lingue con cui molti di loro vengono
estensioni native quando le persone hanno realizzato
che un certo codice non funziona fino a
le loro aspettative hanno riscritto
alcune parti di quel comportamento in nativo
lingue per migliorare la velocità
prestazioni di quei percorsi critici così
al fine di sostenere l’ecosistema di
quelle lingue che dovevamo essere in grado di
esegui codice nativo e con Olivia
interprete possiamo farlo e porta
risultati molto affascinanti quindi se parliamo
riguardo alle prestazioni questo è approssimativo
risultato approssimativo che abbiamo ottenuto nel
estate penso che l’anno scorso da uno dei
documenti accademici che confrontano il sorteggio con il
concorrenza in modo da poter vedere che abbiamo
risultati un po ‘migliori rispetto a Java o
normale codice Java e questo è tutto
i benchmark del normale disaccoppiamento e
tutto ciò che potrebbe non essere come
significativo ma anche non male come
JVM è davvero virtuale allo stato dell’arte
macchina molte persone molto intelligenti
ha lavorato molto duramente per molti anni
è molto veloce e non lo è
non è facile come sembra diverso
carichi di lavoro che otteniamo diversi
risultati e devi valutare sul tuo
codice ma anche su tutto il
benchmark in media otteniamo un po ‘
un po ‘di miglioramento delle prestazioni per le prestazioni
delle altre lingue anche jvm
lingue potrebbe essere il modo migliore per
Scala per esempio mostriamo qualcosa di simile
20 miglioramenti del 25 % perché Scala
bytecode i modelli di bytecode che
Il codice Scala emette che non sono simili a
il normale Java ai genitori normali
che i programmi Java generano proprio così
Ct il normale compilatore sa molto
intimamente su quali genitori bytecode
sono creati da programmi Java e se li hanno
disegnato insieme quindi è molto meglio
ottimizzazione del codice Java rispetto al codice Scala
così su Scala e altri linguaggi jvm noi
ottenere un aumento delle prestazioni più grande tipico
linguaggi dinamici otteniamo molto di più e
molto interessante otteniamo un ottimo risultato
preferiscono le prestazioni fuori dall’ascensore
per il codice nativo che è in realtà
totalmente sorprendente per me stesso ma otteniamo
che e ci sono solo un po ‘più lento
rispetto a v8 che è molto buono
macchina virtuale per JavaScript ma DRA
VM è una macchina virtuale per eseguire tutto
quelle lingue quindi ci arriveremo
qualche punto del tempo speriamo che dovrebbe
essere il migliore la preferenza più alta
macchina virtuale per tutte le lingue quindi
squadra sta lavorando al miglioramento per
telefoni per tutti quelli così così se
vuoi sapere come li otteniamo
risultati questo è uno dei documenti che io
raccomanderei che sia un documento accademico
quindi non è scritto come un tipico blog
post, ma è davvero abbastanza facile
capisco o atlas skim e parla
sulla tecnica di valutazione parziale
e tu sei il benvenuto a leggerlo così
spiega come ottimizziamo l’ast
alberi sintattici astratti degli introversi
prima di darlo al compilatore JIT
quindi ci sono diversi livelli di
le ottimizzazioni accadono quindi se lo sei
interessato a come puoi ottenere tutto questo
roba buona questa è una fonte aperta
progetto in modo da poter andare a github il
lo sviluppo sta accadendo su GitHub
è la scansione flash di Oracle ci sono a
coppia altri repository per esempio
per gli intrapreneurs per javascript
c’è un repository separato e
python è un’implementazione diversa
repository separato ma questo è il principale
uno e puoi seguire i link a
altri puoi guardare il codice uno
dei grandi benefici del
growl vm project is that all of the
le cose sono scritte in Java quindi se lo sei
interessato a macchine virtuali o
compilatori o altro ma in qualche modo il tuo
la conoscenza del codice nativo ti ha fermato
dalla ricerca di questo e tu sei come me
non proprio sicuro di quale sia il
operatore di dereferenziazione è o commerciale o
una stella o un punto interrogativo non è un
punto interrogativo che conosco ma se
non siete sicuri, ma eri in grado di
leggere la scrittura e comprendere il codice Java
puoi dare un’occhiata e tu puoi
capire cosa sta succedendo dietro il
tende all’interno della macchina virtuale così
è possibile scaricare i file binari solo se
vuoi usarlo non solo ricerca o
contribuire a qualsiasi cosa tu possa
scaricali dal grow em che org
sito web c’è un’edizione comunitaria
che si basa sull’open source
componenti che puoi vedere su
github quindi puoi costruirlo tu stesso o
puoi usare il nostro costruito e attualmente esso
è per Linux e Mac OS e c’è un
Enterprise Edition che viene fornito con
dare un compilatore avanzato più potente
tu prestazioni aggiuntive e alcuni
funzionalità di sicurezza e scalabilità ma
questo è un valore aggiuntivo che puoi fare
tutto, tutti i demo e tutto il resto
carichi di lavoro sull’edizione comunitaria ma
se scegli consapevolmente di optare per
prestazioni migliori che sei il benvenuto
valutare e provare l’ edizione Enterprise
e devi scaricarlo da
Oracle Technology Network quindi devi
accetta questa casella di controllo dicendo questo
hai letto la licenza di valutazione ma lui
può valutarlo e vedere cosa
potenziamento delle prestazioni che ti dà e come
puoi interrompere la community
L’edizione è funzionalmente completa per te
puoi usare quello se vuoi il
le licenze per coloro che sono al
L’edizione comunitaria è ragionevole
l’ecosistema per Java parte questo
GPL le due eccezioni del passaggio di classe plus
proprio come aprire JDK lo script Java
il runtime fresato è sotto il nodo normale
licenza Python e quindi potrebbe essere un
sostituzione drop-in per quelli
Runtimes se vuoi che sia il reale
implementazioni degli interpreti che
abbiamo creato sotto la GPL che è
il principio universale è quello che è
un mito come licenza molto molto sicuro
gratis quindi sei libero di provarlo e vedere
dove ti porta così ora è demo
tempo da quando hai detto tutti che molti di voi
ho detto che per lo più stai facendo Java
ti mostrerò cosa può fare graylien
il tuo codice Java quindi vediamo che ho un
punto di riferimento qui è un flusso Java semplice
punto di riferimento ed è molto semplice così è
normale benchmark jmh quindi Java micro
Cablaggio di riferimento So che lo fa giusto
ha solo una lista di numeri interi e
quindi esegue le tipiche operazioni di streaming
in cima a quelli
così trasmetti in streaming quella matrice e poi tu
mappare un paio di funzioni tutte sopra
quello e poi lo gestisci e ottieni
cosa ottieni riceverai un numero indietro così
questo è il codice che tipicamente
vedrebbe in una normale applicazioni giusto
voi quanti usereste Java 8 e
dopo
per curiosità Giovanni 9 e dopo come
molti di voi sono emigrati bene, quindi lo siamo
provvedendo alle fatture gravettiane siamo
fornendo build basate su Java 8 in modo da voi se
vuoi valutarlo sul tuo codice
puoi semplicemente scaricarlo e avere un
sostituire hanno appena sostituito il tuo normale
JVM con quello così ho questa VM grigia
Enterprise Edition qui ho scaricato
che puoi vedere che se guardi dentro
nella cartella bin troverai un normale
Comandi Java lì java java c e
tutto ciò che troverai anche normale
JavaScript comanda j / s e ne nota alcuni
comandi per il nostro Python Ruby e così via
quindi puoi semplicemente scaricare quel file e
usa questo Java al posto del tuo normale
Java e C
dove ti porta così ho il mio
punto di riferimento e ho compilato quello e poi
lo gestiremo così prima di tutto
esegui questo e eseguirò questo con no
ringhio lascia che ti mostri cos’è questo così noi
userà il genere da growl VM
ma disabiliteremo il compilatore s JVM
disabiliteremo il compilatore growl così
questo funzionerà con CT normale e poi
ti mostreremo che voglio solo che tu lo mostri
la differenza quindi funzionerà per 40
secondi ma quello che fa in sostanza
carica una macchina e cerca nuove minacce
e esegue quel codice ancora e ancora
e di nuovo per consentire a JIT di ottimizzarlo
codice e ed eseguirlo il più velocemente possibile
possibile così e ha scaldato qualcosa
e poi fa le iterazioni e it
riporterà i numeri che devono
capisci che quei numeri sono giusti
numeri che devi interpretare
non puoi semplicemente guardare i numeri e
ed essere davvero eccitato ed estrapolare
questo a tutti i carichi di lavoro ma quei numeri
stanno ragionevolmente mostrando qualcosa in modo nostro
il punteggio qui è 174 nanosecondi per
operazione per una chiamata al metodo che è 174
nanosecondi quindi se faccio solo il ringhio
cosa giusta così solo io
Non disabiliterò il compilatore quindi
lo farò allo stesso modo e andrò
torna alle diapositive per non rovinare il
risultati funzionerà allo stesso modo per 40
secondi per scaldarlo e poi basta
le cose quindi quanti di voi pensano che ruggiscano VM
sarà più veloce qui con la ragazza
compilatore sì sì, sarà più veloce
dovrebbe essere più veloce giusto quanti di voi
quanto più veloce sarà come cinque
per cento chi pensa che saranno le cinque
per cento più veloce è ragionevole cinque
cento non molto il 10 per cento uno va bene
la mano può andare più alta del 20 percento
non proprio si, la JVM è una
è la macchina virtuale più moderna
veramente molto veloce , è pesante
ottimizzato fa cose così anche
quando una percentuale è fuori dai grafici
incredibile incremento delle prestazioni in modo
tipicamente nel pubblico ci sarà
persone più ottimiste , quindi andremo a
come due volte più veloce e poi le persone tipo
di smettere di iniziare a dire su cinque
tempi più veloci perché è solo pazzesco
passano così quaranta secondi vediamo il
numeri e possiamo vederlo
esecuzione di questa operazione lì con
i benchmark del compilatore di terra anche
sebbene i numeri qui sotto siano solo dati
erano nove nove secondi per operazione
in c2 era 174 e 20 volte più veloce
questo è 20 volte più veloce di 20 volte
più veloce è che è fantastico
aumento delle prestazioni e ovviamente sì
questo è un punto di riferimento sintetico
giusto non sono carichi di lavoro rappresentativi
e nove nanosecondi per il suo funzionamento
probabilmente significa che il compilatore è giusto
davvero molto intelligente che sia giusto
lo collassa nel nulla
e restituisce solo il risultato ma mostra
che può essere molto più veloce anche su
piccoli pezzi di codice sono davvero
impressionante e davvero importante perché
ti dà capire che potrebbe essere
potenzialmente molto più veloce del
compilatore che stai usando in questo modo
prendilo con un granello di sale ma anche
prendilo come un invito a valutare
grahyam sui carichi di lavoro umani anche se tu
ottieni il 20% o se ottieni il 10% di più di te
previsto su questi nuovi benchmark che è
un sacco di prestazioni aggiuntive che
renderà i vostri clienti più felici che
potrebbe rendere il tuo provider cloud build
più piccolo se distribuisci le tue cose su
cloud sai che devi pagare
che se paghi il 20% in meno che potrebbe risparmiare
un sacco di soldi
quindi diamo un’occhiata ad altre cose
penso di avere altre cose qui, sì
L’ho fatto , noi corriamo, naturalmente, corriamo tutti
tipi di benchmark non solo quello ma noi
anche altri altri benchmark tipici
e tipo di articoli pubblicati su
che così per esempio valutiamo a
problema su diverse operazioni di flusso
diversi punti di riferimento su questo inizio
da semplice come questo e altro
complicato dove hai 10 filtri
chiamate e mappe e aggregazione diverse
operazioni di streaming e ha mostrato
risultati ragionevoli che Dravyam è due volte
come veloce o a volte più a volte a
un po ‘meno ma è più veloce di
hotspot su quei carichi di lavoro quindi corriamo
uno di quelli era JavaScript Scrabble
punto di riferimento è solo il gioco completo dal vivo
Scrabble che ho scritto usando gli stream API
e lo gestiamo e tu lo gestisci
un punto di riferimento dell’età della gemma in un ciclo e tu
anche ottenere prestazioni X due volte , quindi cosa
ti dice che, nonostante tutto
benchmarks forse questo incremento delle prestazioni
non è stabilito ma per il
codice a livello di applicazione che scrivi
perché molto probabilmente non scrivi
matematica aritmetica della sabbia di basso livello n
generazione di particelle allora allora probabilmente
per codificare quelle prestazioni aumentano
i benefici saranno più pronunciati se tu
usa altri linguaggi di gemma specialmente per
esempio Scala i risultati sono molto
affascinante quindi l’ edizione comunitaria
il compilatore ti dà qualcosa come il 10%
aumento delle prestazioni sui carichi di lavoro tipici
così, per esempio, abbiamo valutato quello giusto
compilare progetti Scala perché SBT e
Scala Co normali programmi di produzione Scala e
ti dà i numeri l’Enterprise
L’edizione ti dà un 10 a 1/3 di
incremento delle prestazioni e si can can
valuta questo così sei il benvenuto
che soprattutto le persone che stanno usando
Scala che ha una certa reputazione per
essere più lento in fase di compilazione che forse
potrebbe essere forse si dovrebbe guardare in
questo e ottenere un po ‘di quel tempo indietro e
per di più così che era solo numeri
correndo per terra
c’è questo ci sono due progetti
quali sono macchine virtuali per Java
giusto quindi c’è JDK aperto che è
per lo più sviluppato e mantenuto dal
gruppo drammatico di persone presso Oracle e il
comunità e numero di aziende e
c’è una VM di terra che è anche una
macchina virtuale che è capace
l’esecuzione di Java devi capirlo
quelli sono T diversi progetti con
visione diversa e diversa
priorità per cui Brown VM vuole essere il
macchina virtuale per eseguire tutto e
è ovunque progetto greenfield che siamo
nemmeno quella prima versione ancora
attualmente abbiamo il candidato per il rilascio
scrocchi fuori e apri JDK è molto maturo
progetto con milioni di implementazioni e
hanno bisogno di svalutare la stabilità all’indietro
modo di compatibilità più così ma questi due
i progetti funzionano come open source amichevole
progetti quindi, ad esempio, invia mandate JDK
alcune versioni indefinitamente nei limoni
include il compilatore di grant la versione di
il compilatore di concessione open source che
tirano nelle loro fonti JDK aperte
e puoi sperimentare con la sovvenzione
compilatore usando semplicemente il normale JDK aperto
e stiamo usando JDK aperto come
piattaforma per i nostri carichi di lavoro generali così noi
utilizzare l’intera JVM solo sostituendo la
compilatore un po ‘e noi ci stiamo provando
essere molto amichevoli e buoni cittadini di
la comunità open source sia noi che così
se provi con quelli a terra
compilatore nel lato JDK aperto quello che tu
devi farlo devi avere ragionevolmente
versione recente di Java e quindi solo tu
aggiungi un flag di linee comuni
quindi sblocchi le opzioni sperimentali di VM
perché usare il compilatore di terra è un
opzione sperimentale attualmente in
apri JDK e poi dici di usare JVM
Compilatore CI e quindi concedere il compilatore lo farà
essere il livello superiore just-in-time del compilatore in
il tuo JDK aperto in modo da poter eseguire il tuo normale
Java scaricalo da qualunque posto tu
scarica le build JDK aperte e ce ne saranno
essere ground compilare così la settimana scorsa a
un paio di settimane fa la scorsa settimana appena dentro
alla fine di ottobre c’era il codice Oracle
uno
conferenza e keynote hanno parlato
riguardo le prossime piante e, naturalmente
Ho citato i dati del progetto Valhalla
tipi e hanno mostrato questo punto di riferimento di
moltiplicazione della matrice che c’erano
più codice di quello e sei il benvenuto
per vedere il flusso lì, ma
essenzialmente ciò che fa si moltiplica
numeri complessi in modo da avere complessi
numeri e rappresentati come un oggetto
ha le parti reali e immaginarie e tu
fare alcune operazioni di matematica in questo e il
punto di riferimento ha mostrato che se se lo usano
un prototipo con Valhalla di valore
tipi che possono comprimere molto nella memoria
più efficiente e le prestazioni
migliora di dieci volte così che abbiamo fatto noi
ha preso questo punto di riferimento e lo gestiamo
compilatore a terra in JDK 11 aperto
che è attualmente valutabile in modo che possiamo
eseguire quello attualmente così i risultati sono a
il tavolo come questo
quindi se lo esegui su JDK 11 ottieni
il punteggio di come quello sette nove quattro
quattro e anche questo non è un secondi per
operazioni così inferiori è meglio e se tu
corri su JDK 11 con quelli comuni
line flags ottieni il doppio del risultato
e se lo esegui su Java 8 basato
costruito della corona VM Enterprise Edition
ottieni un po ‘più di prestazioni
potenziare di questo su questo particolare
carico di lavoro ma devi capirlo
è due volte più veloce e un po ‘più veloce
di quello
quindi cosa puoi fare attualmente se lo hai
quei carichi di lavoro che puoi valutare ringhiare
compilatore non ha nemmeno scaricato nuovo
macchina virtuale ma proprio come aggiungere
bandiere di linea comune che è un gioco da ragazzi
molto probabilmente non otterrai il
aumento delle prestazioni come quello per tutti
i tuoi carichi di lavoro ma ce ne sono diversi
davvero buone ottimizzazioni che guala
implementatori del compilatore c’era una domanda
per l’Enterprise Edition non lo sono
in realtà sono sicuro che lo eseguo sul mio così il
la domanda era perché il valore dell’errore qui è
così grande che eseguo questo sul mio macbook
che non è il più appropriato
macchina per eseguire i parametri di riferimento forse
stava accadendo qualcos’altro
forse non c’erano abbastanza iterazioni
perché ho appena eseguito questo per un paio di
minuti forse qualcosa quindi devi
rivalutare questo e ma tu hai come a
un paio di parole sulle ottimizzazioni
quello che porta quell’aumento di prestazione è
che il compilatore di controllo dravyam è fantastico
algoritmo inline inline polimorfica
così quando hai le interfacce
che chiami molto diversi
implementazioni di ottimizzazioni come dire
interfacce di raccolta che tutti
utilizza in ogni applicazione e grande
analisi di fuga quindi non generiamo come
tanto quanto molti oggetti nel
cicli più intimi e perché possiamo
eliminare quella creazione di oggetti che possiamo
basta operare in pila con la primitiva
valori e quindi si risparmia sulla creazione
oggetti che si salvano sulla garbage collection
e tu risparmi su tutto il resto e poi
inline tutto meglio
quindi a causa di quei tre penso a quelli
sono le ottimizzazioni più importanti per
i carichi di lavoro come quello a causa di ciò
ottieni quei numeri che Twitter è uno
società che utilizza il compilatore di terra in
produzione in questo momento in modo che siano in esecuzione
i loro micro servizi Scala Scala con
il compilatore di terra non penso
stanno usando So che non stanno usando
le nostre build di growl iam ma loro solo
inserisci un compilatore nel JDK aperto
usando JVM sky e Chris dicendole che lo è
un ingegnere del gruppo ingegneristico di Twitter VM
e lo fa presentazioni su come
usa quello e alcuni dove si tratta di come
per misurare i miglioramenti delle prestazioni
per esempio il compilatore growl è scritto in
Java così quando attualmente lo stai facendo
è necessario compilare prima quel codice macchina
per compilare in modo efficiente altro codice così da te
è necessario dargli un po ‘
più caldo per i tuoi parametri di riferimento perché
ci sono più cose da compilare e
anche perché è solo il codice Java che usa
Giava
mantieni la compilation così inizialmente
si potrebbe vedere un maggior utilizzo dell’heap perché questo
mette semplicemente l’infrastruttura del compilatore
dati nel tuo heap e poi dopo il
la compilazione è terminata
si arriva di nuovo a voi, ma che potrebbe essere un
problema inaspettato se lo fai benchmark
Raccomando di ascoltare i suoi discorsi e
lui dimostra che anche il compilatore di growl
la Community Edition offre prestazioni
aumentare a loro e incoraggia gli altri
le persone a provare quale è quello che vorrei anche io
piacerebbe dirti se hai una possibilità
prova compilatore di gabbiani o graham build e
torna da noi con i risultati che abbiamo
vorrebbe farlo davvero bene
runtime così ma abbastanza su java per a
momento parliamo di altre lingue
perché vogliamo sostenere gli altri
le lingue è perché l’ecosistema di
lingue diverse o molto grandi così
ha senso che a volte il meglio
lo strumento per un dato problema non è da usare
la lingua che stai attualmente
usando o quale sia la tua piattaforma al momento
supporta ma lui è qualcos’altro lì
ci sono mezzo milione di moduli su
NPM tutto ciò che vale letteralmente
la scrittura è stata scritta in JavaScript
ad un certo punto del tempo, così puoi farlo
usa queste implementazioni per esempio
da qualsiasi altra lingua o puoi usare
le tue librerie Java da qualsiasi altra
linguaggio quindi ha senso abilitare
questa interoperabilità tra diversi
cose quindi vorrei mostrarti
un’altra demo quanti di voi usano Spring
Quadro di scrittura eccellente web
applicazioni quindi è qualcosa che
L’ ecosistema Java è noto per la sua scrittura
applicazioni primaverili quindi diamo un’occhiata
Questo mi lascia solo mostrare Ho un
applicazione di primavera qui fammi vedere se io
può renderlo più grande è una primavera normale
applicazione giusta così è
Applicazione Springwood e ne ha alcuni
fagioli ha alcune mappature richiesta così
con l’applicazione web ciò che è insolito
su questo è che mi piacerebbe che tu
mostrare l’interoperabilità tra la primavera
e così è noto il nostro linguaggio
essere eccellenti nei dati statistici
visualizzazione e elaborazione dati e
anche visualizzazione di grafici di dati e
tutto così se ti piacerebbe
arricchire le tue applicazioni Java esistenti
con un modulo di un’altra lingua questo
è ciò che potenzialmente puoi fare e questo
è come l’inter-tra diversi
le lingue funzionano così che devi fare
è necessario creare un contesto in cui
valuterai gli script in diversi
in una lingua diversa e qui nella mia
applicazione di primavera lo faccio in un molto
modo semplice quindi dico solo che lo farò
usa un contesto e questa è l’API da
i file jar M gravy quindi creerò a
contesto e dirò che basta costruire
così ora il mio contesto è un fagiolo primaverile
normalmente e la primavera lo avvierà
e nel fare le cose del ciclo di vita e ora
dopo di ciò posso dire che mi piacerebbe
per usare quel contesto il mio fagiolo qui in autunno
arte e mi piacerebbe valutare a
file sorgente che è un file artistico e
qui puoi vederlo quindi questo è ciò che è nostro
il codice in genere assomiglia a quello che fa
qui ci vogliono solo alcuni dati da un dato
titolare che è questo oggetto Java e
cosa fa oops quello che fa trame
i dati usando il pacchetto ggplot che
è normale il nostro pacchetto e si carica
così e restituisce un’immagine SVG così dentro
la mia applicazione Java che cosa valuto
quella fonte e io dico perché lo so
che questa sarebbe una funzione questo
lo script definisce solo una funzione
Diciamo che voglio una funzione su qualsiasi cavo automatico
quella funzione al mio fagiolo di funzione plot
quindi ora questa funzione e questo è normale
Interfaccia Java giusta interfaccia pubblica
funzione per
la funzione java.util del pacchetto quindi questo
è una normale funzione Java, ma questo è
questo non è solo una normale funzione Java
una funzione artistica così e lo userò
come una normale funzione Java, lo farò
chiamata applicare e passare dati normali Java
oggetti lì e poi correremo tutti
questa cosa come faccio a correre questa cosa io
verrà eseguito utilizzando l’applicazione a molla
smettere di farlo ci vorrà un momento per
iniziare perché è un’applicazione a molla
e ha bisogno di costruirlo
inizia e funziona e puoi vederlo
normale applicazione della molla, quindi cosa
fa in background si inizializza
i fagioli inizializza il contesto e
un motore per valutare altre lingue
per esempio qui R e va e carica
la sceneggiatura e valuta che la nostra
codice e crea la nostra funzione e
allora lo chiamiamo così se andiamo al
browser e facciamo 8080 carico e abbiamo
10 minuti, quindi stiamo andando andare più veloce che cosa
puoi vedere, spero che non ti rompa nulla
vedi che c’è un’immagine SVG che è
reso dalla nostra funzione che è
tipo di strabiliante allo stesso modo di te
può interrompere con il codice JavaScript o
Codice Python o codice rubino se vuoi e
puoi farlo da like in any
direzione dove se hai un nativo
libreria si può semplicemente chiamarlo attraverso il
Interprete LVM
la parte migliore è che questa Interop api
è unificato giusto quindi non devi
capisci oh questa è una funzione nativa
interfaccia o interfaccia di funzione straniera
hai i tuoi oggetti java che
rappresentare classi e valori e
funzioni da diverse lingue e
puoi usarli normalmente così ora il
il carico va giù ma smetteremo di farlo
veramente veloce perché non ne ho bisogno
più
e andrà più veloce in avanti, quindi che altro
può fare javascript in java 11 bello
corrente che era il motore per la corsa
JavaScript ontology mmm è stato deprecato
allo stesso tempo e questo è un
coincidenza perché il gruppo di Java ha deciso
che non vogliono sostenere nasara
più
grav yam fornisce un motore per
JavaScript che esegue JavaScript così è
compatibile con lo script equi quindi supporta
normali funzioni JavaScript e non di più
normali caratteristiche del linguaggio JavaScript e
è ragionevolmente veloce noi eseguiamo un numero di
punti di riferimento quindi se si guarda il
composito questa linea rosa è il
Community Edition e la linea rossa è
l’Enterprise Edition è approssimativamente
quattro e sei volte più veloce su quelli
benchmark punteggio composito rispetto alla massa
nato che è ciò che è grande e
inoltre è più facile per noi supportare nuovi
caratteristiche linguistiche perché abbiamo solo bisogno
per aggiungerli l’interprete non lo facciamo
bisogno di capire manualmente come
generare il bytecode efficiente da
è così che supporta l’ altra lingua
molto più facile su VM relazionare che altrimenti se
vuoi sperimentare con ljs o
javascript lo puoi fare su jdk di magazzino
quindi ci sono un sacco di esperti
dipendenze che puoi includere
ti darà il motore per ringhiare
GS the api per usare tutto questo e tu puoi
controlla la demo e puoi eseguirla
e puoi eseguire growl GS su jdk di riserva se
tu se usi questo compilatore corretto
qui dov’è il compilatore c’è il
compilatore di gara in modo da poter sostituire il
growl compilatore in open JDK con il
compattatore growl proveniente da un esperto
dipendenza quindi otterremo l’ultima
versione del reddito principale del ringhio
compilatore e quindi sarà in grado di
ottimizzare il modo dell’interprete JavaScript
meglio ma sei il benvenuto a provarlo
Ruby è più veloce e se sei interessato
in Ruby puoi guardare questa sessione per
benoît attraverso bakari’s quest’anno
dove parla di parallelismo e come
per eseguire Ruby e Ravi ham our our
l’implementazione è ragionevolmente più veloce di
sei e hai la possibilità di controllare
quel libro
ospitare uno dei bit più impressionanti
su questo è che i nostri utenti in questo
esempio usa un codice Fortran – per
ottimizzazione e percorsi critici quindi se noi
riscrivi quello nella nostra allora più avanzato
compiler in growl VM è in grado di ottimizzare
quel codice migliore e il suo risultato è
in realtà più veloce di ignorare le chiamate
Fortran quindi se vuoi codice veloce te
non è necessario scrivere codice nativo per questo
hai solo bisogno di usare un compilatore migliore
per Python siamo attualmente i più giovani
implementazione del motore per Brawl
vm allora perché attualmente ci si concentra sull’essere
compatibile con carichi di lavoro i5 non di prezzo
sei libero di provare i frammenti di codice e
i programmi di lingua funzionano ma il
la compatibilità con il sistema echo
non ancora al livello in cui hai appena eseguito
e non ci sono eccezioni quindi state attenti
oltre a questo essere questo pezzo centrale
tra le lingue e la piattaforma
ci consente di utilizzarlo come integrazione
punto per tutti gli strumenti in modo da poter utilizzare
un debugger per tutte quelle lingue
puoi usare un visualizzatore di heap su
capire cosa succede con la memoria
il tuo con la tua applicazione così è
la VM virtuale virtuale è possibile utilizzare il
profiler per tutto quel codice, quindi se lo sei
strumenti di scrittura o stai usando strumenti per
il tuo linguaggio di scrittura poi li ottieni
strumenti gratuiti se si implementa il tuo
linguaggio in cima al ringhio yeah quale
è fantastico e poi ha ancora cinque minuti in più
destra
sei minuti eccellenti tornano a
le persone primaverili usano la primavera e lo faremo
parlare di compilation alt solo per a
un paio di minuti in più, quindi lo sappiamo
le applicazioni di primavera su Java forse no
il più veloce da avviare quindi ho qui a
applicazione di primavera e io correrò che io
pre-compilare quello naturalmente e correremo
quello e possiamo contare tutti quanti come
molto tempo ci vorrà per iniziare una primavera
domanda quindi contiamo sui miei tre
inizieremo a contare uno due tre così
uno due tre facciamolo, facciamolo
di nuovo uno due tre ha fatto così
primavera
applicazione avviata in 24 millisecondi
sì che non è ora non è rotto
funziona ancora
oh forse si è rotto perché il precedente
uno è vincolante questa importazione no questo
fermato vediamo localhost: 8080
yeah yay ringhio di immagini native cosa
hai visto qui era la primavera
applicazione appositamente creata così è
non ancora pienamente supportando il tutto
ecosistema di applicazione primaverile I
applicazione stringa appositamente realizzata
che è stato compilato in anticipo per a
immagine nativa all’eseguibile standalone
che puoi correre e come puoi vedere
l’eseguibile non richiede un virtuale
sistema la JVM alla macchina virtuale java
quindi inizia davvero molto velocemente in 24
millisecondi quindi se stai gestendo il tuo
carichi di lavoro nelle distribuzioni in cui il
l’avvio è davvero importante come te
usando un ambiente di servizio funzionale
dove hai solo bisogno di un po ‘di
il calcolo sta accadendo e tu non vuoi
forse per pagare i costi di start-up
qualcosa di simile sarebbe sarebbe
interessante per te, quindi torniamo indietro
alle diapositive e parla di perché no
tutti stanno usando questo sì e allora
succede sullo sfondo è pieno
alt compilation al codice macchina così
normalmente corri sull’hotspot che è
è pre compilato e quindi il codice Java è
eseguito dinamicamente così che cosa facciamo noi
pre compilare tutto ciò e forniamo a
piccola macchina virtuale che farebbe il
raccolta dei rifiuti per te e il
filo spola tutto ciò che ho detto
i componenti che la VM deve fornire
per il runtime, quindi il tuo programma è ancora
gira con un garbage collection che dà
illusione della memoria infinita e
puoi ancora eseguire lingue dinamiche
in cima a quello, ma al momento non puoi
aggiungere dinamicamente classi Java così là
non sarà caricato in classe dinamica
attualmente possibile con ciò che è
uno dei limiti ce ne sono altri
limitazioni pure che sono completamente
documentato su alzati e sei il benvenuto
per seguirlo, ma essenzialmente cosa
succede è che prendiamo tutte le classi
Classi Java e li analizziamo
staticamente e vediamo cosa raggiunge e
chiama cosa e poi produciamo il
codice macchina
usando il compattatore growl come nella testa di
compilatore di tempo quindi diamo semplicemente il
bytecode per fronte e concessione ci dà
codice macchina e inseriamo il codice macchina
in un unico binario e poi avvolgerlo
con i bit eseguibili per essere in grado di
eseguire che l’avvio di quella cosa è
davvero davvero impressionante il ricordo
in testa a quella cosa è davvero
impressionante rispetto alla normale JVM
perché non abbiamo bisogno di macchinari per
aggiungi altro e carica altro
le classi non abbiamo bisogno del meta
informazioni sulle classi quindi non lo facciamo
ho bisogno di tanta memoria, quindi non sarebbe
come la cosa più importante per tutti
applicazioni quindi se stai correndo a lungo
in esecuzione quindi su server normali
probabilmente il compilatore JIT è il migliore
amico comunque ma se lo sei davvero
in attesa di avvio questo è il
cosa che si potrebbe esaminare per
esempio se corri in Scala puoi farlo
compila Scala C all’immagine nativa e poi
inizia davvero molto velocemente più velocemente
che normalmente è fantastico
perché ancora una volta Scala non è nota
per avere il compilatore più veloce o il
più veloce compilatore di partenza quindi siamo
benvenuti a provare che ci sono un paio
di app di linee comuni che sono state
convertito e non vediamo l’ora
aumentare il supporto agli ecosistemi
se stai cercando in particolare
molla attualmente fuori dalla scatola di primavera
le lacune e le app di avvio a molla non funzioneranno
con quella squadra di primavera e rally em team
ci stiamo lavorando per portare questo
compatibilità insieme puoi seguire
quel problema penso che questo sia chiuso
attualmente ma si collega a tutti gli altri
questioni importanti e puoi vedere il
progredire lì e per le immagini native
attualmente Linux Mac OS Java 8 così siamo
lavorando per portare il supporto di Windows
lì e stiamo lavorando per abilitare
che in Java 11 in modo ci si può aspettare che
in futuro non ci sono stime di tempo
attualmente da me ma lo porteremo
c’è così e poi avremo il pieno
ecosistema di sistemi operativi ma
attualmente per la maggior parte dei casi d’uso di produzione
tutti eseguono principalmente le esecuzioni di Linux
tutti eseguono Linux quindi è fantastico
perché è supportato così alto
livello di linguaggio poliglotta prestazioni
ritualizzazione integrabile attraverso il
stack a questo punto del tempo mostrerei
tu
demo come si può eseguire gravy em JavaScript
motore in un database Oracle così tu
puoi scrivere scrivere le tue stored procedure
come in JavaScript invece di seguito di Kiel
quindi se non sei un fan delle pillole se tu
conosci il sequel di PL che sei bravo che puoi
scrivi le tue procedure e definite dall’utente
funzioni semplici ma se non lo sono
forse JavaScript è una scelta migliore per
tu ho quella demo che puoi, puoi
scarica e gioca con lo sperimentale
costruisce di quello che è possibile provare
che sei il benvenuto nel trovarlo
Internet ha recentemente annunciato un apice
che è un modo in cui puoi costruire il pieno
applicazione all’interno del virtuale all’interno
database in modo da poter eseguire JavaScript
e Python attraverso la valvola sono dentro il
database e ed e usarlo per il
applicazioni complete ce ne sono molte
persone che lavorano sul terreno principale
progetto dentro che era collassato lì
siamo più contributori esterni che siamo
lavorando con Red Hat per portare l’arco
64 supporto come l’altra infrastruttura
le persone contribuiscono pensando che sia così
se lo sei se vuoi farlo
la costruzione di una macchina virtuale è a
lo sforzo della comunità sarebbe fantastico se
puoi scaricare e provare il tuo
applicazioni se ci si connette con noi se
ci dici cosa non funziona cosa è
lavorando bene dove possiamo migliorare voi
ci puoi trovare su alzati puoi trovarci
mailing lists puoi twittare su di noi e noi
tornerà da te
vogliamo davvero essere davvero aperti
progetto sorgente ma per questo abbiamo bisogno del
aiuto della comunità grazie
Please follow and like us: