the ghosts of java past, present and yet to come
Post on 14-Jan-2017
476 Views
Preview:
TRANSCRIPT
The$Ghosts$of$Java$Past,$Present$and$Yet$To$Come$Steve$Ellio9$Oracle$UK$8th$December$2015$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 3$
“It$held$a$branch$of$fresh$green$holly$in$its$hand… $$But$the$strangest$thing$about$it$was,$that$from$the$crown$of$its$head$there$sprung$a$bright$clear$jet$of$light,$by$which$all$this$was$visible;$and$which$was$doubtless$the$occasion$of$its$using,$in$its$duller$moments,$a$great$ex?nguisher$for$a$cap,$which$it$now$held$under$its$arm.”$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 4$
h9p://www.newyorker.com/magazine/2015/03/30/thinkingTsideways$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 6$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 7$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 8$
• Dynamically$Threaded,$1T8$threads$/$core$• Concurrent$Memory$MigraYon,$VA$Masking$• Dual$Issue$OOO$execuYon$unit$• 64$Mb$L3$• 256K$L2$per$core$cluster$• Crypto$acceleraYon$• …$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
(some)$Influences$on$Java$$$$$(née$GreenTalk/Oak)$
Fortran
LISP
Clojure
Pascal (p-code)
Perl
C
PL/M Smalltalk
Java
occam
BASIC
Ruby
Scala
Coral
Algol
Ada
BCPL
Forth
Simula Modula
C++ Scheme
Objective C
Erlang
Haskell Python
http://en.wikipedia.org/wiki/Timeline_of_programming_languages http://hopl.murdoch.edu.au/
VB
PHP
Groovy
LiveScript/JavaScript
Dart
Go
Mesa Cedar
B
Self (Hotspot)
Kotlin
Ceylon
Fantom
TypeScript
Swift
57#58#59#60#61#62#63#64#65#66#67#68#69#70#71#72#73#74#75#76#77#78#79#80#81#82#83#84#85#86#87#88#89#90#91#92#93#94#95#96#97#98#99#00#01#02#03#04#05#06#07#08#09#10#11#12#13#14#15#
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 10$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 11$
#(née#GreenTalk/Oak)#(some)$Influences$on$Java$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 12$
Ole-Johan Dahl Kristen Nygaard
Fortran
LISP
Simula
C
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
The$Ghost$in$the$(Java$Virtual)$Machine$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
(some)$JVMs$&$GC$Collectors$
• Oracle$– HotSpot $ $Serial[Old],$Parallel[Old],CMS$ $RTGC,$G1$
$ $ $ $ $ $ $ $Shenendoah$(OpenJDK$JEP$189)$– JRockit $ $MSC$gen/par/com $ $ $JRockit$Real$Time$
• IBM$– J9 $ $ $thruput,$avgpause,$gencon $ $Balanced,$Metronome$
• Azul$– Zing $ $ $ $ $ $ $C4$(née$GPGC)$$
• Jikes$(IBM),$Maxine$(Sun),$Squawk$(Sun,$JavaMETSunSpots),$Monty,$KVM…$$ hBps://en.wikipedia.org/wiki/List_of_Java_virtual_machines$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Hotspot$Collectors$
TXX:+UseSerialGC$TXX:+UseParallelGC$TXX:+UseParallelOldGC$TXX:+UseConcMarkSweepGC$TXX:+UseParNewGC$TXX:+UseG1GC$$$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
markTsweep$garbage$collecYon$$[McCarthy,$1960]$
OTcode$(BCPL,$$Richards)$$ PTcode$
h9p://www.strongtalk.org/history.html$
“Most$objects$die$young”$$$$$$$$$$$$$$$$$$$$$$$$$David$Ungar$K$1984$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 17$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
A$brief$history$of$(some)$Java$Virtual$Machines…$• VM$for$Oak$(1992$–$Gosling)$
• Sun$JDK$:$Alpha/Beta$(1995),$1.0$(1996)$• JIT$added$in$1.1$(1997)$Cliff$Click$(later$worked$on$C2$server$Compiler)$
• Sun$acquires$Animorphic$(1997)$David$Ungar,$Lars$Bak,$Urs$Hölzle…$(Self)$+$David$Griswold,$Gilad$Bracha…$(Strongtalk)$$
• HotSpot$released$(1999)$add$on$for$1.2,$default$in$1.3$
• CMS$Printezis/Detlefs$(2000)$
• G1$Printezis/Flood/Heller$(2004)$
• RTGC$/$Java$RTS$(2009)$[not$acYve]$
• Appeal$Virtual$Machines$–$Stockholm$(1998)$$$$$Marcus$Hirt,$Marcus$Lagergren…$
• Acquired$by$BEA$(2002)$• BEA$Acquired$by$Oracle$(2008)$• Dynamic$GC$• DeterminisYc$GC$(~2005)$–$JRRT$Eva$Andreasson$
• JRockit$Mission$Control$(~2007)$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
A$brief$history$of$Java$Virtual$Machines$(contd)$
• Azul$(2002)$Sellers/Tene/Pillalamarri$
• Stephen$DeWi9$+$ex$Sun$(2004)$
• Vega$(2004)$• Zing$5$(2010)$soxware$only$
C4$Collector$
$
• IBM$Hursley$T$Java$Technology$Center$(1996)$• J9$T$IBM$O9owa$Labs$(OTI)$1.4$(2003)$$$$$$$$IBM$Toronto$Labs$
• Metronome$RT$collector$(2003)$• Balanced$Collector$(2011)$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 22$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
HotSpot$/$G1$• Permgen$removal$• Density$• JIT$Compilers$(C1/C2$Tiered$CompilaYon)$• GC$improvements$/$G1$/$RaYonalisaYon$• Ergonomics$• InstrumentaYon$/$Tuning$/$Performance$$• Cloud$–$MulYTTenancy.$IsolaYon$/$Resource$Management.$• AOT$CompilaYon$(h9ps://www.youtube.com/watch?v=Xybzyv8qbOc$)$• DeterminisYc$GC$/$Low$Latency$
$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 24$
Concurrency$/$Threads$/$Java$Memory$Model$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 25$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
1.4 5.0 6 7 8 java.lang.Thread
java.util.concurrent (jsr166)
Fork/Join Framework (jsr166y)
Project Lambda Concurrency$in$Java$
Phasers,#etc#(jsr166)#
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Guy$Steele$JVM$Language$Summit$2013$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
h9p://shipilev.net/talks/narniaT2555TjmmTpragmaYcsTen.pdf$$h9ps://www.youtube.com/watch?v=TxqsKzxyySo$$(VJUG)$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 29$
h9p://www.cs.umd.edu/~pugh/java/memoryModel$$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 30$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 31$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 32$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 33$
h9p://www.infoq.com/arYcles/TheTOpenJDK9TRevisedTJavaTMemoryTModel$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 34$
JVM$Language$Summit$2015$VarHandles$(nee$enhanced$volaYles)$$(Paul$Sandoz$video$from$August$11th$2015)$h9ps://www.youtube.com/watch?v=ycKn18LtNtk$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Security$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 37$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Java$Security$
• Java$Language$Security$and$Bytecode$VerificaYon$• Security$APIs$and$Libraries$
– Cryptography:$JCA/JCE$– PublicTKey$Infrastructure$(PKI):$CerYficates,$CertPaths$– AuthenYcaYon:$JAAS,$Kerberos$– Secure$CommunicaYon:$JSSE$(SSL/TLS),$GSSTAPI,$SASL$– Access$Control:$Security$Manager,$Policy,$JAAS$– XML$Signature$
• Tools:$jarsigner,$keytool$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
JDK$9$Security$Features$h@p://openjdk.java.net/jeps/0#
• JEP$219:$Datagram$Transport$Layer$Security$(DTLS)$
• JEP$229:$Create$PKCS12$Keystores$by$Default$
• JEP$232:$Improve$Secure$ApplicaYon$Performance$
• JEP$244:$TLS$ApplicaYonTLayer$Protocol$NegoYaYon$Extension$
• JEP$246:$Leverage$CPU$InstrucYons$for$GHASH$and$RSA$
• JEP$249:$OCSP$Stapling$for$TLS$• JEP$273:$DRBGTBased$SecureRandom$ImplementaYons$
43$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 44$
Distributed$Java$
c$$1994$(via$James$Gosling’s$old$blog)$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 45$
Web#Services#SOAP#
REST#
RMIPIIOP#IIOP#
(2001)$
(1991)$
(1991)$
(1996)$
(2000$T$h9p1.1$1996T1999)$
(1998)$
(2014)$
RMI#(1996)$
DCOM#(1996)$
WebSockets$(2011)$
SSL#/#TLS#(1995)$$$$$$(1999)$
MQQT/COAP#XMPP#etc#
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Roadmap$Update$Updated$version$post$talk$on$8th$Dec.$$h9p://mail.openjdk.java.net/pipermail/jdk9Tdev/2015TDecember/003237.html$
49$
h9p://openjdk.java.net/projects/jdk9$h9ps://wiki.openjdk.java.net/display/AdopYon/JDK+9+Outreach$$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 50$
Move$out$6$months$
23rd#March#2016#
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 51$
Move$out$6$months$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Java$End$of$Public$Updates$(EoPU)$
• Public$Java$updates$are$available$unYl$all$three$of$these$condiYons$occur$$– Three$years$axer$general$availability$– One$year$axer$being$superseded$by$a$new$major$release$– Six$months$axer$the$new$major$release$is$made$the$default$on$java.com$$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
• Project#Valhalla $ $h9p://openjdk.java.net/projects/valhalla$• Value$Types$–$aggregates$without$idenYty$h9p://cr.openjdk.java.net/~jrose/values/valuesT0.html$
• SpecializaYon$–$templated$types$on$demand$h9p://cr.openjdk.java.net/~briangoetz/valhalla/specializaYon.html$
• JMM$Update$–$VarHandles$
• Project#Panama $ $h9p://openjdk.java.net/projects/panama$• Arrays$2.0$–$flexible$array$implementaYon$and$organizaYon$• Layouts$–$flexible$object$layout$• FFI$(JEP$191)$–$be9er$naYve$code$interop$
Post$Java$9$
h9p://mail.openjdk.java.net/pipermail/valhallaTdev$h9p://mail.openjdk.java.net/pipermail/panamaTdev$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
John$Rose$@$JVM$language$summit$July$2014$h9p://www.oracle.com/technetwork/java/javase/community/jlssessionsT2255337.html$
54$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 57$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 58$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Acknowledgments$&$Links$(1/2)$• Wikipedia$
– h9ps://en.wikipedia.org/wiki/File:Charles_DickensTA_Christmas_CarolTTitle_pageTFirst_ediYon_1843.jpg$– h9ps://en.wikipedia.org/wiki/File:The_Last_of_the_SpiritsTJohn_Leech,_1843.jpg$– h9ps://en.wikipedia.org/wiki/File:TI_microSPARC_I_die.jpg$– h9ps://en.wikipedia.org/wiki/File:Intel_PenYum_P54C_die.jpg$
• JVM$Language$Summit$– h9p://openjdk.java.net/projects/mlvm/jvmlangsummit$$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$
Acknowledgments$&$Links$(2/2)$• Others$
– Oracle$M7$PresentaYon$from$HotChips$2014$/$Stephen$Philips$– Language$Based$Virtual$Machines$/$Lars$Bak$h9p://aosd.net/2012/images/stories/bak.pdf$– Aleksey$Shipilev$h9p://shipilev.net/blog/2014/jmmTpragmaYcs$– Oracle$Java$DocumentaYon$h9ps://docs.oracle.com/javase/specs/jls/se8/html/jlsT17.html$– ACM$Queue$h9ps://queue.acm.org/detail.cfm?id=2034639$– The$Eight$Fallacies$of$Distributed$CompuYng$/$James$Gosling$(old)$home$page$– Roadmaps$(OpenWorld$2015)$/$Aurelio$GarciaTRibeyro$h9ps://publishedTrs.lanyonevents.com/published/oracleus2015/sessionsFiles/1467/CON9682_GarciaTRibeyroTCON9682TOOW2015TJavaSEAdvanced.pdf$– ThreatTModeling$the$JVM$[CON2031]$(JavaOne$2015)$/$Erik$Costlow$– Duke$images$h9ps://duke.kenai.com$Merry$Christmas$h9ps://duke.kenai.com/animaYons/DukeTuxChristmas.gif$
$
top related