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)); !
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)); !
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
Let’s Dive into Java 8!
What will change for you?
FuncJonal programming becomes mainstream!
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
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
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