Top Banner
Live Coding: By Urs Peter [email protected] @urs_peter
10

Live coding java 8 urs peter

May 10, 2015

Download

Technology

NLJUG
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: Live coding java 8   urs peter

Live  Coding:    

 By  Urs  Peter  

[email protected]  @urs_peter  

 

 

Page 2: Live coding java 8   urs peter

New  Features  of  Java  8  

•  JSR  335  Lambda  Expressions  and  Virtual  Extension  Methods  

•  JSR  308  AnnotaJons  on  Java  Types  Map<@NonNull String, @NonEmpty List<@Readonly Document>> files; !

•  JSR  310  Date  and  Time  API  OffsetDateTime now = OffsetDateTime.now(); System.out.println(now.format(DateTimeFormatter.ISO_DATE)); !

Page 3: Live coding java 8   urs peter

New  Features  of  Java  8  

•  JSR  335  Lambda  Expressions  and  Virtual  Extension  Methods  

•  JSR  308  AnnotaJons  on  Java  Types  Map<@NonNull String, @NonEmpty List<@Readonly Document>> files; !

•  JSR  310  Date  and  Time  API  OffsetDateTime now = OffsetDateTime.now(); System.out.println(now.format(DateTimeFormatter.ISO_DATE)); !

Page 4: Live coding java 8   urs peter

New  Features  of  Java  8  

•  JSR  335  Lambda  Expressions  and  Virtual  Extension  Methods  

•  JSR  308  AnnotaJons  on  Java  Types  Map<@NonNull String, @NonEmpty List<@Readonly Document>> files; !

•  JSR  310  Date  and  Time  API  OffsetDateTime now = OffsetDateTime.now(); System.out.println(now.format(DateTimeFormatter.ISO_DATE)); !

FuncAonal  Programming  

MulAple  Inheritance  of  Behaviour  

Page 5: Live coding java 8   urs peter

Let’s  Dive  into  Java  8!  

Page 6: Live coding java 8   urs peter

What  will  change  for  you?  

FuncJonal  programming    becomes  mainstream!  

Page 7: Live coding java 8   urs peter

How  to  get  funcJonal  

•  Change  the  way  you  look  at  programming  logic:  –  Think  in  terms  of  transforming  data  or  input/output    …instead  manipulaJng  state  

– Make  immutable  programming  the  default,  mutable  programming  the  excepJon  

–  FuncJonal  programming  implies  programming  on  a  higher  abstracAon  level  

 

Page 8: Live coding java 8   urs peter

How  to  get  funcJonal  

•  Start  using  higher  order  funcJons  (filter(), map() etc.)  in  CollecJons/Streams  – Whenever  you  use  a  for loop  try  to  come  up  with  a  funcJonal  alternaJve  

•  Use  Lambda’s  in  your  own  so]ware  structures  –  E.g.  Use  Lambda’s  instead  of  a  Template  or  Strategy  pa^ern  

•  Learn  to  read  Javadoc  for  Lambda’s  

Page 9: Live coding java 8   urs peter

When  to  apply    Virtual  Extension  Methods  

 •  Use  Virtual  Extension  Methods  to  make  new  addiJons  to  your  

API  backwards  compaJble    

•  Add  useful  default  implementaJons  to  your  interfaces  –  E.g.  Comparator:  boolean gt(T other), boolean lt(T other) !

•  Bundle  cross-­‐cuang  behaviour  in  interfaces  with  default  methods  –  E.g.  Logging  

Page 10: Live coding java 8   urs peter

Q  &  A  

 Urs  Peter  

[email protected]  @urs_peter