java update - bristol jug. part 1 - java se
TRANSCRIPT
Java$Update$$Part%1%'%Java%SE%/%Roadmap$Part$2$-$Java$EE$/$Java$in$the$Cloud$
Steve$Ellio8$Java$Technology$Lead$Oracle$UK$$$$May$2016$
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.$
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
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 4$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 5$
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…$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 7$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$
The$Highlander$Fallacy$
“There can be only one”
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”
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%
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 11$
JavaOne'1996'
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$
12$
Java$is$not$dead$etc..$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 13$
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'
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$
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$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$|$ 17$
h8ps://github.com/oracle/oraclejet$
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$
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$
• …$
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$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$
The%Future…%
Java 9
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$
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'
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 24$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 25$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 26$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$
$ jdeps –jdkinternals app.jar
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$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$
Jigsaw%(%see%MR%hEps://www.parleys.com/tutorial/java'9'make'way'modules%)%
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$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 32$
h8ps://blogs.oracle.com/java/entry/get_ready_for_java_9$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 33$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 34$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 35$
h[ps://wiki.openjdk.java.net/display/Adop^on/JDK+9+Outreach'
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 36$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 37$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 38$
Moves$out$6$months$(March$2017)$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$ 39$
Move$out$6$months$
23rd%March%2017%
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$
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'
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$
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…$
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$
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.”%
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$
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'
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$
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%
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$
Copyright$©$2015,$Oracle$and/or$its$affiliates.$All$rights$reserved.$$$
Q & A
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$