Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @...

68
Mark Reinhold (@mreinhold) Chief Architect, Java Pla1orm Group Oracle Beyond Java 9 Copyright © 2015, Oracle and/or its affiliates. All rights reserved. 2015/2/4 Copyright © 2015, Oracle and/or its affiliates. All rights reserved.

Transcript of Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @...

Page 1: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

Mark  Reinhold  (@mreinhold)Chief  Architect,  Java  Pla1orm  GroupOracle

Beyond  Java  9

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

2015/2/4

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

Page 2: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 3: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

The   preceding   is   intended   to   outline   our   general   product  direcDon.  It  is  intended  for  informaDon  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  commitment  to  deliver   any  material,   code,   or   funcDonality,   and  should  not  be  relied  upon   in  making  purchasing   decisions.   The  development,  release,  and  Dming  of  any  features  or  funcDonality  described  for  Oracle’s  products  remains  at  the  sole  discreDon  of  Oracle.

Page 4: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

The   preceding   is   intended   to   outline   our   general   product  direcDon.  It  is  intended  for  informaDon  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  commitment  to  deliver   any  material,   code,   or   funcDonality,   and  should  not  be  relied  upon   in  making  purchasing   decisions.   The  development,  release,  and  Dming  of  any  features  or  funcDonality  described  for  Oracle’s  products  remains  at  the  sole  discreDon  of  Oracle.

Page 5: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

The   preceding   is   intended   to   outline   our   general   product  direcDon.  It  is  intended  for  informaDon  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  commitment  to  deliver   any  material,   code,   or   funcDonality,   and  should  not  be  relied  upon   in  making  purchasing   decisions.   The  development,  release,  and  Dming  of  any  features  or  funcDonality  described  for  Oracle’s  products  remains  at  the  sole  discreDon  of  Oracle.

Page 6: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

The   preceding   is   intended   to   outline   our   general   product  direcDon.  It  is  intended  for  informaDon  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  commitment  to  deliver   any  material,   code,   or   funcDonality,   and  should  not  be  relied  upon   in  making  purchasing   decisions.   The  development,  release,  and  Dming  of  any  features  or  funcDonality  described  for  Oracle’s  products  remains  at  the  sole  discreDon  of  Oracle.

Page 7: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

HIGHLY

SPECULATIVEThe   preceding   is   intended   to   outline   our   general   product  

direcDon.  It  is  intended  for  informaDon  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  commitment  to  deliver   any  material,   code,   or   funcDonality,   and  should  not  be  relied  upon   in  making  purchasing   decisions.   The  development,  release,  and  Dming  of  any  features  or  funcDonality  described  for  Oracle’s  products  remains  at  the  sole  discreDon  of  Oracle.

Page 8: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 9: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

       final  int  x;        final  int  y;}

class  Point  {

Page 10: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 11: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Point[]  points  =  

Page 12: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

headerPoint[]  points  =  

Page 13: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

header

header

x

y

header

x

y

header

x

y

header

x

y

header

x

y

header

x

y

Point[]  points  =  header

x

y

header

x

y

Page 14: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

header

x

x

x

x

x

x

x

x

int[]  xs  =   header

y

y

y

y

y

y

y

y

int[]  ys  =  

Page 15: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Point[]  points  =   header

x

y

x

y

x

y

x

y

x

y

x

y

x

y

Page 16: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

synchronized  (points[i])  {  ...  }

Page 17: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

if  (points[i]  ==  p)  {  ...  }

Page 18: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

System.identityHashCode(points[i])

Page 19: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

       final  int  x;        final  int  y;}

class  Point  {

Page 20: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

       final  int  x;        final  int  y;}

class  Point  {value  

Page 21: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

       final  int  x;        final  int  y;}

class  Point  {value  

“Codes  like  a  class,  works  like  an  int!”

Page 22: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

header

header

x

y

header

x

y

header

x

y

header

x

y

header

x

y

header

x

y

header

x

y

header

x

y

Point[]  points  =  

Page 23: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

header

x

y

x

y

x

y

x

y

x

y

x

y

x

y

Point[]  points  =  

Page 24: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

       final  int  x;        final  int  y;}

class  Point  {value  

“Codes  like  a  class,  works  like  an  int!”

Page 25: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 26: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

int128ComplexDecimal

Page 27: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

int128ComplexDecimal

Tuple<T,U,V>

Page 28: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

int128ComplexDecimal

Tuple<T,U,V>

Optional<T>Either<T,U>

Page 29: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

int128ComplexDecimal

Tuple<T,U,V>

Optional<T>Either<T,U>

Cursor<T>

Page 30: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 31: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

public  value  class  Optional<T>  {

       private  final  T  value;

       public  T  get()  {                if  (value  ==  null)                        throw  new  NoSuchElementException();                return  value;        }

       public  T  orElse(T  other)  {                return  value  !=  null  ?  value  :  other;        }

       //  ...

Page 32: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 33: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

interface  Iterator<T>  {        boolean  hasNext();        T  next();        void  remove();}

Page 34: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 35: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

class  ArrayIterator<T>  implements  Iterator<T>  {

       private  T[]  array;        private  int  offset;

       public  boolean  hasNext()  {  return  offset  <  array.length;  }

       public  T  next()  {  return  array[offset++];  }

       //  ...

Page 36: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 37: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

value  class  ArrayCursor<T>  implements  Cursor<T>  {

       private  T[]  array;        private  int  offset;

       public  boolean  notEmpty()  {  return  offset  <  array.length;  }

       public  T  current()  {  return  array[offset];  }

       public  T  next()  {  return  new  Cursor(array,  offset  +  1);  }

       //  ...

Page 38: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 39: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Cursor<String>  c  =  Arrays.cursor(...);while  (c.notEmpty())  {        doSomething(c.current()));        c  =  c.next();}

Page 40: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 41: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

new  ArrayList<Point>()

Page 42: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

new  ArrayList<int>()

Page 43: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 44: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

ArrayList<String>ArrayList<Integer>ArrayList<URL>

Page 45: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

ArrayList.classArrayList.class

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

ArrayList<String>ArrayList<Integer>ArrayList<URL>

ArrayList.class

Page 46: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

ArrayList.classArrayList.class

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

ArrayList<String>ArrayList<Integer>ArrayList<URL>

ArrayList.class

ArrayList<int>

Page 47: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

ArrayList.classArrayList.class

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

ArrayList<String>ArrayList<Integer>ArrayList<URL>

ArrayList.class

ArrayList<int> ArrayList${T=int}.class

Page 48: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

ArrayList<Point>

ArrayList.classArrayList.class

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

ArrayList<String>ArrayList<Integer>ArrayList<URL>

ArrayList.class

ArrayList<int> ArrayList${T=int}.class

Page 49: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

ArrayList${T=Point}.classArrayList<Point>

ArrayList.classArrayList.class

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

ArrayList<String>ArrayList<Integer>ArrayList<URL>

ArrayList.class

ArrayList<int> ArrayList${T=int}.class

Page 50: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

ArrayList${T=Point}.classArrayList<Complex>ArrayList<Point>

ArrayList.classArrayList.class

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

ArrayList<String>ArrayList<Integer>ArrayList<URL>

ArrayList.class

ArrayList<int> ArrayList${T=int}.class

Page 51: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

ArrayList${T=Complex}.classArrayList${T=Point}.class

ArrayList<Complex>ArrayList<Point>

ArrayList.classArrayList.class

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

ArrayList<String>ArrayList<Integer>ArrayList<URL>

ArrayList.class

ArrayList<int> ArrayList${T=int}.class

Page 52: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 53: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

               for  (int  i  =  0;  i  <  size;  i++)                        data[i]  =  null;

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

       private  int  size;        private  T[]  data;

       public  void  clear()  {

public  class  ArrayList<T>  {

               size  =  0;        }

       //  ...

Page 54: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

any

               for  (int  i  =  0;  i  <  size;  i++)                        data[i]  =  null;

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

       private  int  size;        private  T[]  data;

       public  void  clear()  {

public  class  ArrayList< T>  {

               size  =  0;        }

       //  ...

Page 55: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

any

               for  (int  i  =  0;  i  <  size;  i++)                        data[i]  =  null;

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

       private  int  size;        private  T[]  data;

       public  void  clear()  {

public  class  ArrayList< T>  {

               size  =  0;        }

       //  ...

Page 56: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

any

               for  (int  i  =  0;  i  <  size;  i++)                        data[i]  =  null;

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

       private  int  size;        private  T[]  data;

       public  void  clear()  {

public  class  ArrayList< T>  {

               size  =  0;        }

       //  ...

               where  ref  t  {

               }

Page 57: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

public  class  ArrayList<any  T>  {

Page 58: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

public  class  ArrayList<any  T>  {

       public  T  remove        public  boolean  remove(T  element)  {  ...  }

       //  ...

(int  index)  {  ...  }

Page 59: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

public  class  ArrayList<any  T>  {

       public  T  remove        public  boolean  remove(T  element)  {  ...  }

       //  ...

(int  index)  {  ...  }At

Page 60: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

     where  ref  T  {                default  public  T  remove(int  index)  {                        return  removeAt(index);                }        }

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

public  class  ArrayList<any  T>  {

       public  T  remove        public  boolean  remove(T  element)  {  ...  }

       //  ...

(int  index)  {  ...  }At

Page 61: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

ArrayList<boolean>

Page 62: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

23

Page 63: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

23

Page 64: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Page 65: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Project  Valhalla

Project  Panama

h8p://openjdk.java.net

Page 66: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Project  Valhalla

Project  Panama

Value  TypesSpecialized  GenericsVar  Handles

h8p://openjdk.java.net

Page 67: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

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

Project  Valhalla

Project  Panama

Value  TypesSpecialized  GenericsVar  Handles

Foreign  FuncDon  InterfaceData  Layout  ControlArrays  2.0

h8p://openjdk.java.net

Page 68: Beyond Java 9 @ Jfokus 2015files.meetup.com/3189882/Beyond Java 9.pdf · Title: Beyond Java 9 @ Jfokus 2015 Author: Mark Reinhold Created Date: 2/27/2015 12:42:44 AM

Mark  Reinhold  (@mreinhold)Chief  Architect,  Java  Pla1orm  GroupOracle

Beyond  Java  9

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

2015/2/4

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