O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Javaland keynote final

2.028 visualizações

Publicada em

Keynote that I gave at JavaLand 2015, in Brühl, Germany. Talks about 20 years of Java and JVM technology from my subjective perspective. "What have I been doing with my life for the last 20 years".

Publicada em: Internet

Javaland keynote final

  1. 1. A  trip  down  memory  lane:     20  years  in  Java  and  JVM  land   Marcus  Lagergren   @lagergren  
  2. 2. 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. Safe  Harbor  Statement  
  3. 3. Safe  Harbor  Statement   @lagergren  
  4. 4. Safe  Harbor  Statement   [This  is  my  story,  my  experiences.   Official  and  other  peoples’   versions  of  events  may  vary]   @lagergren  
  5. 5. I’ve  talked  about   computer  history  in  a   runMme  perspecMve   before   @lagergren   •  GeekOut  2014,  Tallinn   •  JokerConf  2014,  Saint  Petersburg  
  6. 6. I’ve  talked  about   computer  history  in  a   runMme  perspecMve   before   @lagergren   •  GeekOut  2014,  Tallinn   •  JokerConf  2014,  Saint  Petersburg   …  but  never  from  a  personal   perspecMve.  
  7. 7. What  have  I  been  doing  with  my  life  for  these  past   20  years?  
  8. 8. An  informaMve  keynote  
  9. 9. A  historical  keynote  
  10. 10. A  nostalgic  keynote  
  11. 11. Agenda   •  It’s  2015   •  Java  has  been  around  for  20  years.   •  Longer  if  you  count  the  alphas/ betas  of  Java  1.0  
  12. 12. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  13. 13. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  14. 14. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  15. 15. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  16. 16. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  17. 17. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  18. 18. Take  us  back  to  1995!  
  19. 19. Oops…  too  far  
  20. 20. Oops…  too  far  
  21. 21. A  boy  gets  his  Commodore  64  
  22. 22. 1991-­‐1993   •  Project  “Green”  at  Sun   Microsystems  
  23. 23. 1991-­‐1993   •  Project  “Green”  at  Sun   Microsystems   •  A  portable  architecture   for  home  electronics  
  24. 24. 1991-­‐1993   •  Project  “Green”  at  Sun   Microsystems   •  A  portable  architecture   for  home  electronics   •  Remote  controls?  
  25. 25. 1994   •  I’m  sMll  at  university   •  Scraped  together  enough  money  to  build  a   high  performance  mini  tower  PC   •  PenMum  90   •  “Wow!  CPU  frequencies  are,  like,  in  the  FM   the  FM  band  these  days”      
  26. 26. 1994   •  At  the  same  Mme  in  Santa  Clara  
  27. 27. 1994   •  At  the  same  Mme  in  Santa  Clara   •  Oak  has  beder  applicaMons  than  programming   remote  controls  
  28. 28. 1994   •  At  the  same  Mme  in  Santa  Clara   •  Oak  has  beder  applicaMons  than  programming   remote  controls   •  Deal  with  Netscape  is  being  finalized  
  29. 29. 1994   •  At  the  same  Mme  in  Santa  Clara   •  Oak  has  beder  applicaMons  than  programming   remote  controls   •  Deal  with  Netscape  is  being  finalized   •  Write  once  /  run  everywhere  
  30. 30. 1994   •  At  the  same  Mme  in  Santa  Clara   •  Oak  has  beder  applicaMons  than  programming   remote  controls   •  Deal  with  Netscape  is  being  finalized   •  Write  once  /  run  everywhere   •  “Network  aware”  language  
  31. 31. 1995-­‐1996   •  1995  was  the  year  where  Internet  suddenly   meant  “The  World  Wide  Web”   •  1996:  JDK  1.02   •  The  first  JDK  released  by  Sun   •  Java  in  Netscape  Navigator      
  32. 32. 1996   •  I  worked  with  Alphas  of  JDK  1.0  at  Ericsson   Medialab          
  33. 33. 1996   •  I  worked  with  Alphas  of  JDK  1.0  at  Ericsson   Medialab          
  34. 34. 1996   •  I  worked  with  Alphas  of  JDK  1.0  at  Ericsson   Medialab       •  The  JDK  fit  on  one  of  these   •  Sneakernet,  back  and  forth  to  KTH  where   there  was  bandwidth  and  not  just  my  v42’’   modem  
  35. 35. 1996   •  Anyone  remember  gamelan.com?          
  36. 36. 1996   •  Internship  at  Ericsson  Medialab  
  37. 37. 1996   •  Internship  at  Ericsson  Medialab   •  “Play  with  Ericsson’s  future”   •  Use  “cukng  edge  technology”  to  do  something   with  media  on  demand  
  38. 38. 1996   •  Internship  at  Ericsson  Medialab   •  “Play  with  Ericsson’s  future”   •  Use  “cukng  edge  technology”  to  do  something   with  media  on  demand  
  39. 39. 1996   •  Basically  SpoMfy    
  40. 40. 1996   •  Basically  SpoMfy   •  …  and  Nemlix  
  41. 41. 1996   •  Basically  SpoMfy   •  …  and  Nemlix   •  …  in  an  Applet  
  42. 42. 1996   •  Basically  SpoMfy   •  …  and  Nemlix   •  …  in  an  Applet   •  …  with  mpeg  hardware  cards  
  43. 43. 1996   •  Java  1.0  
  44. 44. 1996   •  Java  1.0   •  Pure  byte  code  interpretaMon   •  University  professor  suddenly  proud  of  his   interpreted  toy  language,  not  ashamed  as   previously   •  “If  Java  gets  away  with  it,  I  can”   •  But  did  it?  
  45. 45. 1996   •  Java  1.0   •  Pure  byte  code  interpretaMon   •  University  professor  suddenly  proud  of  his   interpreted  toy  language,  not  ashamed  as   previously   •  “If  Java  gets  away  with  it,  I  can”   •  But  did  it?   •  Java  Memory  Model  (broken)  
  46. 46. 1996   •  Java  1.0   •  Pure  byte  code  interpretaMon   •  University  professor  suddenly  proud  of  his   interpreted  toy  language,  not  ashamed  as   previously   •  “If  Java  gets  away  with  it,  I  can”   •  But  did  it?   •  Java  Memory  Model  (broken)   •  Thread.stop  and  all  its  friends   •  (@deprecated)  
  47. 47. 1996   •  Java  1.0   •  Pure  byte  code  interpretaMon   •  University  professor  suddenly  proud  of  his   interpreted  toy  language,  not  ashamed  as   previously   •  “If  Java  gets  away  with  it,  I  can”   •  But  did  it?   •  Java  Memory  Model  (broken)   •  Thread.stop  and  all  its  friends   •  (@deprecated)   •  “Very  1.0”  
  48. 48. 1996   •  “Your  development  cycle  is  much  faster  because  Java  is   interpreted.  The  compile-­‐link-­‐load-­‐test-­‐crash-­‐debug-­‐cycle  is   obsolete”   -­‐  James  Gosling    
  49. 49. 1996   •  “Your  development  cycle  is  much  faster  because  Java  is   interpreted.  The  compile-­‐link-­‐load-­‐test-­‐crash-­‐debug-­‐cycle  is   obsolete”   -­‐  James  Gosling     •  Wait!  Isn’t  that  the  argument  the  JavaScript  kiddies  use   today?  
  50. 50. 1996   •  Appeal  Soqware  SoluMons  is  founded  in   Stockholm   -  All  members  had  extensive  Java  experience,   having  used  the  language  from  the  start   -  Java  ConsulMng   -  …  and  …  *sigh*  UML/RUP  
  51. 51. 1996  
  52. 52. 1996  
  53. 53. 1996  
  54. 54. 1997   •  Java  on  the  client  side  not  really  taking  off  
  55. 55. 1997   •  Java  on  the  client  side  not  really  taking  off   •  Write  once  /  run  everywhere  does,  however   •  And  no  buffer  overruns   •  And  no  pointers   •  And  automaMc  memory  management   •  ==  fast  applica+on  development   •  The  JDK  is  a  great  library  for  development  
  56. 56. 1997   •  Java  on  the  client  side  not  really  taking  off   •  Write  once  /  run  everywhere  does,  however   •  And  no  buffer  overruns   •  And  no  pointers   •  And  automaMc  memory  management   •  ==  fast  applica+on  development   •  The  JDK  is  a  great  library  for  development   •  The  dawn  of  applicaMon  servers  
  57. 57. 1997   •  Java  on  the  client  side  not  really  taking  off   •  Write  once  /  run  everywhere  does,  however   •  And  no  buffer  overruns   •  And  no  pointers   •  And  automaMc  memory  management   •  ==  fast  applica+on  development   •  The  JDK  is  a  great  library  for  development   •  The  dawn  of  applicaMon  servers   •  Prehistoric  trail  toward  Java  EE  
  58. 58. 1997   •  Java  1.1   •  Inner  classes   •  JavaBeans   •  JDBC   •  RMI   •  Limited  ReflecMon  (non  runMme)   •  The  first  JITs     •  (Symantec  on  Windows)   •  SERIALIZATION  –  THE  HORROR!  
  59. 59. 1997:  BTH  –  Win  a  trip  to  JavaOne  
  60. 60. JavaOne  1997   •  Sun  Microsystems  presents  the  HotSpot   virtual  machine   – “WOW!  This  is  the  way  to  do  it!  AdapMve   runMmes!”  
  61. 61. 1998   •  JDK  1.2   •  Swing   •  stricmp   •  JIT  introduced  in  the  classic  VM   •  CollecMons  API   •  JDK  triples  in  size:  1520  classes,  59  packages  
  62. 62. 1998   •  JDK  1.2   •  Swing   •  stricmp   •  JIT  introduced  in  the  classic  VM   •  CollecMons  API   •  JDK  triples  in  size:  1520  classes,  59  packages  
  63. 63. JavaOne  1998   •  Sun  Microsystems  presents  the  HotSpot   virtual  machine  again  
  64. 64. JavaOne  1998   •  Sun  Microsystems  presents  the  HotSpot   virtual  machine  again   – “WTF!  This  is  slide-­‐by-­‐slide  the  exact  same   presentaMon  as  last  year!?!”   – We  can’t  wait  any  longer.  Let’s  build  our  own  VM.   How  hard  can  it  be?    
  65. 65. CreaMng  our  own  JVM  -­‐  JRockit  
  66. 66. ProducMze  a  narrower  domain?   •  Server-­‐side  usage  only.  Headless.     – We  need  to  help  the  early  app  server  vendors  get   performance  and  scalability  
  67. 67. ProducMze  a  narrower  domain?   •  Server-­‐side  usage  only.  Headless.     – We  need  to  help  the  early  app  server  vendors  get   performance  and  scalability   •  No  interpreter     – “startup  Mme  doesn’t  mader  on  the  server   anyway”  
  68. 68. 1998   •  BEA  Acquires  WebLogic   •  Weblogic  becomes  one  the  first  drivers  for  J2EE   specificaMon  
  69. 69. 1998  
  70. 70. 1998   •  TowerJ   •  Excelsior  JET   •  Convert  byte  code  to  C  code  and  run  gcc   •  Fundementally  incompaMble  with  a  runMme   language   •  Rakes  in  $$$  anyway  
  71. 71. 1999   •  Appeal  Soqware  SoluMons  finance  JRockit   development   •  HunMng  for  VC   •  In  August  we  sell  the  first  part  of  our  souls   •  We  spend  nights  reading  academic  papers   •  Jalapeño  (to  become  Jikes  RVM)  
  72. 72. 2000   •  Java  is  now  the  fastest  growing  programming   language  in  the  world   •  Dot  com  bubble   •  NASDAQ  hits  5.000  just  before  the  tech   wreck  
  73. 73. 2000   •  The  Java  License   •  You  can’t  call  yourself  “Java”  without  a   Java  license   •  You  need  to  pass  the  TCK  test  suite   – Not  available  without  license   •  To  get  a  Java  License  you  need  a  “value   add”  
  74. 74. The  Java  License   •  What’s  a  “value  add”?  
  75. 75. The  Java  License   •  What’s  a  “value  add”?  
  76. 76. The  Java  License  
  77. 77. The  Java  License   •  What’s  a  “value  add”?  
  78. 78. The  Java  License   •  What’s  a  “value  add”?   – Superior  performance!  
  79. 79. The  Java  License   •  What’s  a  “value  add”?   – Superior  performance!   – What?  You  didn’t  like  that?  
  80. 80. The  Java  License   •  What’s  a  “value  add”?   – Superior  performance!   – What?  You  didn’t  like  that?   – OK…  Let’s  see…  Err..  “managability”  
  81. 81. The  Java  License  
  82. 82. 2000   •  JDK  1.3  “Kestrel”   – HotSpot  released  before,  April  1999  J2SE  JVM   – But  Kestrel  bundles  HotSpot  with  JDK   – JNDI   – JPDA   – RMI/Corba   – JavaSound  
  83. 83. 2000   •  Q1  2000   – JRockit  1.0  released   – “Very  1.0”   – N  x  M  green  threads  hybrid   – We  actually  sell  some  licenses   •  We  are  stupid  enough  to  write  it  in  the  year  end   financial  statement  
  84. 84. 2001  
  85. 85. 2001   •  Appeal  Virtual  Machines  is  broken  out   from  Appeal  Soqware  SoluMons   •  Appeal  Virtual  Machines  finally  gets  its   Java  License!   •  “Managability  value  add”   •  StaMc  compiler  mindset  sMll  very  strong   •  Very  hard  to  sell  adapMve  runMmes  as   concept  
  86. 86. 2001   •  BEA  wants  performance  and  scalability   YESTERDAY   •  We  take  Mme  to  help  them  out   •  Start  cooperaMng  on  benchmarks   •  Intel  /  BEA  discussions  about  JRockit  
  87. 87. 2001   •  The  Itanium  gets  introduced  
  88. 88. 2001   •  JavaOne  2001   •  I  was  mostly  in  San  Mateo  gekng  JRockit   to  run  on  IA64  in  binary  translaMon  mode  
  89. 89. 2002  
  90. 90. 2002   •  JDK  1.4  “Merlin”   –  First  plamorm  developed  under  JCP   –  assert  keyword   –  Regexps  (sorta  like  Perl  but  not  really)   –  ExcepMon.getCause()   –  NIO   –  Logging  API   –  Image  I/O   –  XML   –  IPv6  
  91. 91. 2002   •  ValenMne’s  day:  BEA  acquires  Appeal   Virtual  Machines   •  Now:  how  do  we  make  money?   •  Eventually  we  found  4  value  adds  
  92. 92. 2002   •  ValenMne’s  day:  BEA  acquires  Appeal   Virtual  Machines   •  Now:  how  do  we  make  money?   •  Eventually  we  found  4  value  adds  
  93. 93. 2002   •  Value  add  #1   – CCE/SE   – Implement  BEA’s  mulM  Mer  support  process  
  94. 94. 2002   •  Value  add  #2   – Managability   – JSR  works  starts  on  JSR-­‐174   – Management  console  is  the  first  part  of  Java   Mission  Control  to  get  out  there  
  95. 95. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order  
  96. 96. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order   – Clock  rate  curves  start  to  fladen  out  
  97. 97. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order   – Clock  rate  curves  start  to  fladen  out   – MulM  cores,  NUMA,  hyperthreading  
  98. 98. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order   – Clock  rate  curves  start  to  fladen  out   – MulM  cores,  NUMA,  hyperthreading   – Java  sMll  has  explicit  Threads  
  99. 99. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order   – Clock  rate  curves  start  to  fladen  out   – MulM  cores,  NUMA,  hyperthreading   – Java  sMll  has  explicit  Threads   – In-­‐order  execuMon  is  a  bad  idea  for  JITs  
  100. 100. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order   – Clock  rate  curves  start  to  fladen  out   – MulM  cores,  NUMA,  hyperthreading   – Java  sMll  has  explicit  Threads   – In-­‐order  execuMon  is  a  bad  idea  for  JITs   – ExecuMon  Time  =  RunMme  Overhead  +   Program  RunMme  
  101. 101. 2004   •  JDK  5.0  (“Tiger”,  JSR-­‐176)   – Number  scheme  changed  from  1.x   – Biggest  Java  release  so  far!   – Generics   – AnnotaMons   – Autoboxing  /  unboxing   – Enums   – Varargs  (Object…  )   – StaMc  imports   –  java.util.concurrent
  102. 102. 2004   •  The  Java  Memory  Model  gets  fixed!  
  103. 103. 2004   •  x86_64  released  –  not  the  Itanium,  sMll  64   bit   – For  the  first  Mme  in  history  AMD  eats  Intel’s   lunch   – Full  backwards  compaMbility  towards  IA32   – AdopMon  (recognize  the  parallel  to  Java)   – Wider  register  bandwidth   – 2x  the  number  of  registers   – EXABYTES  of  virtual  memory  space  
  104. 104. The  Benchmark  Wars  
  105. 105. The  Benchmark  Wars   •  SPECjvm98  was  the  benchmark  since  Mme   immemorial   •  SPECjbb2000,  2005   •  SPECJAppServer   •  Running  SPECjbb2005  is  a  quanMfiable   management  goal  
  106. 106. The  Benchmark  Wars   •  Brought  real  world  opMmizaMons   –  Compressed  references   –  Non  conMguous  heaps  for  32  bits   –  External  and  internal  heap  compacMon   –  Concurrent  GC   –  Biased  locking   –  Large  pages   –  NUMA   –  Prefetch  heurisMcs   –  Using  vectorized  hardware  instrucMons  SSE3/4   –  ParMal  Escape  Analysis   –  Off  heap  storage  prototypes  
  107. 107. The  Benchmark  Wars   •  Brought  real  world  opMmizaMons   –  Compressed  references   –  Non  conMguous  heaps  for  32  bits   –  External  and  internal  heap  compacMon   –  Concurrent  GC   –  Biased  locking   –  Large  pages   –  NUMA   –  Prefetch  heurisMcs   –  Using  vectorized  hardware  instrucMons  SSE3/4   –  ParMal  Escape  Analysis   –  Off  heap  storage  prototypes  
  108. 108. The  Benchmark  Wars   •  All  this  from  a  few  semi-­‐syntheMc   benchmarks   •  CompeMMon  leads  to  Java  server  side   performance  being  pushed  to  where  it’s   never  been  before   •  “Performance  releases”  not  always  great   for  stability,  though  
  109. 109. The  Benchmark  Wars   “-XXaggressive”  ಠ_ಠ  
  110. 110. 2004   •  Meanwhile  at  Appeal  Virtual  Machines   – Value  add  #3   – DeterminisMc  GC   – QoS  level  for  pause  Mmes   – Modern  applicaMons  want  low  latency  rather   than  throughput   – Telco,  finance  sectors  went  wild  
  111. 111. 2004   java –XgcPrio:deterministic –XpauseTarget:5ms
  112. 112. 2004   java –XgcPrio:deterministic –XpauseTarget:5ms
  113. 113. 2004   •  JSR-­‐174  gets  finalized   •  Mission  Control  ships  with  its  first   versions   – ProducMon  Mme  zero  overhead  monitoring   – Limited  flight  recordings  (JRA)   – Extremely  cheap  –  Just  use  data  available   from  the  runMme  already  
  114. 114. Latency  Analysis  Tool  
  115. 115. Memory  Leak  Detector  
  116. 116. 2005   Halqime  
  117. 117. 2006  
  118. 118. 2006   •  Sun  Microsystems  not  doing  all  too  well?   •  JavaFX  is  going  on.     – Mobile  phones  are  everything.     – It  gets  a  bit  quiet  from  our  side  of  the  scene.  
  119. 119. 2006   •  Apache  Harmony   –  Needed  to  rewrite  classes  from  scratch   –  IBM  and  others  contribute  a  lot  of  code   •  Asks  for  Java  license  which  it  doesn’t  get   –  Field  of  use  restricMons  claimed  not  compliant   with  JCP  rules   •  Various  JCP  fights  ensue   •  Sun  opens  up  JVM/JDK  sources  under  GPL  v2  
  120. 120. 2006   •  JDK  6.0  (December,  JSR-­‐270)  “Mustang”   –  javax.scripting  (built  in  Rhino  integraMon)   – Compiler  API   – JDBC  4.0   – Dynamic  languages,  JSR-­‐292  up  for  review  
  121. 121. Fantom   Fortress   BeanShell   Jaskell   ANTLR   JudoScript   ABCL   Erjang   X10   jdart   jgo   Nice   Gosu   Jacl  
  122. 122. 2006   •  Dynamic  languages  are  becoming  trendy   •  JRuby  leads  the  growth   •  JSR-­‐292,  invokedynamic •  BEA,  IBM,  Sun  all  in  the  process   –  We  contribute  substanMally  to  the  spec   •  The  polyglot  JVM  effort  is  starMng  to  be   coordinated   •  Bytecode  is  basically  serialized  Java   –  No  runMme-­‐only  dispatch  
  123. 123. 2006   •  VirtualizaMon  is  becoming  trendy   •  “The  JVM  is  just  a  specialized  operaMng   system  for  running  Java”   •  BEA  Starts  building  JRockit  Virtual  EdiMon   (VE)   – Value  add  #4  
  124. 124. 2006  
  125. 125. 2006   •  Why  is  virtualized  Java  powerful?   –  Removal  of  abstracMon   –  Zero  copy  I/O   –  Move  everything  we  can  to  userland   –  Minimize  syscalls   –  Threads  can  protect  memory  from  other  threads   •  Cheap  read  barriers  for  low  latency  GC!   –  But  device  drivers?   –  That’s  what  we  have  the  Hypervisor  for   –  Heavily  encouraged  by  the  investment  banking   industry  
  126. 126. 2007   •  Apache  requests  TCK   •  The  JCP  stalls   •  JRockit  needs  to  hedge  its  bets,  and  can   run  Harmony  aqer  a  few  months   •  BEA/Sun  Java  license  discussions   •  No  language  updates  for  the  forseeable   future?  
  127. 127. 2008   •  Oracle  acquires  BEA  
  128. 128. 2008   •  Oracle  acquires  BEA  
  129. 129. 2008   •  Oracle  acquires  BEA   •  JRockit  engineering  works  closely  with   ExaData  and  the  Oracle  server  stacks   •  JRockit  becomes  default  Oracle  JVM  
  130. 130. 2008   •  Oracle  acquires  BEA   •  JRockit  engineering  works  closely  with   ExaData  and  the  Oracle  server  stacks   •  JRockit  becomes  default  Oracle  JVM   •  Oracle  forces  the  move  from  VMWare  to   Xen  for  Jrockit  VE.  
  131. 131. 2008-­‐2009   •  PoliMcal  vacuum   •  Sun  in  financial  trouble?  
  132. 132. 2010   •  Oracle  acquires  Sun!  
  133. 133. 2010   •  Oracle  acquires  Sun!  
  134. 134. 2010   •  Oracle  acquires  Sun!   •  HotRockit?   •  JRockit  VE  dies  :-­‐(    
  135. 135. 2010   •  Pause  music,  Marcus  does  a  startup  
  136. 136. 2011   •  Sadly,  sMll  no  new  Java  release  since  2006   •  IBM  joins  the  OpenJDK   •  Harmony  reMres  
  137. 137. 2011   •  Sadly,  sMll  no  new  Java  release  since  2006   •  IBM  joins  the  OpenJDK   •  Harmony  reMres   •  Marcus  comes  back  to  the  Language  team  
  138. 138. 2011   •  Java  7  “Dolphin”   –  Plan  “A”   –  IniMal  (naMve)  implementaMon  of  invokedynamic   bytecode   –  Compressed  oops  default   –  Project  Coin   •  Try-­‐with-­‐resource,  switch  on  strings,  binary  literals,   underscores,  mulM  catch  with  |  separators   –  Concurrency  uMliMes  finalized  (JSR-­‐166)   –  NIO-­‐2  (JSR-­‐203)  
  139. 139. 2011   •  Java  7  extremely  well  received  by   community!   •  Tipping  point  and  community  goodwill   •  Oracle’s  second  JavaOne  extremely  well   received  
  140. 140. JVM  Architecture  observaMon   •  We  have  the  backwards  compaMbility  sMll   •  We  will  always  maintain  it   – In  some  ways,  things  might  change,  e.g.   Jigsaw,  but  fundamental  compaMbility  will   always  be  there  
  141. 141. JVM  Architecture  observaMon   •  Demo:  AkroMail,  binaries  compiled  easter   1997.  
  142. 142. 2011-­‐2012   •  Java  8  development  starts  picking  up   speed   •  Nashorn  project  officially  starts   •  JMC  /  servicability  port  to  HotSpot   completes,  part  of  Java  8  (7u40)   •  Beder  build  and  test  infrastructure  
  143. 143. 2013   •  Crunch  mode  
  144. 144. 2013   •  Crunch  mode   •  Huge  security  backlog  goes  away!  
  145. 145. 2014   •  Java  8  (released  March  18)   – Biggest  and  best  Java  release  ever   – Perm  gen  removal   – Type  annotaMon   – Unsigned  integer  math   – Repeated  annotaMons   – Date  and  Time  API  (JSR-­‐310)   – Nashorn  
  146. 146. 2014  
  147. 147. 2014  
  148. 148. 2014   List<?> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500); for (Integer cost : costBeforeTax) { double price = cost + .25*cost; System.out.println(price); }  
  149. 149. 2014   List<?> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500); costBeforeTax.stream(). map((cost) -> cost .25*cost). forEach(System.out::println);  
  150. 150. 2014   List<?> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500); costBeforeTax.parallelStream(). map((cost) -> cost .25*cost). forEach(System.out::println);  
  151. 151. 2014   •  …and  the  build  process   •  ./configure; make – 5  minutes   – HUGE  breakthrough  for  producMvity  
  152. 152. 2015  
  153. 153. 2015   •  Java  9  in  the  works   – Jigsaw   – REPL  (Project  Kulla)   – Nashorn  parMal  ES6  support,  huge   performance  improvements  
  154. 154. 2015   •  Aqer  Java  9   – Value  types  (project  Valhalla)   – Foreign  funcMon  interface  (project  Panama)   – Arrays  2.0   – DeterminisMc  and  Low  Latency  GC  
  155. 155. 2015   •  Java  is  vibrant  again!   •  Java  8  is  lovely!   •  We  are  hiring!   •  Join  us?  
  156. 156. Q  &  A?  

×