Your SlideShare is downloading. ×
0
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

L'avenir de Java : Erlang, Haskell ou Ruby

276

Published on

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; …

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.

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
276
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. L’avenir de Java Benoît Lafontaine David Rousselie Marc Bojoly
  • 2. © Université du Système d’Information 3
  • 3. © Université du Système d’Information 4
  • 4. © Université du Système d’Information 5
  • 5. © Université du Système d’Information 6
  • 6. © Université du Système d’Information 7 Java est içi
  • 7. © Université du Système d’Information 8 Java est içi
  • 8. Qu’attendre de cette session ? 9© Université du Système d’Information
  • 9. Quels apports ? 10© Université du Système d’Information
  • 10. Quels impacts ? 11© Université du Système d’Information
  • 11. Quels impacts ? 12© Université du Système d’Information
  • 12. Threads 13© Université du Système d’Information
  • 13. Threads 14© Université du Système d’Information
  • 14. Threads 15© Université du Système d’Information
  • 15. Threads 16© Université du Système d’Information
  • 16. Threads 17© Université du Système d’Information
  • 17. Threads 18© Université du Système d’Information
  • 18. 19© Université du Système d’Information
  • 19. Threads 20
  • 20. Acteurs 21© Université du Système d’Information
  • 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. 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. 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. 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. 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. 27
  • 27. Intérêt de la programmation fonctionnelle 28© Université du Système d’Information … Filtrage par motif (pattern matching) :
  • 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. 30© Université du Système d’Information
  • 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. 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. Productivité et framework Configuration Convention over Configuration
  • 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. JVM Langage Communauté Java est-il mort?
  • 35. Scala JRuby Les langages sur la JVM Clojure Haskell
  • 36. Java est-il mort?
  • 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. Librairies concurrentes en Scala
  • 39. Projet web en Ruby on Rails/Grails
  • 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. Merci Benoît Lafontaine David Rousselie Marc Bojoly
  • 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

×