SlideShare une entreprise Scribd logo
1  sur  164
Télécharger pour lire hors ligne
A	
  trip	
  down	
  memory	
  lane:	
  	
  
20	
  years	
  in	
  Java	
  and	
  JVM	
  land	
  
Marcus	
  Lagergren	
  
@lagergren	
  
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	
  
Safe	
  Harbor	
  Statement	
  
@lagergren	
  
Safe	
  Harbor	
  Statement	
  
[This	
  is	
  my	
  story,	
  my	
  experiences.	
  
Official	
  and	
  other	
  peoples’	
  
versions	
  of	
  events	
  may	
  vary]	
  
@lagergren	
  
I’ve	
  talked	
  about	
  
computer	
  history	
  in	
  a	
  
runMme	
  perspecMve	
  
before	
  
@lagergren	
  
•  GeekOut	
  2014,	
  Tallinn	
  
•  JokerConf	
  2014,	
  Saint	
  Petersburg	
  
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.	
  
What	
  have	
  I	
  been	
  doing	
  with	
  my	
  life	
  for	
  these	
  past	
  
20	
  years?	
  
An	
  informaMve	
  keynote	
  
A	
  historical	
  keynote	
  
A	
  nostalgic	
  keynote	
  
Agenda	
  
•  It’s	
  2015	
  
•  Java	
  has	
  been	
  around	
  for	
  20	
  years.	
  
•  Longer	
  if	
  you	
  count	
  the	
  alphas/
betas	
  of	
  Java	
  1.0	
  
Or	
  even	
  simpler…	
  
20	
  years	
  of	
  Java	
  and	
  runMmes	
  from	
  an	
  
engineer’s	
  perspecMve…	
  
Or	
  even	
  simpler…	
  
20	
  years	
  of	
  Java	
  and	
  runMmes	
  from	
  an	
  
engineer’s	
  perspecMve…	
  
Or	
  even	
  simpler…	
  
20	
  years	
  of	
  Java	
  and	
  runMmes	
  from	
  an	
  
engineer’s	
  perspecMve…	
  
Or	
  even	
  simpler…	
  
20	
  years	
  of	
  Java	
  and	
  runMmes	
  from	
  an	
  
engineer’s	
  perspecMve…	
  
Or	
  even	
  simpler…	
  
20	
  years	
  of	
  Java	
  and	
  runMmes	
  from	
  an	
  
engineer’s	
  perspecMve…	
  
Or	
  even	
  simpler…	
  
20	
  years	
  of	
  Java	
  and	
  runMmes	
  from	
  an	
  
engineer’s	
  perspecMve…	
  
Javaland keynote final
Javaland keynote final
Take	
  us	
  back	
  to	
  1995!	
  
Javaland keynote final
Oops…	
  too	
  far	
  
Oops…	
  too	
  far	
  
A	
  boy	
  gets	
  his	
  Commodore	
  64	
  
Javaland keynote final
Javaland keynote final
1991-­‐1993	
  
•  Project	
  “Green”	
  at	
  Sun	
  
Microsystems	
  
1991-­‐1993	
  
•  Project	
  “Green”	
  at	
  Sun	
  
Microsystems	
  
•  A	
  portable	
  architecture	
  
for	
  home	
  electronics	
  
1991-­‐1993	
  
•  Project	
  “Green”	
  at	
  Sun	
  
Microsystems	
  
•  A	
  portable	
  architecture	
  
for	
  home	
  electronics	
  
•  Remote	
  controls?	
  
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”	
  
	
  
	
  
1994	
  
•  At	
  the	
  same	
  Mme	
  in	
  Santa	
  Clara	
  
1994	
  
•  At	
  the	
  same	
  Mme	
  in	
  Santa	
  Clara	
  
•  Oak	
  has	
  beder	
  applicaMons	
  than	
  programming	
  
remote	
  controls	
  
1994	
  
•  At	
  the	
  same	
  Mme	
  in	
  Santa	
  Clara	
  
•  Oak	
  has	
  beder	
  applicaMons	
  than	
  programming	
  
remote	
  controls	
  
•  Deal	
  with	
  Netscape	
  is	
  being	
  finalized	
  
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	
  
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	
  
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	
  
	
  
	
  
1996	
  
•  I	
  worked	
  with	
  Alphas	
  of	
  JDK	
  1.0	
  at	
  Ericsson	
  
Medialab	
  
	
  
	
  
	
  
	
  
1996	
  
•  I	
  worked	
  with	
  Alphas	
  of	
  JDK	
  1.0	
  at	
  Ericsson	
  
Medialab	
  
	
  
	
  
	
  
	
  
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	
  
1996	
  
•  Anyone	
  remember	
  gamelan.com?	
  
	
  
	
  
	
  
	
  
1996	
  
•  Internship	
  at	
  Ericsson	
  Medialab	
  
1996	
  
•  Internship	
  at	
  Ericsson	
  Medialab	
  
•  “Play	
  with	
  Ericsson’s	
  future”	
  
•  Use	
  “cukng	
  edge	
  technology”	
  to	
  do	
  something	
  
with	
  media	
  on	
  demand	
  
1996	
  
•  Internship	
  at	
  Ericsson	
  Medialab	
  
•  “Play	
  with	
  Ericsson’s	
  future”	
  
•  Use	
  “cukng	
  edge	
  technology”	
  to	
  do	
  something	
  
with	
  media	
  on	
  demand	
  
1996	
  
•  Basically	
  SpoMfy	
  
	
  
1996	
  
•  Basically	
  SpoMfy	
  
•  …	
  and	
  Nemlix	
  
1996	
  
•  Basically	
  SpoMfy	
  
•  …	
  and	
  Nemlix	
  
•  …	
  in	
  an	
  Applet	
  
1996	
  
•  Basically	
  SpoMfy	
  
•  …	
  and	
  Nemlix	
  
•  …	
  in	
  an	
  Applet	
  
•  …	
  with	
  mpeg	
  hardware	
  cards	
  
1996	
  
•  Java	
  1.0	
  
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?	
  
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)	
  
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)	
  
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”	
  
1996	
  
•  “Your	
  development	
  cycle	
  is	
  much	
  faster	
  because	
  Java	
  is	
  
interpreted.	
  The	
  compile-­‐link-­‐load-­‐test-­‐crash-­‐debug-­‐cycle	
  is	
  
obsolete”	
  
-­‐	
  James	
  Gosling	
  	
  
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?	
  
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	
  
1996	
  
1996	
  
1996	
  
1997	
  
•  Java	
  on	
  the	
  client	
  side	
  not	
  really	
  taking	
  off	
  
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	
  
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	
  
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	
  
1997	
  
•  Java	
  1.1	
  
•  Inner	
  classes	
  
•  JavaBeans	
  
•  JDBC	
  
•  RMI	
  
•  Limited	
  ReflecMon	
  (non	
  runMme)	
  
•  The	
  first	
  JITs	
  	
  
•  (Symantec	
  on	
  Windows)	
  
•  SERIALIZATION	
  –	
  THE	
  HORROR!	
  
1997:	
  BTH	
  –	
  Win	
  a	
  trip	
  to	
  JavaOne	
  
JavaOne	
  1997	
  
•  Sun	
  Microsystems	
  presents	
  the	
  HotSpot	
  
virtual	
  machine	
  
– “WOW!	
  This	
  is	
  the	
  way	
  to	
  do	
  it!	
  AdapMve	
  
runMmes!”	
  
1998	
  
•  JDK	
  1.2	
  
•  Swing	
  
•  stricmp	
  
•  JIT	
  introduced	
  in	
  the	
  classic	
  VM	
  
•  CollecMons	
  API	
  
•  JDK	
  triples	
  in	
  size:	
  1520	
  classes,	
  59	
  packages	
  
1998	
  
•  JDK	
  1.2	
  
•  Swing	
  
•  stricmp	
  
•  JIT	
  introduced	
  in	
  the	
  classic	
  VM	
  
•  CollecMons	
  API	
  
•  JDK	
  triples	
  in	
  size:	
  1520	
  classes,	
  59	
  packages	
  
JavaOne	
  1998	
  
•  Sun	
  Microsystems	
  presents	
  the	
  HotSpot	
  
virtual	
  machine	
  again	
  
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?	
  	
  
CreaMng	
  our	
  own	
  JVM	
  -­‐	
  JRockit	
  
ProducMze	
  a	
  narrower	
  domain?	
  
•  Server-­‐side	
  usage	
  only.	
  Headless.	
  	
  
– We	
  need	
  to	
  help	
  the	
  early	
  app	
  server	
  vendors	
  get	
  
performance	
  and	
  scalability	
  
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”	
  
1998	
  
•  BEA	
  Acquires	
  WebLogic	
  
•  Weblogic	
  becomes	
  one	
  the	
  first	
  drivers	
  for	
  J2EE	
  
specificaMon	
  
1998	
  
1998	
  
•  TowerJ	
  
•  Excelsior	
  JET	
  
•  Convert	
  byte	
  code	
  to	
  C	
  code	
  and	
  run	
  gcc	
  
•  Fundementally	
  incompaMble	
  with	
  a	
  runMme	
  
language	
  
•  Rakes	
  in	
  $$$	
  anyway	
  
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)	
  
2000	
  
•  Java	
  is	
  now	
  the	
  fastest	
  growing	
  programming	
  
language	
  in	
  the	
  world	
  
•  Dot	
  com	
  bubble	
  
•  NASDAQ	
  hits	
  5.000	
  just	
  before	
  the	
  tech	
  
wreck	
  
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”	
  
The	
  Java	
  License	
  
•  What’s	
  a	
  “value	
  add”?	
  
The	
  Java	
  License	
  
•  What’s	
  a	
  “value	
  add”?	
  
The	
  Java	
  License	
  
The	
  Java	
  License	
  
•  What’s	
  a	
  “value	
  add”?	
  
The	
  Java	
  License	
  
•  What’s	
  a	
  “value	
  add”?	
  
– Superior	
  performance!	
  
The	
  Java	
  License	
  
•  What’s	
  a	
  “value	
  add”?	
  
– Superior	
  performance!	
  
– What?	
  You	
  didn’t	
  like	
  that?	
  
The	
  Java	
  License	
  
•  What’s	
  a	
  “value	
  add”?	
  
– Superior	
  performance!	
  
– What?	
  You	
  didn’t	
  like	
  that?	
  
– OK…	
  Let’s	
  see…	
  Err..	
  “managability”	
  
The	
  Java	
  License	
  
2000	
  
•  JDK	
  1.3	
  “Kestrel”	
  
– HotSpot	
  released	
  before,	
  April	
  1999	
  J2SE	
  JVM	
  
– But	
  Kestrel	
  bundles	
  HotSpot	
  with	
  JDK	
  
– JNDI	
  
– JPDA	
  
– RMI/Corba	
  
– JavaSound	
  
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	
  
2001	
  
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	
  
2001	
  
•  BEA	
  wants	
  performance	
  and	
  scalability	
  
YESTERDAY	
  
•  We	
  take	
  Mme	
  to	
  help	
  them	
  out	
  
•  Start	
  cooperaMng	
  on	
  benchmarks	
  
•  Intel	
  /	
  BEA	
  discussions	
  about	
  JRockit	
  
2001	
  
•  The	
  Itanium	
  gets	
  introduced	
  
2001	
  
•  JavaOne	
  2001	
  
•  I	
  was	
  mostly	
  in	
  San	
  Mateo	
  gekng	
  JRockit	
  
to	
  run	
  on	
  IA64	
  in	
  binary	
  translaMon	
  mode	
  
2002	
  
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	
  
2002	
  
•  ValenMne’s	
  day:	
  BEA	
  acquires	
  Appeal	
  
Virtual	
  Machines	
  
•  Now:	
  how	
  do	
  we	
  make	
  money?	
  
•  Eventually	
  we	
  found	
  4	
  value	
  adds	
  
2002	
  
•  ValenMne’s	
  day:	
  BEA	
  acquires	
  Appeal	
  
Virtual	
  Machines	
  
•  Now:	
  how	
  do	
  we	
  make	
  money?	
  
•  Eventually	
  we	
  found	
  4	
  value	
  adds	
  
2002	
  
•  Value	
  add	
  #1	
  
– CCE/SE	
  
– Implement	
  BEA’s	
  mulM	
  Mer	
  support	
  process	
  
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	
  
2003-­‐2004	
  
•  Some	
  hardware	
  observaMons	
  are	
  in	
  order	
  
2003-­‐2004	
  
•  Some	
  hardware	
  observaMons	
  are	
  in	
  order	
  
– Clock	
  rate	
  curves	
  start	
  to	
  fladen	
  out	
  
2003-­‐2004	
  
•  Some	
  hardware	
  observaMons	
  are	
  in	
  order	
  
– Clock	
  rate	
  curves	
  start	
  to	
  fladen	
  out	
  
– MulM	
  cores,	
  NUMA,	
  hyperthreading	
  
2003-­‐2004	
  
•  Some	
  hardware	
  observaMons	
  are	
  in	
  order	
  
– Clock	
  rate	
  curves	
  start	
  to	
  fladen	
  out	
  
– MulM	
  cores,	
  NUMA,	
  hyperthreading	
  
– Java	
  sMll	
  has	
  explicit	
  Threads	
  
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	
  
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	
  
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
2004	
  
•  The	
  Java	
  Memory	
  Model	
  gets	
  fixed!	
  
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	
  
The	
  Benchmark	
  Wars	
  
The	
  Benchmark	
  Wars	
  
•  SPECjvm98	
  was	
  the	
  benchmark	
  since	
  Mme	
  
immemorial	
  
•  SPECjbb2000,	
  2005	
  
•  SPECJAppServer	
  
•  Running	
  SPECjbb2005	
  is	
  a	
  quanMfiable	
  
management	
  goal	
  
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	
  
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	
  
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	
  
The	
  Benchmark	
  Wars	
  
“-XXaggressive”	
  ಠ_ಠ	
  
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	
  
2004	
  
java –XgcPrio:deterministic –XpauseTarget:5ms
2004	
  
java –XgcPrio:deterministic –XpauseTarget:5ms
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	
  
Latency	
  Analysis	
  Tool	
  
Memory	
  Leak	
  Detector	
  
2005	
  
Halqime	
  
2006	
  
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.	
  
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	
  
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	
  
Fantom	
  
Fortress	
  
BeanShell	
  
Jaskell	
  
ANTLR	
  
JudoScript	
  
ABCL	
  
Erjang	
  
X10	
  
jdart	
  
jgo	
  
Nice	
  
Gosu	
  
Jacl	
  
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	
  
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	
  
2006	
  
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	
  
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?	
  
2008	
  
•  Oracle	
  acquires	
  BEA	
  
2008	
  
•  Oracle	
  acquires	
  BEA	
  
2008	
  
•  Oracle	
  acquires	
  BEA	
  
•  JRockit	
  engineering	
  works	
  closely	
  with	
  
ExaData	
  and	
  the	
  Oracle	
  server	
  stacks	
  
•  JRockit	
  becomes	
  default	
  Oracle	
  JVM	
  
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.	
  
2008-­‐2009	
  
•  PoliMcal	
  vacuum	
  
•  Sun	
  in	
  financial	
  trouble?	
  
2010	
  
•  Oracle	
  acquires	
  Sun!	
  
2010	
  
•  Oracle	
  acquires	
  Sun!	
  
2010	
  
•  Oracle	
  acquires	
  Sun!	
  
•  HotRockit?	
  
•  JRockit	
  VE	
  dies	
  :-­‐(	
  	
  
Javaland keynote final
2010	
  
•  Pause	
  music,	
  Marcus	
  does	
  a	
  startup	
  
2011	
  
•  Sadly,	
  sMll	
  no	
  new	
  Java	
  release	
  since	
  2006	
  
•  IBM	
  joins	
  the	
  OpenJDK	
  
•  Harmony	
  reMres	
  
2011	
  
•  Sadly,	
  sMll	
  no	
  new	
  Java	
  release	
  since	
  2006	
  
•  IBM	
  joins	
  the	
  OpenJDK	
  
•  Harmony	
  reMres	
  
•  Marcus	
  comes	
  back	
  to	
  the	
  Language	
  team	
  
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)	
  
2011	
  
•  Java	
  7	
  extremely	
  well	
  received	
  by	
  
community!	
  
•  Tipping	
  point	
  and	
  community	
  goodwill	
  
•  Oracle’s	
  second	
  JavaOne	
  extremely	
  well	
  
received	
  
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	
  
JVM	
  Architecture	
  observaMon	
  
•  Demo:	
  AkroMail,	
  binaries	
  compiled	
  easter	
  
1997.	
  
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	
  
2013	
  
•  Crunch	
  mode	
  
2013	
  
•  Crunch	
  mode	
  
•  Huge	
  security	
  backlog	
  goes	
  away!	
  
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	
  
2014	
  
2014	
  
2014	
  
List<?> costBeforeTax =
Arrays.asList(100, 200, 300, 400, 500);
for (Integer cost : costBeforeTax) {
double price = cost + .25*cost;
System.out.println(price);
}
	
  
2014	
  
List<?> costBeforeTax =
Arrays.asList(100, 200, 300, 400, 500);
costBeforeTax.stream().
map((cost) -> cost .25*cost).
forEach(System.out::println);
	
  
2014	
  
List<?> costBeforeTax =
Arrays.asList(100, 200, 300, 400, 500);
costBeforeTax.parallelStream().
map((cost) -> cost .25*cost).
forEach(System.out::println);
	
  
2014	
  
•  …and	
  the	
  build	
  process	
  
•  ./configure; make
– 5	
  minutes	
  
– HUGE	
  breakthrough	
  for	
  producMvity	
  
2015	
  
2015	
  
•  Java	
  9	
  in	
  the	
  works	
  
– Jigsaw	
  
– REPL	
  (Project	
  Kulla)	
  
– Nashorn	
  parMal	
  ES6	
  support,	
  huge	
  
performance	
  improvements	
  
2015	
  
•  Aqer	
  Java	
  9	
  
– Value	
  types	
  (project	
  Valhalla)	
  
– Foreign	
  funcMon	
  interface	
  (project	
  Panama)	
  
– Arrays	
  2.0	
  
– DeterminisMc	
  and	
  Low	
  Latency	
  GC	
  
2015	
  
•  Java	
  is	
  vibrant	
  again!	
  
•  Java	
  8	
  is	
  lovely!	
  
•  We	
  are	
  hiring!	
  
•  Join	
  us?	
  
Q	
  &	
  A?	
  
Javaland keynote final

Contenu connexe

En vedette

Cassandra Troubleshooting (for 2.0 and earlier)
Cassandra Troubleshooting (for 2.0 and earlier)Cassandra Troubleshooting (for 2.0 and earlier)
Cassandra Troubleshooting (for 2.0 and earlier)J.B. Langston
 
Legacy lambda code
Legacy lambda codeLegacy lambda code
Legacy lambda codePeter Lawrey
 
Железные счётчики на страже производительности
Железные счётчики на страже производительностиЖелезные счётчики на страже производительности
Железные счётчики на страже производительностиSergey Kuksenko
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9Marcus Lagergren
 
JPoint 2016 - Валеев Тагир - Странности Stream API
JPoint 2016 - Валеев Тагир - Странности Stream APIJPoint 2016 - Валеев Тагир - Странности Stream API
JPoint 2016 - Валеев Тагир - Странности Stream APItvaleev
 
Cassandra 3.0 advanced preview
Cassandra 3.0 advanced previewCassandra 3.0 advanced preview
Cassandra 3.0 advanced previewPatrick McFadin
 
Stream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовStream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовtvaleev
 
"Quantum" Performance Effects
"Quantum" Performance Effects"Quantum" Performance Effects
"Quantum" Performance EffectsSergey Kuksenko
 
"Quantum" performance effects
"Quantum" performance effects"Quantum" performance effects
"Quantum" performance effectsSergey Kuksenko
 
Java 8 Puzzlers as it was presented at Codemash 2017
Java 8 Puzzlers as it was presented at Codemash 2017Java 8 Puzzlers as it was presented at Codemash 2017
Java 8 Puzzlers as it was presented at Codemash 2017Baruch Sadogursky
 
Anwendungsfälle für Elasticsearch JavaLand 2015
Anwendungsfälle für Elasticsearch JavaLand 2015Anwendungsfälle für Elasticsearch JavaLand 2015
Anwendungsfälle für Elasticsearch JavaLand 2015Florian Hopf
 
Java Performance: Speedup your application with hardware counters
Java Performance: Speedup your application with hardware countersJava Performance: Speedup your application with hardware counters
Java Performance: Speedup your application with hardware countersSergey Kuksenko
 

En vedette (13)

Cassandra Troubleshooting (for 2.0 and earlier)
Cassandra Troubleshooting (for 2.0 and earlier)Cassandra Troubleshooting (for 2.0 and earlier)
Cassandra Troubleshooting (for 2.0 and earlier)
 
Legacy lambda code
Legacy lambda codeLegacy lambda code
Legacy lambda code
 
JDK8: Stream style
JDK8: Stream styleJDK8: Stream style
JDK8: Stream style
 
Железные счётчики на страже производительности
Железные счётчики на страже производительностиЖелезные счётчики на страже производительности
Железные счётчики на страже производительности
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9
 
JPoint 2016 - Валеев Тагир - Странности Stream API
JPoint 2016 - Валеев Тагир - Странности Stream APIJPoint 2016 - Валеев Тагир - Странности Stream API
JPoint 2016 - Валеев Тагир - Странности Stream API
 
Cassandra 3.0 advanced preview
Cassandra 3.0 advanced previewCassandra 3.0 advanced preview
Cassandra 3.0 advanced preview
 
Stream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовStream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководов
 
"Quantum" Performance Effects
"Quantum" Performance Effects"Quantum" Performance Effects
"Quantum" Performance Effects
 
"Quantum" performance effects
"Quantum" performance effects"Quantum" performance effects
"Quantum" performance effects
 
Java 8 Puzzlers as it was presented at Codemash 2017
Java 8 Puzzlers as it was presented at Codemash 2017Java 8 Puzzlers as it was presented at Codemash 2017
Java 8 Puzzlers as it was presented at Codemash 2017
 
Anwendungsfälle für Elasticsearch JavaLand 2015
Anwendungsfälle für Elasticsearch JavaLand 2015Anwendungsfälle für Elasticsearch JavaLand 2015
Anwendungsfälle für Elasticsearch JavaLand 2015
 
Java Performance: Speedup your application with hardware counters
Java Performance: Speedup your application with hardware countersJava Performance: Speedup your application with hardware counters
Java Performance: Speedup your application with hardware counters
 

Similaire à Javaland keynote final

Geek out 2014-lagergren-final
Geek out 2014-lagergren-finalGeek out 2014-lagergren-final
Geek out 2014-lagergren-finalMarcus Lagergren
 
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...jaxLondonConference
 
Lagergren jvmls-2014-final
Lagergren jvmls-2014-finalLagergren jvmls-2014-final
Lagergren jvmls-2014-finalMarcus Lagergren
 
itft-Java evolution
itft-Java evolutionitft-Java evolution
itft-Java evolutionAtul Sehdev
 
Chapter-1 Introduction.pptx
Chapter-1 Introduction.pptxChapter-1 Introduction.pptx
Chapter-1 Introduction.pptxSumanBhandari40
 
Lecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 FastLecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 FastUzairSaeed18
 
Introduction to java and it's opportunities
Introduction to java and it's opportunities Introduction to java and it's opportunities
Introduction to java and it's opportunities VigneshManikandan11
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?C4Media
 
Introduction to Java Programming
Introduction to Java ProgrammingIntroduction to Java Programming
Introduction to Java ProgrammingRavi Kant Sahu
 
Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date. Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date. Christian Heilmann
 
history and evaluation of java.pptx
history and evaluation of java.pptxhistory and evaluation of java.pptx
history and evaluation of java.pptxBHARATH KUMAR
 
Java Presentation
 Java Presentation Java Presentation
Java PresentationMarq2014
 
JavaScript History
JavaScript HistoryJavaScript History
JavaScript HistoryRhio Kim
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemFITC
 

Similaire à Javaland keynote final (20)

Geek out 2014-lagergren-final
Geek out 2014-lagergren-finalGeek out 2014-lagergren-final
Geek out 2014-lagergren-final
 
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
 
Jax keynote
Jax keynoteJax keynote
Jax keynote
 
Lagergren jvmls-2014-final
Lagergren jvmls-2014-finalLagergren jvmls-2014-final
Lagergren jvmls-2014-final
 
itft-Java evolution
itft-Java evolutionitft-Java evolution
itft-Java evolution
 
Chapter-1 Introduction.pptx
Chapter-1 Introduction.pptxChapter-1 Introduction.pptx
Chapter-1 Introduction.pptx
 
L1 basics
L1 basicsL1 basics
L1 basics
 
PALASH SL GUPTA
PALASH SL GUPTAPALASH SL GUPTA
PALASH SL GUPTA
 
Lecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 FastLecture-01 _Java Introduction CS 441 Fast
Lecture-01 _Java Introduction CS 441 Fast
 
Introduction to java and it's opportunities
Introduction to java and it's opportunities Introduction to java and it's opportunities
Introduction to java and it's opportunities
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?
 
Introduction to Java Programming
Introduction to Java ProgrammingIntroduction to Java Programming
Introduction to Java Programming
 
Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date. Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date.
 
history and evaluation of java.pptx
history and evaluation of java.pptxhistory and evaluation of java.pptx
history and evaluation of java.pptx
 
Java Presentation
 Java Presentation Java Presentation
Java Presentation
 
Java (1)
Java (1)Java (1)
Java (1)
 
JavaScript History
JavaScript HistoryJavaScript History
JavaScript History
 
Java Introduction
Java IntroductionJava Introduction
Java Introduction
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
 
Java
JavaJava
Java
 

Dernier

TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSTYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSedrianrheine
 
Bio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxBio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxnaveenithkrishnan
 
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfLESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfmchristianalwyn
 
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024Jan Löffler
 
Zero-day Vulnerabilities
Zero-day VulnerabilitiesZero-day Vulnerabilities
Zero-day Vulnerabilitiesalihassaah1994
 
Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Shubham Pant
 
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsVision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsRoxana Stingu
 
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdfIntroduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdfShreedeep Rayamajhi
 
Computer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteComputer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteMavein
 
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSLESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSlesteraporado16
 
Presentation2.pptx - JoyPress Wordpress
Presentation2.pptx -  JoyPress WordpressPresentation2.pptx -  JoyPress Wordpress
Presentation2.pptx - JoyPress Wordpressssuser166378
 
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...APNIC
 

Dernier (12)

TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSTYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
 
Bio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxBio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptx
 
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfLESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
 
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
 
Zero-day Vulnerabilities
Zero-day VulnerabilitiesZero-day Vulnerabilities
Zero-day Vulnerabilities
 
Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024
 
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsVision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
 
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdfIntroduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdf
 
Computer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteComputer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a Website
 
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSLESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
 
Presentation2.pptx - JoyPress Wordpress
Presentation2.pptx -  JoyPress WordpressPresentation2.pptx -  JoyPress Wordpress
Presentation2.pptx - JoyPress Wordpress
 
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
 

Javaland keynote final

  • 1. A  trip  down  memory  lane:     20  years  in  Java  and  JVM  land   Marcus  Lagergren   @lagergren  
  • 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. Safe  Harbor  Statement   @lagergren  
  • 4. Safe  Harbor  Statement   [This  is  my  story,  my  experiences.   Official  and  other  peoples’   versions  of  events  may  vary]   @lagergren  
  • 5. I’ve  talked  about   computer  history  in  a   runMme  perspecMve   before   @lagergren   •  GeekOut  2014,  Tallinn   •  JokerConf  2014,  Saint  Petersburg  
  • 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. What  have  I  been  doing  with  my  life  for  these  past   20  years?  
  • 11. Agenda   •  It’s  2015   •  Java  has  been  around  for  20  years.   •  Longer  if  you  count  the  alphas/ betas  of  Java  1.0  
  • 12. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  • 13. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  • 14. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  • 15. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  • 16. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  • 17. Or  even  simpler…   20  years  of  Java  and  runMmes  from  an   engineer’s  perspecMve…  
  • 20. Take  us  back  to  1995!  
  • 24. A  boy  gets  his  Commodore  64  
  • 27. 1991-­‐1993   •  Project  “Green”  at  Sun   Microsystems  
  • 28. 1991-­‐1993   •  Project  “Green”  at  Sun   Microsystems   •  A  portable  architecture   for  home  electronics  
  • 29. 1991-­‐1993   •  Project  “Green”  at  Sun   Microsystems   •  A  portable  architecture   for  home  electronics   •  Remote  controls?  
  • 30. 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”      
  • 31. 1994   •  At  the  same  Mme  in  Santa  Clara  
  • 32. 1994   •  At  the  same  Mme  in  Santa  Clara   •  Oak  has  beder  applicaMons  than  programming   remote  controls  
  • 33. 1994   •  At  the  same  Mme  in  Santa  Clara   •  Oak  has  beder  applicaMons  than  programming   remote  controls   •  Deal  with  Netscape  is  being  finalized  
  • 34. 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  
  • 35. 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  
  • 36. 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      
  • 37. 1996   •  I  worked  with  Alphas  of  JDK  1.0  at  Ericsson   Medialab          
  • 38. 1996   •  I  worked  with  Alphas  of  JDK  1.0  at  Ericsson   Medialab          
  • 39. 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  
  • 40. 1996   •  Anyone  remember  gamelan.com?          
  • 41. 1996   •  Internship  at  Ericsson  Medialab  
  • 42. 1996   •  Internship  at  Ericsson  Medialab   •  “Play  with  Ericsson’s  future”   •  Use  “cukng  edge  technology”  to  do  something   with  media  on  demand  
  • 43. 1996   •  Internship  at  Ericsson  Medialab   •  “Play  with  Ericsson’s  future”   •  Use  “cukng  edge  technology”  to  do  something   with  media  on  demand  
  • 44. 1996   •  Basically  SpoMfy    
  • 45. 1996   •  Basically  SpoMfy   •  …  and  Nemlix  
  • 46. 1996   •  Basically  SpoMfy   •  …  and  Nemlix   •  …  in  an  Applet  
  • 47. 1996   •  Basically  SpoMfy   •  …  and  Nemlix   •  …  in  an  Applet   •  …  with  mpeg  hardware  cards  
  • 49. 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?  
  • 50. 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)  
  • 51. 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)  
  • 52. 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”  
  • 53. 1996   •  “Your  development  cycle  is  much  faster  because  Java  is   interpreted.  The  compile-­‐link-­‐load-­‐test-­‐crash-­‐debug-­‐cycle  is   obsolete”   -­‐  James  Gosling    
  • 54. 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?  
  • 55. 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  
  • 59. 1997   •  Java  on  the  client  side  not  really  taking  off  
  • 60. 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  
  • 61. 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  
  • 62. 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  
  • 63. 1997   •  Java  1.1   •  Inner  classes   •  JavaBeans   •  JDBC   •  RMI   •  Limited  ReflecMon  (non  runMme)   •  The  first  JITs     •  (Symantec  on  Windows)   •  SERIALIZATION  –  THE  HORROR!  
  • 64. 1997:  BTH  –  Win  a  trip  to  JavaOne  
  • 65. JavaOne  1997   •  Sun  Microsystems  presents  the  HotSpot   virtual  machine   – “WOW!  This  is  the  way  to  do  it!  AdapMve   runMmes!”  
  • 66. 1998   •  JDK  1.2   •  Swing   •  stricmp   •  JIT  introduced  in  the  classic  VM   •  CollecMons  API   •  JDK  triples  in  size:  1520  classes,  59  packages  
  • 67. 1998   •  JDK  1.2   •  Swing   •  stricmp   •  JIT  introduced  in  the  classic  VM   •  CollecMons  API   •  JDK  triples  in  size:  1520  classes,  59  packages  
  • 68. JavaOne  1998   •  Sun  Microsystems  presents  the  HotSpot   virtual  machine  again  
  • 69. 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?    
  • 70. CreaMng  our  own  JVM  -­‐  JRockit  
  • 71. ProducMze  a  narrower  domain?   •  Server-­‐side  usage  only.  Headless.     – We  need  to  help  the  early  app  server  vendors  get   performance  and  scalability  
  • 72. 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”  
  • 73. 1998   •  BEA  Acquires  WebLogic   •  Weblogic  becomes  one  the  first  drivers  for  J2EE   specificaMon  
  • 75. 1998   •  TowerJ   •  Excelsior  JET   •  Convert  byte  code  to  C  code  and  run  gcc   •  Fundementally  incompaMble  with  a  runMme   language   •  Rakes  in  $$$  anyway  
  • 76. 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)  
  • 77. 2000   •  Java  is  now  the  fastest  growing  programming   language  in  the  world   •  Dot  com  bubble   •  NASDAQ  hits  5.000  just  before  the  tech   wreck  
  • 78. 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”  
  • 79. The  Java  License   •  What’s  a  “value  add”?  
  • 80. The  Java  License   •  What’s  a  “value  add”?  
  • 82. The  Java  License   •  What’s  a  “value  add”?  
  • 83. The  Java  License   •  What’s  a  “value  add”?   – Superior  performance!  
  • 84. The  Java  License   •  What’s  a  “value  add”?   – Superior  performance!   – What?  You  didn’t  like  that?  
  • 85. The  Java  License   •  What’s  a  “value  add”?   – Superior  performance!   – What?  You  didn’t  like  that?   – OK…  Let’s  see…  Err..  “managability”  
  • 87. 2000   •  JDK  1.3  “Kestrel”   – HotSpot  released  before,  April  1999  J2SE  JVM   – But  Kestrel  bundles  HotSpot  with  JDK   – JNDI   – JPDA   – RMI/Corba   – JavaSound  
  • 88. 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  
  • 90. 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  
  • 91. 2001   •  BEA  wants  performance  and  scalability   YESTERDAY   •  We  take  Mme  to  help  them  out   •  Start  cooperaMng  on  benchmarks   •  Intel  /  BEA  discussions  about  JRockit  
  • 92. 2001   •  The  Itanium  gets  introduced  
  • 93. 2001   •  JavaOne  2001   •  I  was  mostly  in  San  Mateo  gekng  JRockit   to  run  on  IA64  in  binary  translaMon  mode  
  • 95. 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  
  • 96. 2002   •  ValenMne’s  day:  BEA  acquires  Appeal   Virtual  Machines   •  Now:  how  do  we  make  money?   •  Eventually  we  found  4  value  adds  
  • 97. 2002   •  ValenMne’s  day:  BEA  acquires  Appeal   Virtual  Machines   •  Now:  how  do  we  make  money?   •  Eventually  we  found  4  value  adds  
  • 98. 2002   •  Value  add  #1   – CCE/SE   – Implement  BEA’s  mulM  Mer  support  process  
  • 99. 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  
  • 100. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order  
  • 101. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order   – Clock  rate  curves  start  to  fladen  out  
  • 102. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order   – Clock  rate  curves  start  to  fladen  out   – MulM  cores,  NUMA,  hyperthreading  
  • 103. 2003-­‐2004   •  Some  hardware  observaMons  are  in  order   – Clock  rate  curves  start  to  fladen  out   – MulM  cores,  NUMA,  hyperthreading   – Java  sMll  has  explicit  Threads  
  • 104. 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  
  • 105. 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  
  • 106. 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
  • 107. 2004   •  The  Java  Memory  Model  gets  fixed!  
  • 108. 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  
  • 110. The  Benchmark  Wars   •  SPECjvm98  was  the  benchmark  since  Mme   immemorial   •  SPECjbb2000,  2005   •  SPECJAppServer   •  Running  SPECjbb2005  is  a  quanMfiable   management  goal  
  • 111. 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  
  • 112. 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  
  • 113. 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  
  • 114. The  Benchmark  Wars   “-XXaggressive”  ಠ_ಠ  
  • 115. 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  
  • 118. 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  
  • 123. 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.  
  • 124. 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  
  • 125. 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  
  • 126. Fantom   Fortress   BeanShell   Jaskell   ANTLR   JudoScript   ABCL   Erjang   X10   jdart   jgo   Nice   Gosu   Jacl  
  • 127. 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  
  • 129. 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  
  • 131. 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  
  • 132. 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?  
  • 133. 2008   •  Oracle  acquires  BEA  
  • 134. 2008   •  Oracle  acquires  BEA  
  • 135. 2008   •  Oracle  acquires  BEA   •  JRockit  engineering  works  closely  with   ExaData  and  the  Oracle  server  stacks   •  JRockit  becomes  default  Oracle  JVM  
  • 136. 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.  
  • 137. 2008-­‐2009   •  PoliMcal  vacuum   •  Sun  in  financial  trouble?  
  • 138. 2010   •  Oracle  acquires  Sun!  
  • 139. 2010   •  Oracle  acquires  Sun!  
  • 140. 2010   •  Oracle  acquires  Sun!   •  HotRockit?   •  JRockit  VE  dies  :-­‐(    
  • 142. 2010   •  Pause  music,  Marcus  does  a  startup  
  • 143. 2011   •  Sadly,  sMll  no  new  Java  release  since  2006   •  IBM  joins  the  OpenJDK   •  Harmony  reMres  
  • 144. 2011   •  Sadly,  sMll  no  new  Java  release  since  2006   •  IBM  joins  the  OpenJDK   •  Harmony  reMres   •  Marcus  comes  back  to  the  Language  team  
  • 145. 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)  
  • 146. 2011   •  Java  7  extremely  well  received  by   community!   •  Tipping  point  and  community  goodwill   •  Oracle’s  second  JavaOne  extremely  well   received  
  • 147. 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  
  • 148. JVM  Architecture  observaMon   •  Demo:  AkroMail,  binaries  compiled  easter   1997.  
  • 149. 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  
  • 150. 2013   •  Crunch  mode  
  • 151. 2013   •  Crunch  mode   •  Huge  security  backlog  goes  away!  
  • 152. 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  
  • 155. 2014   List<?> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500); for (Integer cost : costBeforeTax) { double price = cost + .25*cost; System.out.println(price); }  
  • 156. 2014   List<?> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500); costBeforeTax.stream(). map((cost) -> cost .25*cost). forEach(System.out::println);  
  • 157. 2014   List<?> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500); costBeforeTax.parallelStream(). map((cost) -> cost .25*cost). forEach(System.out::println);  
  • 158. 2014   •  …and  the  build  process   •  ./configure; make – 5  minutes   – HUGE  breakthrough  for  producMvity  
  • 160. 2015   •  Java  9  in  the  works   – Jigsaw   – REPL  (Project  Kulla)   – Nashorn  parMal  ES6  support,  huge   performance  improvements  
  • 161. 2015   •  Aqer  Java  9   – Value  types  (project  Valhalla)   – Foreign  funcMon  interface  (project  Panama)   – Arrays  2.0   – DeterminisMc  and  Low  Latency  GC  
  • 162. 2015   •  Java  is  vibrant  again!   •  Java  8  is  lovely!   •  We  are  hiring!   •  Join  us?  
  • 163. Q  &  A?