L’avenir de Java
Benoît Lafontaine
David Rousselie
Marc Bojoly
© Université du Système d’Information
3
© Université du Système d’Information
4
© Université du Système d’Information
5
© Université du Système d’Information
6
© Université du Système d’Information
7
Java
est içi
© Université du Système d’Information
8
Java
est içi
Qu’attendre de cette session ?
9© Université du Système d’Information
Quels apports ?
10© Université du Système d’Information
Quels impacts ?
11© Université du Système d’Information
Quels impacts ?
12© Université du Système d’Information
Threads
13© Université du Système d’Information
Threads
14© Université du Système d’Information
Threads
15© Université du Système d’Information
Threads
16© Université du Système d’Information
Threads
17© Université du Système d’Information
Threads
18© Université du Système d’Information
19© Université du Système d’Information
Threads
20
Acteurs
21© Université du Système d’Information
Intérêt de la programmation fonctionnelle
22© Université du Système d’Information
Programmation objet
Chaque méthode modif...
Intérêt de la programmation fonctionnelle
23© Université du Système d’Information
La fonction map(x -> 2*x) prend donne
Pr...
Intérêt de la programmation fonctionnelle
24© Université du Système d’Information
Appliquer Sur
Programmation objet
Progra...
Intérêt de la programmation fonctionnelle
25© Université du Système d’Information
Appliquer Sur
Programmation objet
Progra...
reduce (x y -> x+y) 0 (map (x -> 2*x) [1,2,3]
Intérêt de la programmation fonctionnelle
class MyList extends ArrayList<Int...
27
Intérêt de la programmation fonctionnelle
28© Université du Système d’Information …
Filtrage par motif (pattern matching) :
addMouseListener(new MouseListener() {
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {...
30© Université du Système d’Information
public List<Client> findByNameAndBirthday(String name, Date birthday) {
Session session = sessionFactory.openSession();
Qu...
public List<Client> findByNameAndBirthday(String name, Date birthday) {
Session session = sessionFactory.openSession();
Qu...
Productivité et framework
Configuration Convention over Configuration
Productivité et framework
class User < ActiveRecord::Base
devise :registerable,
:authenticatable,
:recoverable,
:remembera...
JVM
Langage
Communauté
Java est-il mort?
Scala
JRuby
Les langages sur la JVM
Clojure
Haskell
Java est-il mort?
Les actions pour demain
• Apprenez le concept de closure
• Etudiez la programmation concurrente par acteurs
• Conservez la...
Librairies concurrentes en Scala
Projet web en Ruby on Rails/Grails
Pour aller plus loin utilisez un autre langage
DSL métier en Groovy/Scala
val portfolio = List[Order] {
new Order buy (100...
Merci
Benoît Lafontaine
David Rousselie
Marc Bojoly
Liens
• http://stuffthathappens.com/blog/wp-
content/uploads/2007/09/gavin_and_obie.png
• http://people.mandriva.com/~prig...
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
Prochain SlideShare
Chargement dans…5
×

L'avenir de Java : Erlang, Haskell ou Ruby

761 vues

Publié le

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.

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
761
Sur SlideShare
0
Issues des intégrations
0
Intégrations
8
Actions
Partages
0
Téléchargements
3
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

L'avenir de Java : Erlang, Haskell ou Ruby

  1. 1. L’avenir de Java Benoît Lafontaine David Rousselie Marc Bojoly
  2. 2. © Université du Système d’Information 3
  3. 3. © Université du Système d’Information 4
  4. 4. © Université du Système d’Information 5
  5. 5. © Université du Système d’Information 6
  6. 6. © Université du Système d’Information 7 Java est içi
  7. 7. © Université du Système d’Information 8 Java est içi
  8. 8. Qu’attendre de cette session ? 9© Université du Système d’Information
  9. 9. Quels apports ? 10© Université du Système d’Information
  10. 10. Quels impacts ? 11© Université du Système d’Information
  11. 11. Quels impacts ? 12© Université du Système d’Information
  12. 12. Threads 13© Université du Système d’Information
  13. 13. Threads 14© Université du Système d’Information
  14. 14. Threads 15© Université du Système d’Information
  15. 15. Threads 16© Université du Système d’Information
  16. 16. Threads 17© Université du Système d’Information
  17. 17. Threads 18© Université du Système d’Information
  18. 18. 19© Université du Système d’Information
  19. 19. Threads 20
  20. 20. Acteurs 21© Université du Système d’Information
  21. 21. Intérêt de la programmation fonctionnelle 22© Université du Système d’Information Programmation objet Chaque méthode modifie l’état existant
  22. 22. 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
  23. 23. Intérêt de la programmation fonctionnelle 24© Université du Système d’Information Appliquer Sur Programmation objet Programmation fonctionnelle Patron de méthode
  24. 24. 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
  25. 25. 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
  26. 26. 27
  27. 27. Intérêt de la programmation fonctionnelle 28© Université du Système d’Information … Filtrage par motif (pattern matching) :
  28. 28. 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
  29. 29. 30© Université du Système d’Information
  30. 30. 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
  31. 31. 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);
  32. 32. Productivité et framework Configuration Convention over Configuration
  33. 33. Productivité et framework class User < ActiveRecord::Base devise :registerable, :authenticatable, :recoverable, :rememberable end 34© Université du Système d’Information applicationContext-Security.xml web.xml Webmvc-config.xml Views.xml Login.jspx Spring Security Ruby On Rails
  34. 34. JVM Langage Communauté Java est-il mort?
  35. 35. Scala JRuby Les langages sur la JVM Clojure Haskell
  36. 36. Java est-il mort?
  37. 37. 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
  38. 38. Librairies concurrentes en Scala
  39. 39. Projet web en Ruby on Rails/Grails
  40. 40. 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)) }
  41. 41. Merci Benoît Lafontaine David Rousselie Marc Bojoly
  42. 42. 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

×