Les nouveaux langages sont de plus en plus présents et bouleversent un eco- systeme dominé par Java: Ruby, et notamment Rails, annoncent des productivités faisant rêver les chefs de projet Java; d'autres proposent la gestion de concurrence et de parallélisme (souvent problématiques pour les programmeurs Java) nativement dans la langage. Alors que faire? Jeter Java et la JVM, rester sourd aux chants des sirènes? Dans cette session nous aborderons les limites de la plateforme Java et comment concilier les meilleurs des mondes.
26. reduce (x y -> x+y) 0 (map (x -> 2*x) [1,2,3]
Intérêt de la programmation fonctionnelle
class MyList extends ArrayList<Integer> {
public MyList(int... array) {
for(int i : array) {
this.add(i);
}
}
public void multiplyBy(int by) {
for (int i = 0; i < this.size(); i++) {
this.set(i, this.get(i) * by);
}
}
public int sum() {
int result = 0;
while (!this.isEmpty()) {
result += this.get(i);
}
return result;
}
public static void main(String[] args) {
MyList list = new MyList(1,2,3);
list.multiplyBy(2);
list.sum();
}
}//End of MyList class
Java
Langage fonctionnel
42. Pour aller plus loin utilisez un autre langage
DSL métier en Groovy/Scala
val portfolio = List[Order] {
new Order buy (100 callOn "GLE" withStrike(30 euros)),
new Order sell (15 putOn "CS" withStrike(20 euros))
}