SlideShare una empresa de Scribd logo
1 de 44
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 modifie
l’état existant
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
Intérêt de la programmation fonctionnelle
24© Université du Système d’Information
Appliquer Sur
Programmation objet
Programmation fonctionnelle
Patron de méthode
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
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
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) {}
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
30© Université du Système d’Information
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
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);
Productivité et framework
Configuration Convention over Configuration
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
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 plateforme Java (la JVM)
Et pour aller plus loin…
39© Université du Système d’Information
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 callOn "GLE" withStrike(30 euros)),
new Order sell (15 putOn "CS" withStrike(20 euros))
}
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/~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

Más contenido relacionado

Destacado

PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
mjcf
 
Guide technique fiap 2012
Guide technique fiap 2012Guide technique fiap 2012
Guide technique fiap 2012
delchloe
 
Magnifiques créations en bois
Magnifiques créations en boisMagnifiques créations en bois
Magnifiques créations en bois
Saqqarah 31
 
Cours tp3 eculture2012
Cours tp3 eculture2012Cours tp3 eculture2012
Cours tp3 eculture2012
luctrouche
 
Lire en vendée 25 novembre2012
Lire en vendée 25 novembre2012Lire en vendée 25 novembre2012
Lire en vendée 25 novembre2012
ecrivains-vendee
 

Destacado (19)

¿Qué podemos aprender de amazon.com? por Gabriela Roncal
¿Qué podemos aprender de amazon.com? por Gabriela Roncal¿Qué podemos aprender de amazon.com? por Gabriela Roncal
¿Qué podemos aprender de amazon.com? por Gabriela Roncal
 
Para publicar
Para publicarPara publicar
Para publicar
 
Bieres
BieresBieres
Bieres
 
Petiterigolade
PetiterigoladePetiterigolade
Petiterigolade
 
Grabado En Piedra
Grabado En PiedraGrabado En Piedra
Grabado En Piedra
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
Utiliser les média sociaux pour faire des prévisions économiques, de la veill...
Utiliser les média sociaux pour faire des prévisions économiques, de la veill...Utiliser les média sociaux pour faire des prévisions économiques, de la veill...
Utiliser les média sociaux pour faire des prévisions économiques, de la veill...
 
Guide technique fiap 2012
Guide technique fiap 2012Guide technique fiap 2012
Guide technique fiap 2012
 
Magnifiques créations en bois
Magnifiques créations en boisMagnifiques créations en bois
Magnifiques créations en bois
 
Cocido andaluz 2012
Cocido andaluz 2012Cocido andaluz 2012
Cocido andaluz 2012
 
Microsoft Advertising - Creative Solutions
Microsoft Advertising - Creative SolutionsMicrosoft Advertising - Creative Solutions
Microsoft Advertising - Creative Solutions
 
Journée portes ouvertes prépa 2015 moun prépa
Journée portes ouvertes prépa 2015 moun prépaJournée portes ouvertes prépa 2015 moun prépa
Journée portes ouvertes prépa 2015 moun prépa
 
Garva Fotos Incakola Paraiso
Garva   Fotos Incakola   ParaisoGarva   Fotos Incakola   Paraiso
Garva Fotos Incakola Paraiso
 
Cartadeunbebe
CartadeunbebeCartadeunbebe
Cartadeunbebe
 
Cours tp3 eculture2012
Cours tp3 eculture2012Cours tp3 eculture2012
Cours tp3 eculture2012
 
Trigonometría - Semana 8 - AD09
Trigonometría - Semana 8 - AD09Trigonometría - Semana 8 - AD09
Trigonometría - Semana 8 - AD09
 
Lire en vendée 25 novembre2012
Lire en vendée 25 novembre2012Lire en vendée 25 novembre2012
Lire en vendée 25 novembre2012
 
Hoax - Trucs pour mobiles
Hoax - Trucs pour mobilesHoax - Trucs pour mobiles
Hoax - Trucs pour mobiles
 
Présentation du curriculum de Joël Chavas (français)
Présentation du curriculum de Joël Chavas (français)Présentation du curriculum de Joël Chavas (français)
Présentation du curriculum de Joël Chavas (français)
 

Similar a L'avenir de Java : Erlang, Haskell ou Ruby

201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8
lyonjug
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
Steve Tremblay
 

Similar a L'avenir de Java : Erlang, Haskell ou Ruby (20)

Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
 
Applications Android - cours 6 : Structure d’un projet Android
Applications Android - cours 6 :  Structure d’un projet AndroidApplications Android - cours 6 :  Structure d’un projet Android
Applications Android - cours 6 : Structure d’un projet Android
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Applications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLiteApplications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLite
 
Projet carrière chelsea comeau
Projet carrière  chelsea comeauProjet carrière  chelsea comeau
Projet carrière chelsea comeau
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web services
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
PFE PPT2
PFE PPT2PFE PPT2
PFE PPT2
 
JavaSwing.pdf
JavaSwing.pdfJavaSwing.pdf
JavaSwing.pdf
 
Le Guide de Développement pour Android
Le Guide de Développement pour AndroidLe Guide de Développement pour Android
Le Guide de Développement pour Android
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Test logiciel
Test logicielTest logiciel
Test logiciel
 
Cours1.pptx
Cours1.pptxCours1.pptx
Cours1.pptx
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
 

Más de Marc Bojoly

Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
Marc Bojoly
 

Más de Marc Bojoly (10)

Restructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoiRestructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoi
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un si
 
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataPetit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
 
Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?
 
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Performance ug#2 hands-on lab
Performance ug#2 hands-on labPerformance ug#2 hands-on lab
Performance ug#2 hands-on lab
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
 

L'avenir de Java : Erlang, Haskell ou Ruby