Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.