60
The Ghosts of Java Past, Present and Yet To Come Steve Ellio9 Oracle UK 8 th December 2015

The Ghosts of Java Past, Present and Yet To Come

Embed Size (px)

Citation preview

Page 1: The Ghosts of Java Past, Present and Yet To Come

The$Ghosts$of$Java$Past,$Present$and$Yet$To$Come$Steve$Ellio9$Oracle$UK$8th$December$2015$

Page 2: The Ghosts of Java Past, Present and Yet To Come

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.

Page 3: The Ghosts of Java Past, Present and Yet To Come

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.”$

Page 4: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 4$

h9p://www.newyorker.com/magazine/2015/03/30/thinkingTsideways$

Page 5: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 6: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 6$

Page 7: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 7$

Page 8: The Ghosts of Java Past, Present and Yet To Come

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$•  …$

Page 9: The Ghosts of Java Past, Present and Yet To Come

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#

Page 10: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 10$

Page 11: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 11$

#(née#GreenTalk/Oak)#(some)$Influences$on$Java$

Page 12: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 12$

Ole-Johan Dahl Kristen Nygaard

Fortran

LISP

Simula

C

Page 13: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

The$Ghost$in$the$(Java$Virtual)$Machine$

Page 14: The Ghosts of Java Past, Present and Yet To Come

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$

Page 15: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Hotspot$Collectors$

TXX:+UseSerialGC$TXX:+UseParallelGC$TXX:+UseParallelOldGC$TXX:+UseConcMarkSweepGC$TXX:+UseParNewGC$TXX:+UseG1GC$$$

Page 16: The Ghosts of Java Past, Present and Yet To Come

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$

Page 17: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 17$

Page 18: The Ghosts of Java Past, Present and Yet To Come

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)$

Page 19: The Ghosts of Java Past, Present and Yet To Come

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)$

Page 20: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 21: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 22: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 22$

Page 23: The Ghosts of Java Past, Present and Yet To Come

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$

$

Page 24: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 24$

Concurrency$/$Threads$/$Java$Memory$Model$

Page 25: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 25$

Page 26: The Ghosts of Java Past, Present and Yet To Come

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)#

Page 27: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Guy$Steele$JVM$Language$Summit$2013$

Page 28: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

h9p://shipilev.net/talks/narniaT2555TjmmTpragmaYcsTen.pdf$$h9ps://www.youtube.com/watch?v=TxqsKzxyySo$$(VJUG)$

Page 29: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 29$

h9p://www.cs.umd.edu/~pugh/java/memoryModel$$

Page 30: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 30$

Page 31: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 31$

Page 32: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 32$

Page 33: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 33$

h9p://www.infoq.com/arYcles/TheTOpenJDK9TRevisedTJavaTMemoryTModel$

Page 34: The Ghosts of Java Past, Present and Yet To Come

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$

Page 35: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Security$

Page 36: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 37: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 37$

Page 38: The Ghosts of Java Past, Present and Yet To Come

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$

Page 39: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 40: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 41: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 42: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 43: The Ghosts of Java Past, Present and Yet To Come

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$

Page 44: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 44$

Distributed$Java$

c$$1994$(via$James$Gosling’s$old$blog)$

Page 45: The Ghosts of Java Past, Present and Yet To Come

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#

Page 46: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 47: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 48: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 49: The Ghosts of Java Past, Present and Yet To Come

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$$

Page 50: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 50$

Move$out$6$months$

23rd#March#2016#

Page 51: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 51$

Move$out$6$months$

Page 52: The Ghosts of Java Past, Present and Yet To Come

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$$

Page 53: The Ghosts of Java Past, Present and Yet To Come

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$

Page 54: The Ghosts of Java Past, Present and Yet To Come

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$

Page 55: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 56: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$

Page 57: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 57$

Page 58: The Ghosts of Java Past, Present and Yet To Come

Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 58$

Page 59: The Ghosts of Java Past, Present and Yet To Come

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$$

Page 60: The Ghosts of Java Past, Present and Yet To Come

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$

$