java 5, un bilan

25
Java 5, un bilan Tareq Abed Rabbo Club Atuge Technologies 5/4/2007

Upload: teejug

Post on 24-Jul-2015

2.777 views

Category:

Technology


2 download

TRANSCRIPT

Java 5,  un bilan

Tareq Abed Rabbo

Club Atuge Technologies

5/4/2007

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!

Thèmes de Java 5

• Faciliter de développement

• Performance

• Monitoring & management

• Desktop

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

Jconsole

Plan

• Java aujourd’hui

• Méta données : les annotations

• Les types énumérés

• JMX

• Les types génériques

• Bilan

Bilan

• Une version majeur

• Un pas dans le bon sens

• Java arrive à maturité