java 5, un bilan
TRANSCRIPT
Plan
• Java aujourd’hui
• Méta données : les annotations
• Les types énumérés
• Les types génériques
• JMX
• Bilan
Java, c’est quoi ?
• Write once, run anywhere
• Omni présent côté serveur
• Ecosystème florissant:– JCP
– Open source
Evolution de Java
Java SE 62006 - Scripting Language - JDBC 4.0 - JAXB 2.0
Java SE 62006 - Scripting Language - JDBC 4.0 - JAXB 2.0JDK 1.0
1996 - Initial release
JDK 1.01996 - Initial release
JDK 1.11997 - Java Beans - JDBC - RMI - Inner classes - AWT
JDK 1.11997 - Java Beans - JDBC - RMI - Inner classes - AWT
J2SE 1.2 1998 - Reflection - JIT compiler - Collections - Swing - strictfp
J2SE 1.2 1998 - Reflection - JIT compiler - Collections - Swing - strictfp
Java SE 5.02004 - Generics - Metadata - Autoboxing - Enumerations - Varargs - Enhanced for loop - Concurrency utils - JMX
J2SE 1.42002 - assert - JAXP - regular expression - NIO
J2SE 1.42002 - assert - JAXP - regular expression - NIO
J2SE 1.32000 - HotSpot JVM - JNDI
J2SE 1.32000 - HotSpot JVM - JNDI
Java SE 72008
Java SE 72008
1995Naissance
de Java!
1995Naissance de Java!
Plan
• Java aujourd’hui
• Méta données : les annotations
• Les types énumérés
• Les types génériques
• JMX
• Bilan
Annotations
• Méta données ajoutées aux
classes, champs, méthodes, packages, …
• Utilisées pour indiquer comment le programme doit être traité
par les outils et frameworks
• Génération de « objets » dérivés:– descripteurs de déploiements
– Fichiers java ou class
Exemple : JAXB 2
@XmlAccessorType(XmlAccessType.FIELD)@XmlRootElement(name = "Address", namespace="http://www.example.com/")public class Address {
@XmlElement(required = true) private String name;
private String city;
<Address>
<name>aaa</name>
<city>bbb</city>
</Address>
Exemple : JPA
@Entitypublic class User {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_id_user") @SequenceGenerator(name = "seq_id_user", sequenceName = "seq_id_user") public Integer getId() { return id; }
Anatomie d’une annotation
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings { String[] value();}
Avantages des annotations
• Permet une programmation déclarative– Facile à modifier
– On dit ce qu’on veut faire et l’outil génère le code
• Facilite la maintenance– Moins de fichiers à maintenir
– L’information est dans un endroit unique
• Adopté par beaucoup de frameworks– JAXB 2
– JPA (Hibernate 3)
– Spring Framework 2
– Junit 4
– …
Remarques
• Avant java 5: annotations ad hoc– Serializable
– @deprecated
• La sur utilisation peut affecter la lisibilité
• Pas approprié pour les paramètres de configuration
Plan
• Java aujourd’hui
• Méta données : les annotations
• Les types énumérés
• Les types génériques
• JMX
• Bilan
Les types énumérés
• Type énuméré : un ensemble défini de valeurs :
jours de la semaine, couleurs, ..
• Avant Java 5 : utilisation de constantes numériques
• Problèmes:– Pas sûr
– Affichage non informatif (des entiers)
Enumération : exemple
public enum Status { success, error, inProgress;}
Status status = …;
switch (status) { case success: break; case error: break; case inProgress: break;}
Plan
• Java aujourd’hui
• Méta données : les annotations
• Les types énumérés
• Les types génériques
• JMX
• Bilan
Les types génériques
• Abstraction permettant de paramétrer une classe, interface
ou méthode Java par un ou plusieurs types.
• Code plus sûr: code compilé avec les generics sans erreurs
ou warnings => pas de ClassCastException à l’exécution.
• Très utile avec les collections
Génériques : Exemple
Vector v = new Vector();v.add(new String("abc"); v.add(new Integer(4));
String s = (String)v.get(1);ClassCastException
Génériques : Exemple
Vector<String> vs = new Vector<String>();vs.add(new String("hello")); vs.add(new Integer(5)); // Erreur de compilation!
String s = vs.get(0); // Pas de casting
Plan
• Java aujourd’hui
• Méta données : les annotations
• Les types énumérés
• Les types génériques
• JMX
• Bilan
JMX
• Java Management Extensions
• Management:– Modifier la configuration
– Déclencher des actions
• Monitoring:– Statistiques
– Notifications d’erreurs
JMX et Java 5
• Java 5 inclut JMX
• Monitoring du JVM via JMX:– Utilisation mémoire
– Activités threads
– Garbage Collector
• Jconsole : client JMX standard
Plan
• Java aujourd’hui
• Méta données : les annotations
• Les types énumérés
• JMX
• Les types génériques
• Bilan