La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Java EPITECH 2012 sebastien@migniot.com.

Présentations similaires


Présentation au sujet: "Java EPITECH 2012 sebastien@migniot.com."— Transcription de la présentation:

1 Java EPITECH 2012

2 Java 1 - Introduction Rappel : Historique Machine virtuelle
Plateformes et marché Tour de J2SE Tour de J2EE

3 Java 2 - Technique Les API Les librairies Best practices Exemples

4 Java 2 - Technique Les API Les librairies Best practices Exemples

5 Les API Les API que vous utiliserez le plus.
Performantes Collections/JSTL Evidentes Input/Math Riches

6 Les API Collections Input / Output Threading Network Serialization
Reflection XML JDBC ...

7 Les API java.util.Collection http://fr.wikipedia.org/wiki/Collection
D'une manière générale, une collection est un rassemblement d'objets.

8 Collections // 5. Soustraction trajet.removeAll(villesViolentes);
// 1. Un tableau String[] numbers = new String[] { "one", "two", "three", "one" }; // 2. Une liste List<String> list = Arrays.asList(numbers); // 3. Unicité Set<String> set = new HashSet<String>(list); // contient { "one", "two", "three" } // 4. Addition List<City> trajet = new ArrayList<City>(); trajet.addAll(villes1); trajet.addAll(villes2); // 5. Soustraction trajet.removeAll(villesViolentes); // 6. Union Set<City> visitees = new HashSet<City>(); visitees.addAll(villes1); visitees.addAll(villes2); // 7. Intersection Set<City> villesFleuries = new HashSet<City>(Arrays.asList(new City[] { new City("Colmar"), new City("Mulhouse"), new City("Lille") })); visitees.retainAll(villesFleuries); // contient les villes visitees et fleuries

9 Les API java.io Un ruban divisé en cases consécutives – permet l'entrée et la sortie d'information.

10 Input Output FileInputStream input = null; try {
input = new FileInputStream(file); String content = readFile(input); logger.info(content); } finally { if (input != null) { try { input.close(); } catch (IOException ioe) { // Harmless logger.throwing("FooBar", "foo", ioe); logger.fine("Can't close file reader properly"); }

11 Les API java.util.conccurent
De toute évidence, une rupture du continuum espace- temps a produit une nouvelle séquence chrono- évènementielle entraînant l'émergence de cette réalité alternative

12 Conccurence LOGGER .info("Starting Master.run()");
BlockingQueue<Runnable> queue = new LinkedBlockingDeque<Runnable>(); ExecutorService service = new ThreadPoolExecutor(MINIMUM_THREADS, MAXIMUM_THREADS, KEEP_ALIVE, KEEP_ALIVE_UNIT, queue); Map<String, Future<?>> calls = new HashMap<String, Future<?>>(); for (String pack : packs) { calls.put(pack, service.submit(new Slave(pack).getRunnable())); LOGGER.info("Submitted pack = [" + pack + "]"); } LOGGER.info(">> Waiting for pack = [" + pack + "]"); try { calls.get(pack).get(); } catch (InterruptedException e) { LOGGER.severe(e.toString()); } catch (ExecutionException e) { LOGGER.info("<< Waited for pack = [" + pack + "]"); service.shutdown(); LOGGER.info("Done Master.run()");

13 Les API java.net.Socket A socket is an endpoint for communication between two machines. Exemples joints.

14 Les API java.io.ObjectOutputStream
An ObjectOutputStream writes primitive data types and graphs of Java objects to an OutputStream.

15 Les API java.lang.reflect
La classe Class n'a pas de constructeur, mais la JVM n'est qu'un ClassLoader Bootclasspath

16 Les API javax.xml Faites du SAX .. ou du StAX
Troll (wikipedia) Un troll est une action de nature à créer une polémique en provoquant les participants d’un espace de discussion. Le mot désigne également un utilisateur qui a recours à ce type d’action Faites du SAX .. ou du StAX

17 XML InputStream stream = openUrl(source.getUrl());
SAXParser parser = SAXParserFactory.newInstance().newSAXParser(); parser.parse(stream, new DefaultHandler() { private boolean insideItem = false; private boolean captureText = false; private StringBuilder texte = null; private String linkHref = null; private Map<String, String> textes; @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (ITEMS.contains(localName)) { textes = new HashMap<String, String>(); insideItem = true; } if (CAPTURED.contains(localName)) { texte = new StringBuilder(); captureText = true; if ("link".equals(localName)) { linkHref = attributes.getValue("href"); super.startElement(uri, localName, qName, attributes); // …

18 Les API java.sql.Connection PreparedStatement statement = connection
Write once, run anywhere ^^ PreparedStatement statement = connection .prepareStatement("SELECT * FROM PERSON WHERE LASTVIEW < ?"); statement.setDate(1, yesterday); ResultSet result = statement.executeQuery();

19 Java 2 - Technique Les API Les librairies Best practices Exemples

20 Les librairies Les librairies classiques
Juste évidentes Apache commons Les plus utilisées Spring, Hibernate

21 Les librairies Spring Hibernate Apache XStream JUnit AspectJ CGlib

22 Les librairies - Spring
Un conteneur IoC Un encapsulateur Transactionnel Sécurité MVC Vers OSGI .. Partiellement commercial

23 Les librairies - Hibernate
SGBDO Persiste Automatiquement En cycle Transactionnellement Cascading CGlib Vers EJB3 .. Partiellement JBoss

24 Les librairies - Apache
Commons lang Commons IO Commons Configuration Commons Net Struts ..

25 Les librairies - XStream
Simple Résistant A good job ..

26 Les librairies - JUnit Deux fois plus de code ? Troll
Tester ? Non, j'écris tout d'une traite, et parfait ! Métaphore du grimpeur et du python

27 Les librairies - JUnit Coder les yeux fermés Construire des exemples
Documenter les cas non passant L'application a demandé une carte de trop parce que l'utilisateur Joe a triché sur le réseau.

28 Les librairies - AspectJ
Librairie avancée Injection de code Logging Sécurité Transactionnalité Profiling

29 Les librairies - CGlib CGLib, BCEL, ASM Injection de code
Runtime injection Tissage de proxy Persistance Mock

30 Java 2 - Technique Les API Les librairies Best practices Exemples

31 Best practices The cathedral and the bazaar
La roue est inventée Depuis les années 70 Arts martiaux Reproduire avant d'inventer

32 Best practices Javadoc Logging Exceptions JUnit XP, IoC, Concern
Run, Right, Fast, Small Singleton (yuk) Observer Visitor Test driven

33 Best practices - Javadoc
Vous n'utilisez que des librairies connues et bien documentées Faîtes de même Respectez-vous

34 Best practices - Javadoc
70% du code Exemple /** * Stream the proxy response body to the user agent response output stream. * * SubClasses SHOULD override this method both for metadata gathering and * for stream backup. request * The user agent request response * The user agent response An output stream IOException * Upon streaming failure */

35 Best practices - Logging
Plus jamais System.out.println(..) Utiliser logger.info(..) Utiliser [value] et overrider toString(..) /** * Run. * packs * The packs InterruptedException * Upon Thread#sleep(long)} failure */ public void perform() throws InterruptedException { LOGGER.info("Starting Master.perform() for data = [" + data + "]"); new Slave(data).run(); LOGGER.info("Done Master.perform() for data = [" + data + "]"); }

36 Best practices - Exception
Ne pas hésiter à relancer les exceptions A minima, utiliser les finally Un cas non passant = un destinataire Ex: Formattage de nombre « On ne propage pas un bug » try { // At this point, the client ouput stream is opened streamResponse(request, response, proxyRequest, proxyResponse); } finally { // The proxy socket must be closed // The client input stream is closed // The client ouput stream must be closed closeQuietly(response.getOutputStream(), proxyConnection, proxySocket); }

37 Best practices - JUnit Coder les tests avant la méthode
Coder les tests avant la méthode Capitaliser pour durer Un test est un exemple de bonne utilisation de votre code Ex: core.CheckListener .checked(Category, String)

38 Best practices - IoC Renier les Singleton et variables globales
Si MyClass.foo(..) utilise Globals.VAR, Injecter un argument supplémentaire ou Injecter un membre de classe supplémentaire Ex: Les connections SQL et le multi-threading

39 Best practices – Design Patterns
Depuis les années 70, les ordinateurs doublent de vitesse processeur tous les ans, doublent de capacité mémoire, quadruplent de capacité de communication La vitesse des logiciels diminue de moitié tous les ans Ne pas réinventer la roue – ou uniquement après l'avoir apprise

40 Best practices – Design Patterns
Observer : dès qu'on voit le mot clé Listener Ex: Barre de progression

41 Best practices – Design Patterns
Visitor : de multiples explorations

42 Anti-patterns Vous en rencontrerez. Inventoriez-les. Elles vous disent dans quelle direction est l'autre .. la bonne solution.

43 Exemples Conccurency Collections Unit testing Hibernate
Aspect Profiling


Télécharger ppt "Java EPITECH 2012 sebastien@migniot.com."

Présentations similaires


Annonces Google