l'avenir de java : erlang, haskell ou ruby
DESCRIPTION
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.TRANSCRIPT
![Page 1: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/1.jpg)
L’avenir de Java
Benoît Lafontaine
David Rousselie
Marc Bojoly
![Page 2: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/2.jpg)
![Page 3: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/3.jpg)
© Université du Système d’Information 3
![Page 4: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/4.jpg)
© Université du Système d’Information 4
![Page 5: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/5.jpg)
© Université du Système d’Information 5
![Page 6: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/6.jpg)
© Université du Système d’Information 6
![Page 7: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/7.jpg)
© Université du Système d’Information 7
Java est içi
![Page 8: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/8.jpg)
© Université du Système d’Information 8
Java est içi
![Page 9: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/9.jpg)
Qu’attendre de cette session ?
9© Université du Système d’Information
![Page 10: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/10.jpg)
Quels apports ?
10© Université du Système d’Information
![Page 11: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/11.jpg)
Quels impacts ?
11© Université du Système d’Information
![Page 12: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/12.jpg)
Quels impacts ?
12© Université du Système d’Information
![Page 13: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/13.jpg)
Threads
13© Université du Système d’Information
![Page 14: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/14.jpg)
Threads
14© Université du Système d’Information
![Page 15: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/15.jpg)
Threads
15© Université du Système d’Information
![Page 16: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/16.jpg)
Threads
16© Université du Système d’Information
![Page 17: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/17.jpg)
Threads
17© Université du Système d’Information
![Page 18: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/18.jpg)
Threads
18© Université du Système d’Information
![Page 19: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/19.jpg)
19© Université du Système d’Information
![Page 20: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/20.jpg)
Threads
20
![Page 21: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/21.jpg)
Acteurs
21© Université du Système d’Information
![Page 22: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/22.jpg)
Intérêt de la programmation fonctionnelle
22© Université du Système d’Information
Programmation objet
Chaque méthode modifie l’état existant
![Page 23: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/23.jpg)
Intérêt de la programmation fonctionnelle
23© Université du Système d’Information
La fonction map(\x -> 2*x) prend donne
Programmation fonctionnelle
La fonction reduce (\x y -> x+y) prend
donne
![Page 24: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/24.jpg)
Intérêt de la programmation fonctionnelle
24© Université du Système d’Information
Appliquer Sur
Programmation objet
Programmation fonctionnelle
Patron de méthode
![Page 25: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/25.jpg)
Intérêt de la programmation fonctionnelle
25© Université du Système d’Information
Appliquer Sur
Programmation objet
Programmation fonctionnelle
Chaque méthode boucle sur la liste
![Page 26: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/26.jpg)
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
![Page 27: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/27.jpg)
27
![Page 28: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/28.jpg)
Intérêt de la programmation fonctionnelle
28© Université du Système d’Information …
Filtrage par motif (pattern matching) :
![Page 29: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/29.jpg)
addMouseListener(new MouseListener() { public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseClicked(MouseEvent e) { Button button = (Button)e.getComponent(); if ("Validate".equals(button.getName())) { System.out.print(button.text); } } });
val reactions = { case ButtonClicked(button) if button.name = "Validate" =>
println(button.text)}
La programmation fonctionnelle
Java
Langage fonctionnel
![Page 30: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/30.jpg)
30© Université du Système d’Information
![Page 31: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/31.jpg)
public List<Client> findByNameAndBirthday(String name, Date birthday) {
Session session = sessionFactory.openSession(); Query query = session.createQuery("from Client c where
c.name=:name and c.birthday=:birthday"); query.setString("name", name); query.setDate("birthday", birthday); return query.list(); }
class Client { def name def birthday}
client.findByNameAndBirthday("name", birthday)
La programmation dynamique
Java
Langage Dynamique
![Page 32: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/32.jpg)
public List<Client> findByNameAndBirthday(String name, Date birthday) {
Session session = sessionFactory.openSession(); Query query = session.createQuery("from Client c where
c.name=:name and c.birthday=:birthday"); query.setString("name", name); query.setDate("birthday", birthday); return query.list(); }
Java Langage dynamique :
La programmation dynamique
client.findByNameAndBirthday ("name", birthday)
Query query = session.createQuery("from Client c where c.name=:name and c.birthday=:birthday"); query.setString("name", "name"); query.setDate("birthday",birthday);
![Page 33: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/33.jpg)
Productivité et framework
Configuration Convention over Configuration
![Page 34: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/34.jpg)
Productivité et framework
class User < ActiveRecord::Base devise :registerable,
:authenticatable,
:recoverable,
:rememberableend
34© Université du Système d’Information
applicationContext-Security.xml
web.xml
Webmvc-config.xml
Views.xml
Login.jspx
Spring Security
Ruby On Rails
![Page 35: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/35.jpg)
![Page 36: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/36.jpg)
JVM
Langage
Communauté
Java est-il mort?
![Page 37: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/37.jpg)
Scala
JRuby
Les langages sur la JVM
Clojure
Haskell
![Page 38: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/38.jpg)
Java 7
Java est-il mort?
![Page 39: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/39.jpg)
Les actions pour demain
• Apprenez le concept de closure
• Etudiez la programmation concurrente par acteurs
• Conservez la plateforme Java (la JVM)
Et pour aller plus loin…
39© Université du Système d’Information
![Page 40: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/40.jpg)
Librairies concurrentes en Scala
![Page 41: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/41.jpg)
Projet web en Ruby on Rails/Grails
![Page 42: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/42.jpg)
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))
}
![Page 43: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/43.jpg)
Merci
Benoît Lafontaine
David Rousselie
Marc Bojoly
![Page 44: L'avenir de Java : Erlang, Haskell ou Ruby](https://reader035.vdocument.in/reader035/viewer/2022081519/55918c911a28abaf2e8b4618/html5/thumbnails/44.jpg)
Liens
• http://stuffthathappens.com/blog/wp-content/uploads/2007/09/gavin_and_obie.png
• http://people.mandriva.com/~prigaux/language-study/diagram-light.png• http://www.thinkgeek.com/gadgets/tools/8b97/• http://www.flickr.com/photos/monkeyiron/367271228/• http://www.flickr.com/photos/tkotam/2262497717/• http://www.flickr.com/photos/jimmiehomeschoolmom/2438124826/ • http://duke.kenai.com/
44© Université du Système d’Information