Java 8 åpnet slusene for funksjonell programmering (FP) i Java, men verktøykassen som følger med JDKen er ganske mangelfull. Man har ingen støtte for immutable objekter og datastrukturer, som er helt essensielt innen FP og hjelper deg å fjerne en rekke typer kodefeil. I tillegg mangler for eksempel mer høynivå mekanismer for parallellisering av oppgaver.
I dette foredraget vil vi gå igjennom et utvalg av tredjepartsbiblioteker som du kan ta i bruk for å bøte på disse problemene og gjøre Java-koden din ennå mer sikker og funksjonell!
19. Lombok
@Value
public class Person {
String name;
@Wither int age;
}
Person person = new Person("Fredrik", 40);
Person older = person.withAge(41);
19
21. Ren Java
public class Person {
public final String name;
public final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// equals, hashCode, withAge, ...
}
21
42. This one goes to 11!
List<Article> frontpageArticles =
frontpage.getArticleIds().parallelStream()
.map(id -> fetchArticle(id))
.collect(toList());
42
44. CompletableFuture
Chaining of async futures and actions
Waiting for all or any future(s)
Explicitly complete (like Promise)
Control of executor service
44
http://blog.krecan.net/2014/03/18/how-to-specify-thread-pool-for-java-8-parallel-streams/
http://www.nurkiewicz.com/2013/05/java-8-completablefuture-in-action.html
45. To parallelStream or not to …
Batch?
parallelStream FTW!
Interactive? Concurrency?
CompletableFuture FTW!
45