Top Banner
A trip down memory lane: 20 years in Java and JVM land Marcus Lagergren @lagergren
164
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Javaland keynote final

A  trip  down  memory  lane:    20  years  in  Java  and  JVM  land  

Marcus  Lagergren  @lagergren  

Page 2: Javaland keynote final

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  

Page 3: Javaland keynote final

Safe  Harbor  Statement  

@lagergren  

Page 4: Javaland keynote final

Safe  Harbor  Statement  

[This  is  my  story,  my  experiences.  Official  and  other  peoples’  versions  of  events  may  vary]  

@lagergren  

Page 5: Javaland keynote final

I’ve  talked  about  computer  history  in  a  runMme  perspecMve  before  

@lagergren  

•  GeekOut  2014,  Tallinn  •  JokerConf  2014,  Saint  Petersburg  

Page 6: Javaland keynote final

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.  

Page 7: Javaland keynote final

What  have  I  been  doing  with  my  life  for  these  past  20  years?  

Page 8: Javaland keynote final

An  informaMve  keynote  

Page 9: Javaland keynote final

A  historical  keynote  

Page 10: Javaland keynote final

A  nostalgic  keynote  

Page 11: Javaland keynote final

Agenda  

•  It’s  2015  •  Java  has  been  around  for  20  years.  •  Longer  if  you  count  the  alphas/

betas  of  Java  1.0  

Page 12: Javaland keynote final

Or  even  simpler…  

20  years  of  Java  and  runMmes  from  an  engineer’s  perspecMve…  

Page 13: Javaland keynote final

Or  even  simpler…  

20  years  of  Java  and  runMmes  from  an  engineer’s  perspecMve…  

Page 14: Javaland keynote final

Or  even  simpler…  

20  years  of  Java  and  runMmes  from  an  engineer’s  perspecMve…  

Page 15: Javaland keynote final

Or  even  simpler…  

20  years  of  Java  and  runMmes  from  an  engineer’s  perspecMve…  

Page 16: Javaland keynote final

Or  even  simpler…  

20  years  of  Java  and  runMmes  from  an  engineer’s  perspecMve…  

Page 17: Javaland keynote final

Or  even  simpler…  

20  years  of  Java  and  runMmes  from  an  engineer’s  perspecMve…  

Page 18: Javaland keynote final
Page 19: Javaland keynote final
Page 20: Javaland keynote final

Take  us  back  to  1995!  

Page 21: Javaland keynote final
Page 22: Javaland keynote final

Oops…  too  far  

Page 23: Javaland keynote final

Oops…  too  far  

Page 24: Javaland keynote final

A  boy  gets  his  Commodore  64  

Page 25: Javaland keynote final
Page 26: Javaland keynote final
Page 27: Javaland keynote final

1991-­‐1993  

•  Project  “Green”  at  Sun  Microsystems  

Page 28: Javaland keynote final

1991-­‐1993  

•  Project  “Green”  at  Sun  Microsystems  

•  A  portable  architecture  for  home  electronics  

Page 29: Javaland keynote final

1991-­‐1993  

•  Project  “Green”  at  Sun  Microsystems  

•  A  portable  architecture  for  home  electronics  

•  Remote  controls?  

Page 30: Javaland keynote final

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”  

   

Page 31: Javaland keynote final

1994  

•  At  the  same  Mme  in  Santa  Clara  

Page 32: Javaland keynote final

1994  

•  At  the  same  Mme  in  Santa  Clara  •  Oak  has  beder  applicaMons  than  programming  remote  controls  

Page 33: Javaland keynote final

1994  

•  At  the  same  Mme  in  Santa  Clara  •  Oak  has  beder  applicaMons  than  programming  remote  controls  

•  Deal  with  Netscape  is  being  finalized  

Page 34: Javaland keynote final

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  

Page 35: Javaland keynote final

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  

Page 36: Javaland keynote final

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  

   

Page 37: Javaland keynote final

1996  

•  I  worked  with  Alphas  of  JDK  1.0  at  Ericsson  Medialab  

   

   

Page 38: Javaland keynote final

1996  

•  I  worked  with  Alphas  of  JDK  1.0  at  Ericsson  Medialab  

   

   

Page 39: Javaland keynote final

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  

   

Page 40: Javaland keynote final

1996  

•  Anyone  remember  gamelan.com?  

   

   

Page 41: Javaland keynote final

1996  •  Internship  at  Ericsson  Medialab  

Page 42: Javaland keynote final

1996  •  Internship  at  Ericsson  Medialab  •  “Play  with  Ericsson’s  future”  •  Use  “cukng  edge  technology”  to  do  something  with  media  on  demand  

Page 43: Javaland keynote final

1996  •  Internship  at  Ericsson  Medialab  •  “Play  with  Ericsson’s  future”  •  Use  “cukng  edge  technology”  to  do  something  with  media  on  demand  

Page 44: Javaland keynote final

1996  •  Basically  SpoMfy    

Page 45: Javaland keynote final

1996  •  Basically  SpoMfy  •  …  and  Nemlix  

Page 46: Javaland keynote final

1996  •  Basically  SpoMfy  •  …  and  Nemlix  •  …  in  an  Applet  

Page 47: Javaland keynote final

1996  •  Basically  SpoMfy  •  …  and  Nemlix  •  …  in  an  Applet  •  …  with  mpeg  hardware  cards  

Page 48: Javaland keynote final

1996  •  Java  1.0  

Page 49: Javaland keynote final

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?  

Page 50: Javaland keynote final

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)  

Page 51: Javaland keynote final

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)  

Page 52: Javaland keynote final

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”  

Page 53: Javaland keynote final

1996  •  “Your  development  cycle  is  much  faster  because  Java  is  interpreted.  The  compile-­‐link-­‐load-­‐test-­‐crash-­‐debug-­‐cycle  is  obsolete”  

-­‐  James  Gosling    

Page 54: Javaland keynote final

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?  

Page 55: Javaland keynote final

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  

Page 56: Javaland keynote final

1996  

Page 57: Javaland keynote final

1996  

Page 58: Javaland keynote final

1996  

Page 59: Javaland keynote final

1997  •  Java  on  the  client  side  not  really  taking  off  

Page 60: Javaland keynote final

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  

Page 61: Javaland keynote final

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  

Page 62: Javaland keynote final

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  

Page 63: Javaland keynote final

1997  •  Java  1.1  •  Inner  classes  •  JavaBeans  •  JDBC  •  RMI  •  Limited  ReflecMon  (non  runMme)  •  The  first  JITs    •  (Symantec  on  Windows)  

•  SERIALIZATION  –  THE  HORROR!  

Page 64: Javaland keynote final

1997:  BTH  –  Win  a  trip  to  JavaOne  

Page 65: Javaland keynote final

JavaOne  1997  

•  Sun  Microsystems  presents  the  HotSpot  virtual  machine  – “WOW!  This  is  the  way  to  do  it!  AdapMve  runMmes!”  

Page 66: Javaland keynote final

1998  •  JDK  1.2  •  Swing  •  stricmp  •  JIT  introduced  in  the  classic  VM  •  CollecMons  API  •  JDK  triples  in  size:  1520  classes,  59  packages  

Page 67: Javaland keynote final

1998  •  JDK  1.2  •  Swing  •  stricmp  •  JIT  introduced  in  the  classic  VM  •  CollecMons  API  •  JDK  triples  in  size:  1520  classes,  59  packages  

Page 68: Javaland keynote final

JavaOne  1998  

•  Sun  Microsystems  presents  the  HotSpot  virtual  machine  again  

Page 69: Javaland keynote final

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?    

Page 70: Javaland keynote final

CreaMng  our  own  JVM  -­‐  JRockit  

Page 71: Javaland keynote final

ProducMze  a  narrower  domain?  

•  Server-­‐side  usage  only.  Headless.    – We  need  to  help  the  early  app  server  vendors  get  performance  and  scalability  

Page 72: Javaland keynote final

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”  

Page 73: Javaland keynote final

1998  •  BEA  Acquires  WebLogic  •  Weblogic  becomes  one  the  first  drivers  for  J2EE  specificaMon  

Page 74: Javaland keynote final

1998  

Page 75: Javaland keynote final

1998  •  TowerJ  •  Excelsior  JET  •  Convert  byte  code  to  C  code  and  run  gcc  •  Fundementally  incompaMble  with  a  runMme  language  •  Rakes  in  $$$  anyway  

Page 76: Javaland keynote final

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)  

Page 77: Javaland keynote final

2000  •  Java  is  now  the  fastest  growing  programming  language  in  the  world  •  Dot  com  bubble  •  NASDAQ  hits  5.000  just  before  the  tech  wreck  

Page 78: Javaland keynote final

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”  

Page 79: Javaland keynote final

The  Java  License  

•  What’s  a  “value  add”?  

Page 80: Javaland keynote final

The  Java  License  

•  What’s  a  “value  add”?  

Page 81: Javaland keynote final

The  Java  License  

Page 82: Javaland keynote final

The  Java  License  

•  What’s  a  “value  add”?  

Page 83: Javaland keynote final

The  Java  License  

•  What’s  a  “value  add”?  – Superior  performance!  

Page 84: Javaland keynote final

The  Java  License  

•  What’s  a  “value  add”?  – Superior  performance!  – What?  You  didn’t  like  that?  

Page 85: Javaland keynote final

The  Java  License  

•  What’s  a  “value  add”?  – Superior  performance!  – What?  You  didn’t  like  that?  – OK…  Let’s  see…  Err..  “managability”  

Page 86: Javaland keynote final

The  Java  License  

Page 87: Javaland keynote final

2000  

•  JDK  1.3  “Kestrel”  – HotSpot  released  before,  April  1999  J2SE  JVM  – But  Kestrel  bundles  HotSpot  with  JDK  –  JNDI  –  JPDA  – RMI/Corba  –  JavaSound  

Page 88: Javaland keynote final

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  

Page 89: Javaland keynote final

2001  

Page 90: Javaland keynote final

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  

Page 91: Javaland keynote final

2001  

•  BEA  wants  performance  and  scalability  YESTERDAY  

•  We  take  Mme  to  help  them  out  •  Start  cooperaMng  on  benchmarks  •  Intel  /  BEA  discussions  about  JRockit  

Page 92: Javaland keynote final

2001  

•  The  Itanium  gets  introduced  

Page 93: Javaland keynote final

2001  

•  JavaOne  2001  •  I  was  mostly  in  San  Mateo  gekng  JRockit  to  run  on  IA64  in  binary  translaMon  mode  

Page 94: Javaland keynote final

2002  

Page 95: Javaland keynote final

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  

Page 96: Javaland keynote final

2002  

•  ValenMne’s  day:  BEA  acquires  Appeal  Virtual  Machines  

•  Now:  how  do  we  make  money?  •  Eventually  we  found  4  value  adds  

Page 97: Javaland keynote final

2002  

•  ValenMne’s  day:  BEA  acquires  Appeal  Virtual  Machines  

•  Now:  how  do  we  make  money?  •  Eventually  we  found  4  value  adds  

Page 98: Javaland keynote final

2002  

•  Value  add  #1  – CCE/SE  –  Implement  BEA’s  mulM  Mer  support  process  

Page 99: Javaland keynote final

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  

Page 100: Javaland keynote final

2003-­‐2004  

•  Some  hardware  observaMons  are  in  order  

Page 101: Javaland keynote final

2003-­‐2004  

•  Some  hardware  observaMons  are  in  order  – Clock  rate  curves  start  to  fladen  out  

Page 102: Javaland keynote final

2003-­‐2004  

•  Some  hardware  observaMons  are  in  order  – Clock  rate  curves  start  to  fladen  out  – MulM  cores,  NUMA,  hyperthreading  

Page 103: Javaland keynote final

2003-­‐2004  

•  Some  hardware  observaMons  are  in  order  – Clock  rate  curves  start  to  fladen  out  – MulM  cores,  NUMA,  hyperthreading  –  Java  sMll  has  explicit  Threads  

Page 104: Javaland keynote final

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  

Page 105: Javaland keynote final

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  

Page 106: Javaland keynote final

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

Page 107: Javaland keynote final

2004  

•  The  Java  Memory  Model  gets  fixed!  

Page 108: Javaland keynote final

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  

Page 109: Javaland keynote final

The  Benchmark  Wars  

Page 110: Javaland keynote final

The  Benchmark  Wars  

•  SPECjvm98  was  the  benchmark  since  Mme  immemorial  

•  SPECjbb2000,  2005  •  SPECJAppServer  •  Running  SPECjbb2005  is  a  quanMfiable  management  goal  

Page 111: Javaland keynote final

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  

Page 112: Javaland keynote final

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  

Page 113: Javaland keynote final

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  

Page 114: Javaland keynote final

The  Benchmark  Wars  

“-XXaggressive”  ಠ_ಠ  

Page 115: Javaland keynote final

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  

Page 116: Javaland keynote final

2004  java –XgcPrio:deterministic –XpauseTarget:5ms

Page 117: Javaland keynote final

2004  java –XgcPrio:deterministic –XpauseTarget:5ms

Page 118: Javaland keynote final

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  

Page 119: Javaland keynote final

Latency  Analysis  Tool  

Page 120: Javaland keynote final

Memory  Leak  Detector  

Page 121: Javaland keynote final

2005  

Halqime  

Page 122: Javaland keynote final

2006  

Page 123: Javaland keynote final

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.  

Page 124: Javaland keynote final

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  

Page 125: Javaland keynote final

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  

Page 126: Javaland keynote final

Fantom  

Fortress  

BeanShell  

Jaskell  

ANTLR  

JudoScript  

ABCL  

Erjang  

X10  

myForth  

jdart  

jgo  

Nice  

Gosu  

Jacl  

Page 127: Javaland keynote final

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  

Page 128: Javaland keynote final
Page 129: Javaland keynote final

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  

Page 130: Javaland keynote final

2006  

Page 131: Javaland keynote final

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  

Page 132: Javaland keynote final

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?  

Page 133: Javaland keynote final

2008  

•  Oracle  acquires  BEA  

Page 134: Javaland keynote final

2008  

•  Oracle  acquires  BEA  

Page 135: Javaland keynote final

2008  

•  Oracle  acquires  BEA  •  JRockit  engineering  works  closely  with  ExaData  and  the  Oracle  server  stacks  

•  JRockit  becomes  default  Oracle  JVM  

Page 136: Javaland keynote final

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.  

Page 137: Javaland keynote final

2008-­‐2009  

•  PoliMcal  vacuum  •  Sun  in  financial  trouble?  

Page 138: Javaland keynote final

2010  

•  Oracle  acquires  Sun!  

Page 139: Javaland keynote final

2010  

•  Oracle  acquires  Sun!  

Page 140: Javaland keynote final

2010  

•  Oracle  acquires  Sun!  •  HotRockit?  •  JRockit  VE  dies  :-­‐(    

Page 141: Javaland keynote final
Page 142: Javaland keynote final

2010  

•  Pause  music,  Marcus  does  a  startup  

Page 143: Javaland keynote final

2011  

•  Sadly,  sMll  no  new  Java  release  since  2006  •  IBM  joins  the  OpenJDK  •  Harmony  reMres  

Page 144: Javaland keynote final

2011  

•  Sadly,  sMll  no  new  Java  release  since  2006  •  IBM  joins  the  OpenJDK  •  Harmony  reMres  •  Marcus  comes  back  to  the  Language  team  

Page 145: Javaland keynote final

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)  

Page 146: Javaland keynote final

2011  

•  Java  7  extremely  well  received  by  community!  

•  Tipping  point  and  community  goodwill  •  Oracle’s  second  JavaOne  extremely  well  received  

Page 147: Javaland keynote final

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  

Page 148: Javaland keynote final

JVM  Architecture  observaMon  

•  Demo:  AkroMail,  binaries  compiled  easter  1997.  

Page 149: Javaland keynote final

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  

Page 150: Javaland keynote final

2013  

•  Crunch  mode  

Page 151: Javaland keynote final

2013  

•  Crunch  mode  •  Huge  security  backlog  goes  away!  

Page 152: Javaland keynote final

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  

Page 153: Javaland keynote final

2014  

Page 154: Javaland keynote final

2014  

Page 155: Javaland keynote final

2014  

List<?> costBeforeTax =

Arrays.asList(100, 200, 300, 400, 500);

for (Integer cost : costBeforeTax) {

double price = cost + .25*cost; System.out.println(price);

}

 

Page 156: Javaland keynote final

2014  

List<?> costBeforeTax =

Arrays.asList(100, 200, 300, 400, 500);

costBeforeTax.stream().

map((cost) -> cost .25*cost).

forEach(System.out::println);

 

Page 157: Javaland keynote final

2014  

List<?> costBeforeTax =

Arrays.asList(100, 200, 300, 400, 500);

costBeforeTax.parallelStream().

map((cost) -> cost .25*cost).

forEach(System.out::println);

 

Page 158: Javaland keynote final

2014  

•  …and  the  build  process  •  ./configure; make – 5  minutes  – HUGE  breakthrough  for  producMvity  

Page 159: Javaland keynote final

2015  

Page 160: Javaland keynote final

2015  

•  Java  9  in  the  works  –  Jigsaw  – REPL  (Project  Kulla)  – Nashorn  parMal  ES6  support,  huge  performance  improvements  

Page 161: Javaland keynote final

2015  

•  Aqer  Java  9  – Value  types  (project  Valhalla)  – Foreign  funcMon  interface  (project  Panama)  – Arrays  2.0  – DeterminisMc  and  Low  Latency  GC  

Page 162: Javaland keynote final

2015  

•  Java  is  vibrant  again!  •  Java  8  is  lovely!  •  We  are  hiring!  •  Join  us?  

Page 163: Javaland keynote final

Q  &  A?  

Page 164: Javaland keynote final