the ghosts of java past, present and yet to come

Post on 14-Jan-2017

476 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

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