Java Update - Bristol JUG. Part 1 - Java SE.

52
Java Update Part 1 ' Java SE / Roadmap Part 2 - Java EE / Java in the Cloud Steve Ellio8 Java Technology Lead Oracle UK May 2016

Transcript of Java Update - Bristol JUG. Part 1 - Java SE.

Page 1: Java Update - Bristol JUG. Part 1 - Java SE.

Java$Update$$Part%1%'%Java%SE%/%Roadmap$Part$2$-$Java$EE$/$Java$in$the$Cloud$

Steve$Ellio8$Java$Technology$Lead$Oracle$UK$$$$May$2016$

Page 2: Java Update - Bristol JUG. Part 1 - Java SE.

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

Safe$Harbor$Statement$

The$following$is$intended$to$outline$our$general$product$direcPon.$It$is$intended$for$informaPon$purposes$only,$and$may$not$be$incorporated$into$any$contract.$It$is$not$a$commitment$to$deliver$any$material,$code,$or$funcPonality,$and$should$not$be$relied$upon$in$making$purchasing$decisions.$The$development,$release,$and$Pming$of$any$features$or$funcPonality$described$for$Oracle’s$products$remains$at$the$sole$discrePon$of$Oracle.$

Page 3: Java Update - Bristol JUG. Part 1 - Java SE.

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

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%

Fortran

LISP

Pascal

C

PL/M occam

BASIC

Coral

Algol

BCPL

C++

Objective C

VHDL

Verilog

Page 4: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 5: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 6: Java Update - Bristol JUG. Part 1 - Java SE.

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

For$the$‘trip$down$memory$lane’$version…$

6$

LJC$Open$Conference$Keynote$(also$with$Simon$Ri8er)$h8ps://www.youtube.com/watch?v=-SRhKhQOVzY$

Devoxx$UK$2015$(with$Simon$Ri8er)$What$were$you$doing$in$1995?$h8ps://www.youtube.com/watch?v=Qc36yF8Mo-Y$

Docklands$LJC$Christmas$2015$h8p://www.infoq.com/presentaPons/java-past-present-future$$JVM,$Concurrency$/$Memory$Model,$Security,$Distributed…$

Page 7: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 8: Java Update - Bristol JUG. Part 1 - Java SE.

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

The$Highlander$Fallacy$

“There can be only one”

Page 9: Java Update - Bristol JUG. Part 1 - Java SE.

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

The$Highlander$Fallacy$

“This,'of'course,'is'a'classic'example'of'what'I'have'called'the'Highlander+Fallacy,'which'briefly'stated'is'the'principle'that'there'can'be'only'one.'If'any'two'technologies'can'be'described'using'the'same'set'of'words,'then'there'is'no'need'for'both'of'them,'and'only'one'will'survive.'I'call'this'a'fallacy'because,'to'use'a'technical'term,'it'is'total'crap.”''

Jim$Waldo$h8p://blogs.law.harvard.edu/waldo$

$

“There can be only one”

Page 10: Java Update - Bristol JUG. Part 1 - Java SE.

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

1995%

1.0% 1.2% 1.3% 1.4% 5.0% 6%

1998%

2000%

2002%

2004%

2006%

1997%

1.1% 7%

2011%

8%

2014%

Page 11: Java Update - Bristol JUG. Part 1 - Java SE.

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

JavaOne'1996'

Page 12: Java Update - Bristol JUG. Part 1 - Java SE.

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

12$

Java$is$not$dead$etc..$

Page 13: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 14: Java Update - Bristol JUG. Part 1 - Java SE.

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

The$rise$and$fall$of$the$Java$Applet…$

RIP'Java'plugFin,'the'web'won't'miss'you''Oracle'Finally'Killing'Java'Browser'Plugin:'About'Time!''Oracle'to'Deprecate'Java'Browser'Plugin'in'2017''Oracle'kills'off'Java'to'give'you'one'less'browserFrelated'headache''Oracle'Does'World'A'Favor'Buy'Dumping'Wretched'Java'Browser'Plugin''Oracle'to'phase'out'muchFmaligned'Java'browser'plugin''The'hated'Java'plugin'has'finally'been'given'its'last'rites'Oracle'Puts'Java'Plugin'Out'of'Our'Misery''Java'browser'plugin'to'be'sent'to'death'row'in'September''Rest'In'Hell,'Java'PlugFIn'Oracle's'finally'killing'its'terrible'Java'browser'plugin'Goodbye'Applets:'Another'Cruddy'Piece'of'Web'Tech'Is'Finally'Going'Away''The'Java'plugFin'is'dying,'and'not'a'moment'too'soon'

Page 15: Java Update - Bristol JUG. Part 1 - Java SE.

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

The$Java$Plugin$-$What$did$we$announce$• By$late$2015,$many$browser$vendors$have$either$removed$or$announced$Pmelines$for$the$removal$of$NPAPI,$a$standard$interface$that�s$been$around$for$over$20$years,$eliminaPng$the$ability$to$embed$Flash,$Silverlight,$Java$and$other$plugin$based$technologies.$

• Oracle$plans$to$deprecate$the$Java$browser$plugin$in$JDK$9.$This$means$the$Java$Plugin$will$be$fully$supported$for$quite$some$Pme.$However,$this$technology$will$be$removed$from$the$Oracle$JDK$and$JRE$in$a$future$Java$SE$release.$

• With$modern$browser$vendors$working$to$restrict$and$reduce$plugin$support$in$their$products,$developers$of$applicaPons$that$rely$on$the$Java$browser$plugin$need$to$consider$alternaPve$opPons$such$as$migraPng$from$Java$Applets$(which$rely$on$a$browser$plugin)$to$the$plugin-free$Java$Web$Start$technology.$

$$h8ps://blogs.oracle.com/java-planorm-group/entry/moving_to_a_plugin_free$

15$

Page 16: Java Update - Bristol JUG. Part 1 - Java SE.

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

Oracle%JET%• A$modular,$enterprise-ready$toolkit$that$simplifies$development$with$a$$JavaScript/HTML5/REST$stack$

Page 17: Java Update - Bristol JUG. Part 1 - Java SE.

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

h8ps://github.com/oracle/oraclejet$

Page 18: Java Update - Bristol JUG. Part 1 - Java SE.

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

For$some$more$on$JET$/$Web$Development…$•  h8ps://community.oracle.com/docs/DOC-984517$

•  h8ps://blogs.oracle.com/geertjan$

•  h8p://www.oracle.com/webfolder/technetwork/$jet/globalExamples-HOL.html$

18$

Page 19: Java Update - Bristol JUG. Part 1 - Java SE.

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

Already$using$Oracle$JET$

• Oracle$Mobile$Cloud$Service$

• Oracle$Developer$Cloud$Service$• Oracle$ApplicaPon$Builder$Cloud$Service$• Oracle$BI$Cloud$Service$Visual$Analyzer$• Oracle$WebCenter$Sites$Service$

• …$

Page 20: Java Update - Bristol JUG. Part 1 - Java SE.

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

The$Right$Technology$for$the$Right$Person$

Java$Developer$ JavaScript$Developer$ PL/SQL$Developer$ Business$User$

Oracle$ADF$Oracle$MAF$

Oracle$JET$ Oracle$APEX$Oracle$Forms$

Oracle$ABCS$Oracle$MAX$

Page 21: Java Update - Bristol JUG. Part 1 - Java SE.

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

The%Future…%

Java 9

Page 22: Java Update - Bristol JUG. Part 1 - Java SE.

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

Java$9$hEp://openjdk.java.net/projects/jdk9%%%%%%(JEPs%as%of%21st%January%2016)%

227:$Unicode$7.0$228:$Add$More$DiagnosPc$Commands$229:$Create$PKCS12$Keystores$by$Default$230:%Microbenchmark%Suite%231:$Remove$Launch-Time$JRE$Version$SelecPon$232:$Improve$Secure$ApplicaPon$Performance$233:$Generate$Run-Time$Compiler$Tests$AutomaPcally$235:$Test$Class-File$A8ributes$Generated$by$javac$236:$Parser$API$for$Nashorn$237:$Linux/AArch64$Port$238:$MulP-Release$JAR$Files$240:$Remove$the$JVM$TI$hprof$Agent$241:$Remove$the$jhat$Tool$243:$Java-Level$JVM$Compiler$Interface$244:$TLS$ApplicaPon-Layer$Protocol$NegoPaPon$Extension$245:$Validate$JVM$Command-Line$Flag$Arguments$246:$Leverage$CPU$InstrucPons$for$GHASH$and$RSA$247:$Compile$for$Older$Planorm$Versions$248:%Make%G1%the%Default%Garbage%Collector%249:$OCSP$Stapling$for$TLS$250:$Store$Interned$Strings$in$CDS$Archives$251:$MulP-ResoluPon$Images$252:$Use$CLDR$Locale$Data$by$Default$253:$Prepare$JavaFX$UI$Controls$&$CSS$APIs$for$ModularizaPon$

102:$Process$API$Updates$110:%HTTP%2%Client%143:$Improve$Contended$Locking$158:$Unified$JVM$Logging$165:$Compiler$Control$193:%Variable%Handles%197:$Segmented$Code$Cache$199:$Smart$Java$CompilaPon,$Phase$Two$201:%Modular%Source%Code%211:$Elide$DeprecaPon$Warnings$on$Import$Statements$212:$Resolve$Lint$and$Doclint$Warnings$213:$Milling$Project$Coin$214:$Remove$GC$CombinaPons$Deprecated$in$JDK$8$215:$Tiered$A8ribuPon$for$javac$216:$Process$Import$Statements$Correctly$217:$AnnotaPons$Pipeline$2.0$219:$Datagram$Transport$Layer$Security$(DTLS)$220:%Modular%Run'Time%Images%221:$Simplified$Doclet$API$222:%jshell:%The%Java%Shell%(Read'Eval'Print%Loop)%223:$New$Version-String$Scheme$224:$HTML5$Javadoc$225:$Javadoc$Search$226:$UTF-8$Property$Files$

254:%Compact%Strings%255:$Merge$Selected$Xerces$2.11.0$Updates$into$JAXP$256:$BeanInfo$AnnotaPons$257:$Update$JavaFX/Media$to$Newer$Version$of$GStreamer$258:$HarfBuzz$Font-Layout$Engine$259:$Stack-Walking$API$262:$TIFF$Image$I/O$263:$HiDPI$Graphics$on$Windows$and$Linux$264:$Planorm$Logging$API$and$Service$265:$Marlin$Graphics$Renderer$266:$More$Concurrency$Updates$267:$Unicode$8.0$268:$XML$Catalogs$269:$Convenience$Factory$Methods$for$CollecPons$270:$Reserved$Stack$Areas$for$CriPcal$SecPons$271:$Unified$GC$Logging$272:$Planorm-Specific$Desktop$Features$273:$DRBG-Based$SecureRandom$ImplementaPons$274:$Enhanced$Method$Handles$276:$Dynamic$Linking$of$Language-Defined$Object$Models$278:$AddiPonal$Tests$for$Humongous$Objects$in$G1$279:$Improve$Test-Failure$TroubleshooPng$280:$Indify$String$ConcatenaPon$281:$HotSpot$C++$Unit-Test$Framework$

Page 23: Java Update - Bristol JUG. Part 1 - Java SE.

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

Project%Jigsaw%

JEP$200:$The$Modular$JDK$

JEP$201:$Modular$Source$Code$

JEP$220:$Modular$Run-Time$Images$

JEP$260:$Encapsulate$Most$Internal$APIs$

JEP$261$/$JSR$376:$Java$Planorm$Module$System$

h[p://openjdk.java.net/projects/jigsaw'

Page 24: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 25: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 26: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 27: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 28: Java Update - Bristol JUG. Part 1 - Java SE.

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

$ jdeps –jdkinternals app.jar

Page 29: Java Update - Bristol JUG. Part 1 - Java SE.

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

h8p://cr.openjdk.java.net/~psandoz/conferences/2015-JavaOne/j1-2015-unsafe-CON7076.pdf$

Page 30: Java Update - Bristol JUG. Part 1 - Java SE.

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

Jigsaw%(%see%MR%hEps://www.parleys.com/tutorial/java'9'make'way'modules%)%

Page 31: Java Update - Bristol JUG. Part 1 - Java SE.

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

The$State$of$The$Module$System$

31$

javac$–modulepath$mods$–m$com.greePngs/com.greePngs.Main$

Page 32: Java Update - Bristol JUG. Part 1 - Java SE.

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

h8ps://blogs.oracle.com/java/entry/get_ready_for_java_9$

Page 33: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 34: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 35: Java Update - Bristol JUG. Part 1 - Java SE.

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

h[ps://wiki.openjdk.java.net/display/Adop^on/JDK+9+Outreach'

Page 36: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 37: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 38: Java Update - Bristol JUG. Part 1 - Java SE.

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

Moves$out$6$months$(March$2017)$

Page 39: Java Update - Bristol JUG. Part 1 - Java SE.

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

Move$out$6$months$

23rd%March%2017%

Page 40: Java Update - Bristol JUG. Part 1 - Java SE.

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

Java$in$the$Enterprise$Java%SE%Advanced%

Mission%Control%Diagnose$complex$issues$Low$overhead$Flight+Recorder+Back-in-Pme$analysis$Plugins$for$many$systems$

Advanced%Management%Console%Track$and$manage$clients$at$scale$Usage$tracking$and$Deployment$$Rule$Sets$

Support%&%Updates%Support$of$complex$issues$&$changes$Updates$to$old$versions$like$JDK$6$

Page 41: Java Update - Bristol JUG. Part 1 - Java SE.

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

Java$Mission$Control$/$Java$Flight$Recorder$(free$for$development)$

Tutorial'FF'h[p://hirt.se/blog/?p=611'

Page 42: Java Update - Bristol JUG. Part 1 - Java SE.

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

Advanced Management Console

•  Usage tracking across installations. –  Tracks applications run & Java versions used –  Properly identifies application

•  Deployment Rule Set tool –  Control prompts: run or block –  Automatically run with a specific Java version. –  Guided from usage tracker data –  Verifiable against tracker data

Java Monitoring & Management

42$

Page 43: Java Update - Bristol JUG. Part 1 - Java SE.

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

•  $Startup$&$Warmup$Pme$

•  $Memory$overhead$/$layout$

•  $OpPmizaPons$for$more$specialized$hardware$

•  $Unpredictable$latency$due$to$GC$•  $Big$Data$(eg,$the$Hadoop$ecosystem)$

•  $Cloud$&$large$mulP-tenant$deployments$

•  $(More)$JVM$improvements$for$non-Java$languages$

• …$

Beyond$Java$9$-$Some$things$to$consider…$

Page 44: Java Update - Bristol JUG. Part 1 - Java SE.

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

Data$Layout$Each$pointer$is$a$gamble$

•  Java$Objects/Arrays$carry$an$idenPty$cost…$•  20$years$ago,$a$memory$fetch$and$an$add$cost$about$the$same$

•  Today,$a$cache$miss$can$cost$1000$instrucPon$cycles$

• Hardware$tries$to$cover$latency$with$prefetch$

• Prefetch$works$best$with$flat,$regular$layouts$

Page 45: Java Update - Bristol JUG. Part 1 - Java SE.

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

Flat$Data$:$The$be8er$way$

Value%Types%

“Codes%like%a%class,%works%like%an%int.”%

Page 46: Java Update - Bristol JUG. Part 1 - Java SE.

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

• Project%Valhalla $ $h8p://openjdk.java.net/projects/valhalla$•  Value$Types$–$aggregates$without$idenPty$h8p://cr.openjdk.java.net/~jrose/values/values-0.html$

•  SpecializaPon$–$templated$types$on$demand$h8p://cr.openjdk.java.net/~briangoetz/valhalla/specializaPon.html$

•  JMM$Update$–$VarHandles$

• Project%Panama $ $h8p://openjdk.java.net/projects/panama$•  Arrays$2.0$–$flexible$array$implementaPon$and$organizaPon$•  Layouts$–$flexible$object$layout$•  FFI$(JEP$191)$–$be8er$naPve$code$interop$

Post$Java$9$Projects$underway$

h8p://mail.openjdk.java.net/pipermail/valhalla-dev$h8p://mail.openjdk.java.net/pipermail/panama-dev$

Page 47: Java Update - Bristol JUG. Part 1 - Java SE.

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

h[p://openjdk.java.net/projects/mlvm/jvmlangsummit'Videos'are'appearing'now'at'h[ps://www.youtube.com/user/java/videos'

Page 48: Java Update - Bristol JUG. Part 1 - Java SE.

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

John$Rose$@$JVM$language$summit$July$2014$h8p://www.oracle.com/technetwork/java/javase/community/jlssessions-2255337.html$

48$

Page 49: Java Update - Bristol JUG. Part 1 - Java SE.

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

Java%OpenJDK%

MOOC%

Java%SE%

Performance%

Security%JCP%Java%Duchess%

Java%EE%

Internet%of%Things%OTN%

Java%Embedded%

Lambd

a%

Jigsaw%

Tooling%

Java%Magazine%

Community%Collaboradon%

Java%User%Groups%

Adopt'a'JSR%

Java%Cha

mpion

s%

Java%Card%Java%M

E%

Clou

d%APIs%

Big%Data%NetBeans%

JEPs%

Nashorn%

Page 50: Java Update - Bristol JUG. Part 1 - Java SE.

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

Page 51: Java Update - Bristol JUG. Part 1 - Java SE.

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

Q & A

Page 52: Java Update - Bristol JUG. Part 1 - Java SE.

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

Acknowledgements$• Oracle$Java$PM$-$Aurelio$Garcia-Ribeyro$(Roadmaps$–$OpenWorld$2015)$

• Mark$Reinhold,$Brian$Goetz,$John$Rose$

• Duke$images$h8ps://duke.kenai.com$

• Redmonk,$Tiobe,$JAX$Conference/Wrox$/$Rod$Johnson$

•  JVM$Language$Summit$–  h8p://openjdk.java.net/projects/mlvm/jvmlangsummit$

• Hawking$quote$–  h8p://quotespictures.com/wp-content/uploads/2014/05/intelligence-is-the-ability-to-adapt-to-change-stephen-hawking-4.jpg$

• Highlander$/$Jim$Waldo$–  h8ps://en.wikipedia.org/wiki/Highlander_%28franchise%29$

52$