A LA DÉCOUVERTE DE JAVA
javaOOP.fr
javaOOP.fr
SOMMAIRE
• Introduction
• Qu'est-ce qu'un langage ?
• Question de popularité
• Invention de Java
• JRE, JDK ou ...
javaOOP.fr
QUESTION DE POPULARITÉ 1/3
3
Calcul effectué à partir du nombre de recherches de
divers moteurs de recherches(G...
javaOOP.fr
QUESTION DE POPULARITÉ 2/3
4
Analyse par popularité sur GitHub et StackOverflow
http://redmonk.com/sogrady/2014...
javaOOP.fr
QUESTION DE POPULARITÉ 3/3 (2014)
1. Java
2. C
3. C++
4. C# (.NET)
5. Objective-C (Apple)
6. PHP
7. Python
8. R...
javaOOP.fr
INVENTION DE JAVA
•A Sun Microsystems, James Gosling, Mike Sheridan, et Patrick Naughton
initient la création d...
javaOOP.fr
23 MARS 1995 – AVIS DE NAISSANCE
7
http://web.archive.org/web/20070119042830/http://java.sun.com/features/1998/...
javaOOP.fr
JAVA SOUS TOUTES SES FORMES
• Ligne de commande, application complète sur le poste client, architecture client ...
javaOOP.fr
Java SE : Java Standard Edition => implémenté par deux produits Oracle le JDK pour les
développeurs et le JRE p...
javaOOP.fr
3 « SAVEURS » PRINCIPALES DE JAVA
•Java SE: Java Standard Edition (anciennement J2SE) contient le JDK (java
Dev...
javaOOP.fr
HISTORIQUE DES VERSIONS
• JDK Alpha et Beta: 1995 premières versions publiques, instables
• JDK 1.0 : 23 janvie...
javaOOP.fr
LA MASCOTTE, DUKE
• Crée par Joe Palrang (qui travaillera plus tard sur Shrek).
• Apparait pour la première foi...
javaOOP.fr
ET ORACLE RACHETA SUN…
• 13 novembre 2006, Java est sous licence libre GNU GPL (logiciel libre)
• 2007 : Java d...
javaOOP.fr14
PROCESSUS D’ÉVOLUTION DU LANGAGE
•JCP: Java Community Process, créé par Sun en 1998 pour coordonner l’évoluti...
javaOOP.fr
SOMMAIRE
• Introduction
• Au cœur de Java et de la POO
• Compilé vs Interprété
• Java Virtual Machine
• POO: Hé...
javaOOP.fr
COMPILÉ VS INTERPRÉTÉ
16
Compilé
•La compilation c’est traduire un code par un programme
annexe appelé compilat...
javaOOP.fr
JAVA COMPILÉ ET INTERPRÉTÉ
17
HelloWorld.java
HelloWorld.class
javac HelloWorld.java
COMPILATION
Bytecode
JVM p...
javaOOP.fr
JAVA VIRTUAL MACHINE
•JVM = Java Virtual Machine, est donc comme son nom l’indique une « machine virtuelle » ou...
javaOOP.fr
POO
Un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne...
javaOOP.fr
CONCEPTS CLÉS POO
• Héritage => transfère le savoir à « ses filles ».
• Encapsulation => protège l’intégrité de...
javaOOP.fr
POO - HÉRITAGE
• Permet la réutilisabilité et le polymorphisme.
• Les « filles » (sous-classes) héritent des ca...
javaOOP.fr
POO - ENCAPSULATION
22
Encapsulation
Encapsulation: les attributs (déclarés private) ne sont accessibles que vi...
javaOOP.fr
ABSTRACTION 1/2
•Une classe abstraite n’est pas instanciable mais on peut en hériter.
•Elle est définie par l’e...
javaOOP.fr
POO – ABSTRACTION 2/2
24
javaOOP.fr
POO - POLYMORPHISME
•Du grec signifiant « plusieurs formes »
•Un même bout de code correspond à l’exécution du ...
javaOOP.fr
INSTALLER JAVA
26
•Télécharger le JDK sur http://www.oracle.com/technetwork/java/javaee/overview/index.html
•Co...
javaOOP.fr
IDE: ENVIRONNEMENT DE DÉVELOPPEMENT INTÉGRÉ
27
•IDE: Integrated Development Environment (environnement de dével...
javaOOP.fr
JUNIT 4
•Framework de tests unitaires
• Ecriture de tests pour tester le contrat d’interface d’une classe (anno...
javaOOP.fr
TDD: TEST DRIVEN DEVELOPMENT
Le Test Driven Development (TDD) ou développement piloté par les tests est une tec...
javaOOP.fr
GESTION DE VERSIONS
30 No.
Problème : chaque développeur écrit sur son propre poste
Solution: Logiciels de cont...
javaOOP.fr
OUTILS DE BUILD
31
Un outil de build automatise les fonctions répétitives du développement: la compilation, la ...
javaOOP.fr
PACKAGING/LIVRABLE
32
•JAR = Java ARchive => fichier zip (ouvrable par 7-zip ou winzip). Il contient des classe...
javaOOP.fr
APPLETS JAVA
•Introduite dès la première version du langage en 95. Une applet java s’exécute dans un navigateur...
javaOOP.fr
JAVA WEB START 1/2
-Java Web Start permet de lancer une application java directement depuis le web, d’un seul c...
javaOOP.fr
JAVA WEB START 2/2
35
•La gestion des applets et applications java web start se fait dans panneau de configurat...
javaOOP.fr
INTÉGRATION CONTINUE 1/2
36
Ensemble de pratiques consistant à vérifier de façon automatique à chaque modificat...
javaOOP.fr
INTÉGRATION CONTINUE 2/2
37
Site démo: http://nemo.sonarqube.org
http://zeroturnaround.com/rebellabs/d
eveloper...
javaOOP.fr
JAVADOC 1/3
•Outil permettant de générer une documentation html de l’API à partir des commentaires présents dan...
javaOOP.fr
JAVADOC 2/3
39
Génération en ligne de commande:
javadoc -d homehtml -sourcepath
homesrc -subpackages java -excl...
javaOOP.fr
JAVADOC 3/3
40
https://www.java.net/pub/pq/65
http://stackoverflow.com/questions/184618/what-is-the-best-
comme...
javaOOP.fr
SOMMAIRE
• Introduction
• Au cœur de Java et de la POO
• Conclusion
• Java vs Javascript
• Java vs .NET
• TOY
•...
javaOOP.fr
JAVASCRIPT ET JAVA : RIEN À VOIR !
42
•Java a été créé par Sun Microsystems.
•Java permet de créer des Applets,...
javaOOP.fr
JAVA VERSUS .NET
43
JAVA
•Produit d’Oracle
•Open source
•Gratuit
•Multi plateforme
•IDE: Eclipse, NetBeans..
•A...
javaOOP.fr
LE FUTUR DE JAVA ?
•Reste le langage de programmation le plus populaire, la tendance TIOBE
est relativement con...
javaOOP.fr
RESTEZ DANS LA BOUCLE !
•Le site web: https://home.java.net/
• Le site web @Oracle: http://www.oracle.com/techn...
javaOOP.fr
POUR LES UTILISATEURS…
•JUG: Java User Groups, groupe d’utilisateurs java se rassemblant pour partager leurs co...
javaOOP.fr
DES QUESTIONS ?
47
Prochain SlideShare
Chargement dans…5
×

Javaoop

293 vues

Publié le

Présentation java

Publié dans : Internet
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
293
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
11
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Pôle de compétence Java
    Introduction à java
    Donner une culture générale autour de java
    Donner un vocabulaire, des connaissances pour échanger avec experts et développeurs
    Donner les clés pour gérer un projet java
  • - Comment estimer la popularité d’un langage ? Différentes méthodes, par recherches sous google, par offres d’emploi, par questions sur les forums, par projets sous GitHub…
    TIOBE ="The Importance Of Being Earnest” compagnie validant la qualité des logiciels
    - 2004 => changement de méthode ranking de google, par la suite TIOBE ajoute MSN et yahoo dans ces calculs
    - Java toujours numéro 1, en concurrence avec C mais ce n’est pas la même catégorie de programmation (C est plus bas niveau: c’est pour les softwares systèmes: OS, BIOS, firmware, drivers…)
    - Stabilisation de la plateforme Microsoft.Net (c#) sur les 2 dernières années, en dessous de Java
    Montée d’Objective-C (apple, iphone)

    Un fabricant d'équipement d'origine (FEO, ou en anglais OEM, Original Equipment Manufacturer) est, dans l'industrie automobile, aéronautique, informatique ou électronique, un fabricant de pièces détachées.
  • Github: service d’hébergement et de gestion de projets (compte gratuit pour les logiciels libres)
    http://stackoverflow.com/: forum pour développeurs
  • En synthèse, voici la liste des gagnants 2014, à réactualiser en 2015
  • Star 7 => sous Unix et Java
    The device was called *7 ("StarSeven"), named after an "answer your phone from any extension" feature of the phone system in the Green Team office. 
    PDA: Personal Digital Assistant 
    => malheureusement, les câblo-opérateurs en était encore à leurs débuts et à la recherche d’un modèle économique viable, le projet était trop en avance sur son temps, redirection du projet vers Internet
    3 finalistes: Java, DNA, Silk
  • Hotjava navigateur web développé en java par sun, lancé en 95 en même temps que java pour démontrer ses capacités, abandonné en 99.
  • The JDK forms an extended subset of a software development kit (SDK). It includes "tools for developing, debugging, and monitoring Java applications".[5] Oracle strongly suggests that they now use the term "JDK" to refer to the Java SE Development Kit. The Java EE SDK is available with or without the "JDK", by which they specifically mean the Java SE 7 JDK.
  • Fonctionnement par update: exemple Version 7 Update 67
    Java SE 8u20


  • - Inquiétudes autour d’une grande compagnie possédant un produit open source, qui plus est utilisé par ses concurrents.
    Quelques bourdes autour de Java 7, première release java après le rachat, des problèmes de sécurité qui ternissent son image public, un ralentissement des sorties de version et notamment java 8 longuement repoussé le temps de corriger ces failles.
    Des rumeurs d’une « premium JVM », mais apparemment fausse rumeur: https://blogs.oracle.com/theaquarium/entry/the_story_of_a_tweet , mais cela accentue la méfiance des développeurs.
    Grosse bourde en poursuivant Android
    Mais potentiellement, Oracle a l’appui monétaire pour investir dans l’avenir de Java
    Démission de Gosling 3 mois après le rachat : http://nighthacks.com/roller/jag/entry/time_to_move_on
    http://www.youtube.com/watch?v=E3418SeWZfQ&list=UU1s3pFsMZv37NAxIIW90MGw 
  • Système hérité de l’époque de Sun, évite qu’Oracle soit le seul a avoir le contrôle de Java.
    Ce processus de JCP est lui-même défini dans un JSR.
  • La JVM Dalvik était d’ailleurs l’angle d’attaque d’Oracle dans ses poursuites juridiques pour violation de brevets contre Google (qu’Oracle a perdu).

    Citation: James Gosling
    Most people talk about Java the language, and this may sound odd coming from me, but I could hardly care less. 
    What I really care about is the Java Virtual Machine as a concept, because that is the thing that ties it all together; it's the thing that makes Java the language possible; it's the thing that makes things work on all kinds of different platforms; and it makes all kinds of languages able to coexist.
    http://www.theserverside.com/news/2240037412/James-Gosling-Says-He-Doesnt-Care-About-Java

  • Analogie:
    Public => Le numéro de téléphone est dans les pages jaunes
    Protected => Le numéro de téléphone est sur liste rouge
    Private => Pas de téléphone

    Redéfinition de getTVA
    Enrichissement en ajoutant la méthode setAntivolNumber
    netPrice est private dans la classe mère et ne peut donc être accédé directement, on passe par getNetPrice (encapsulation
  • Egalement attirer l’attention sur l’annotation @Override
    Une annotation permet d’ajouter des méta-données (donnée servant à décrire ou définir une autre donnée) au code, soit à titre purement informatif, (exemple @Deprecated), soit pour le lier à une code utilisé soit à la compilation, soit à l’exécution (ex Hibernate, RESTful Web Service
  • Très brève explication des interfaces, ce n’est pas le sujet.
  • Java pourrait être écrit dans un notepad mais grosse baisse de productivité…
  • Fait partie des pratiques agiles.
  • Avec ou sans verrou
    Avec verrou => Le contrôle de concurrence pessimiste, tend à disparaitre => verrouiller-modifier-déverrouiller
    Sans verrou => Le contrôle de concurrence optimiste => copier-modifier-fusionner

    Les plus populaires sont: subversion et git
    http://zeroturnaround.com/rebellabs/developer-productivity-report-2013-how-engineering-tools-practices-impact-software-quality-delivery/10/
  • Ant: robuste, flexible, bien connu des développeurs, simple à prendre en main
    Maven: pas flexible, complexe à prendre en main, à utiliser pour les gros projets avec de nombreuses dépendances et des développeurs maîtrisant déjà maven
  • La majorité des applications web sont livrés sous forme fichier war.
  • Les applets Java sont la plupart du temps écrites en langage Java, mais elles peuvent également être écrites dans n'importe quel langage qui se compile en bytecode, comme Jython, Groovy ou encore Scala.
  • Débat sur l’utilité de la javadoc si mal faite => copier/coller abusifs, non mise à jour au fil du temps, le strict minimum dans le javadoc (param, return) qui n’apporte rien à la compréhension, rend plus difficile le refactoring automatique puisqu’il faut aussi mettre à jour la javadoc etc.
    Egalement le piège est de trop en mettre dans la javadoc, en faire une annexe des SFD rend la mise à jour de la javadoc difficile au fil du temps et quand les SFD évoluent.
    On peut intégrer des outils d’analyse de la javadoc à l’intégration continue.
  • Javaoop

    1. 1. A LA DÉCOUVERTE DE JAVA javaOOP.fr
    2. 2. javaOOP.fr SOMMAIRE • Introduction • Qu'est-ce qu'un langage ? • Question de popularité • Invention de Java • JRE, JDK ou Java SE ? • Historique des versions • Java 8 • Duke • Et Oracle racheta Sun • Processus d'évolution du langage • Au cœur de Java et de la POO • Conclusion 2
    3. 3. javaOOP.fr QUESTION DE POPULARITÉ 1/3 3 Calcul effectué à partir du nombre de recherches de divers moteurs de recherches(Google, MSN…): http://en.wikipedia.org/wiki/Tiobe_index http://www.java.com/fr/about/ Calcul effectué sur le nombre d’offre d’emploi sur Twitter http://www.sitepoint.com/best-programming- language-learn-2014/
    4. 4. javaOOP.fr QUESTION DE POPULARITÉ 2/3 4 Analyse par popularité sur GitHub et StackOverflow http://redmonk.com/sogrady/2014/01/22/language-rankings-1-14/
    5. 5. javaOOP.fr QUESTION DE POPULARITÉ 3/3 (2014) 1. Java 2. C 3. C++ 4. C# (.NET) 5. Objective-C (Apple) 6. PHP 7. Python 8. Ruby 9. Javascript 10. SQL 5
    6. 6. javaOOP.fr INVENTION DE JAVA •A Sun Microsystems, James Gosling, Mike Sheridan, et Patrick Naughton initient la création du langage Oak (d’un chêne devant leurs bureaux ?) en 1991,c’est le Green Project. Objectif initial du langage, le proposer aux câblo-opérateurs Améridains qui pourront déployer leurs applications sur les nombreux modèles de décoleurs équipant leurs clients. Première démo en 92 avec un pda nommé Star7, vidéo à ne pas manquer ! => http://www.youtube.com/watch?v=1CsTH9S79qI L’idée était de créer un langage plateforme indépendant paliant les déficiances du C++. Write Once, Run Anywhere (WORA) [ => Write Once, Debug Everywhere (WODE)] • Oak étant déjà une marque déposée, le langage est baptisé Java à l’issue d’une réunion de brainstorming pour trouver un terme évoquant les idées clés: dynamique, vivant, révolutionnaire, électrochoc… Et l’un des participants qui buvait du café proposa entre autres Java (en argot anglais: jus, café). http://www.javaworld.com/article/2077265/core-java/so-why-did-they-decide-to-call-it-java-.html • Leur idée de génie fut d’associer Java à l’émergence du Web, notamment avec les applets. Java est incorporé dès ses débuts à Netscape. http://oracle.com.edgesuite.net/timeline/java/ 6 Green team
    7. 7. javaOOP.fr 23 MARS 1995 – AVIS DE NAISSANCE 7 http://web.archive.org/web/20070119042830/http://java.sun.com/features/1998/05/birthday.html « Ce que ces types font est indéniablement, absolument nouveau. C'est un super truc… Ces types repoussent vraiment les limites. » Marc Andreesen (co-fondateur de Netscape)
    8. 8. javaOOP.fr JAVA SOUS TOUTES SES FORMES • Ligne de commande, application complète sur le poste client, architecture client serveur, mobile (Android, Java ME), périphériques intégrés (lecteurs Blu-ray, imprimantes…), carte à puce… 8
    9. 9. javaOOP.fr Java SE : Java Standard Edition => implémenté par deux produits Oracle le JDK pour les développeurs et le JRE pour tous les autres utilisateurs • JRE: Java SE Runtime Environment (contient Java SE API ( Application Programming Interface: librairies java) + Outils de déploiements (Applet et Java Web Start) et JVM) • Server JRE (outils de monitoring JVM, pas d’intégration browser) • JRE pour les utilisateurs (intégration browser) • JDK: Java Development Kit (contient le JRE, le langage Java et également tous les outils de développement (compilation etc.)) => pour les développeurs uniquement 9 JRE, JDK OU JAVA SE ? http://docs.oracle.com/javase/7/docs/index.html
    10. 10. javaOOP.fr 3 « SAVEURS » PRINCIPALES DE JAVA •Java SE: Java Standard Edition (anciennement J2SE) contient le JDK (java Development Kit –> Java SE API, JVM (Java Virtual Machine) et outils de développement) => applications java s’exécutant sur le poste client •Java EE: Java Enterprise Edition (anciennement J2EE), extension de Java SE pour les entreprises afin de développer des applications multi-tiers solides dans un environnement réseau. Java EE repose sur Java SE mais en plus permet la gestion de serveurs d'applications (Servlet, JSP, JSF, JSTL, JavaMail, JNDI…) et contient Glassfish un serveur d’application Open Source => applications web (client-serveur) •Java ME: Java Platform Micro Edition pour les applications embarquées et mobiles Mais aussi •Java Embedded: • Java SE Embedded pour les systèmes à au moins 32 MB de RAM, Java ME Embedded pour au moins 8 MB de RAM => blu ray, imprimantes… • Java TV (repose sur Java ME, applications java pour la TV, ex VOD, jeux, réseaux sociaux…) • Java Card pour les cartes à puces, c’est la plus minuscule des plateformes java existantes… 10
    11. 11. javaOOP.fr HISTORIQUE DES VERSIONS • JDK Alpha et Beta: 1995 premières versions publiques, instables • JDK 1.0 : 23 janvier 1996 Oak - Version initiale stable • JDK 1.1 : 1997 classes internes, jdbc, reflection… Java est renommé Java 2 pour marquer l’évolution majeur du langage et les versions sont nommées J2SE pour distinguer J2EE et J2ME • J2SE 1.2 : 1998, Playground : Swing, compilateur JIT, collections => 1500 classes • J2SE 1.3 : 2000, Kestrel : Grandes améliorations de performances • J2SE 1.4 : 2002, Merlin : Expression régulières, JAXP, API de Logging, Java Web Start… => 2700 classes La version 1.5 est renommée 5.0 pour marquer l’évolution majeur du langage. • J2SE 5.0 : 2004, Tiger : Grandes améliorations du langage (boucle foreach, génériques, …) => 3300 classes J2SE devient Java SE, le .0 de la version mineure est abandonnée. • Java SE 6 : 2006, Mustang : améliorations de performances, JDBC 4.0, JAX-WS… => 3500 classes • Java SE 7 : 2011, Dolphin : diverses améliorations. => 7400 classes • Java SE 8 : 2014 Lambda et API Stream => 7700 classes , en attente de soritie pour Java EE8 • Java SE 9 : 2016 ? http://fr.wikipedia.org/wiki/Java_(langage)#Historique_des_versions 11 http://upload.wikimedia.org/wikibooks/en/b/b8/Java_Development_Path.svg
    12. 12. javaOOP.fr LA MASCOTTE, DUKE • Crée par Joe Palrang (qui travaillera plus tard sur Shrek). • Apparait pour la première fois sur le Star7. • Une nouvelle personnalité chaque année https://blogs.oracle.com/java/entry/new_duke_personality_scientist_duke https://duke.kenai.com/ 12 2013 – Scientist Duke2012 – Adventure Duke2011 – Future Tech Duke 2014 – Manifest the Future
    13. 13. javaOOP.fr ET ORACLE RACHETA SUN… • 13 novembre 2006, Java est sous licence libre GNU GPL (logiciel libre) • 2007 : Java devient Open Source • 27 Janvier 2010: Oracle rachète Sun Microsystems, une bonne ou une mauvaise nouvelle pour l’avenir de Java ? • Question d’argent: Java est gratuit mais le support est payant pour rester averti des failles de sécurité, (alternative à l’achat de la licence, bien penser à mettre sa version de java à jour 1 fois par an), également des outils d’analyse de performance avancés payants (JRockit Mission Control), les certifications payantes… • http://www.oracle.com/us/technologies/java/standard-edition/support/overview/index.html http://en.wikipedia.org/wiki/Sun_acquisition_by_Oracle http://www.javaworld.com/article/2078033/spring-framework/oracle-sun--the-end-of-java-as-we-know-it-.html http://blogs.enterprisedb.com/2011/03/03/survey-reveals-oracle-is-bad-for-java-and-mysql/ 13
    14. 14. javaOOP.fr14 PROCESSUS D’ÉVOLUTION DU LANGAGE •JCP: Java Community Process, créé par Sun en 1998 pour coordonner l’évolution du langage Java et des technologies associées. Il émet des JSR. •JSR: Java Specification Request, décrit des spécifications d’un ajout à la plateforme java. Etapes: Initialisation, ébauche préliminaire, release finale, maintenance. Des revues sont menées puis est votée (ou non) par l’executive committe du JCP. Il existe actuellement 350 JSR. https://www.jcp.org/en/jsr/all •EC: Executive committee: groupe de membres guidant l’évolution de la technologie java (Eclipse Foundation, Fujitusu Limited, Credit Suisse, Nokia, Oracle, Red Hat Middleware, SAP…) https://jcp.org/ja/participation/committee https://blogs.oracle.com/darcy/entry/pictorial_jcp
    15. 15. javaOOP.fr SOMMAIRE • Introduction • Au cœur de Java et de la POO • Compilé vs Interprété • Java Virtual Machine • POO: Héritage, Encapsulation, Abstraction et Polymorphisme • Installer une environnement de développement • Tests Unitaires: JUnit 4, TDD • Gestion de versions, outils de build et packaging • Applets, Java Web Start • Intégration continue • Javadoc • Java Avancé • Conclusion 15
    16. 16. javaOOP.fr COMPILÉ VS INTERPRÉTÉ 16 Compilé •La compilation c’est traduire un code par un programme annexe appelé compilateur afin de générer un nouveau fichier autonome, c’est-à-dire qui n’a plus besoin d’un programme autre que lui pour s’exécuter, il devient exécutable. Avantages • Pas besoin de programme annexe pour s’exécuter une fois compilé. •Plus rapide à l’exécution. •Meilleur sécurité du code (code compilé difficilement lisible, peut même être « obfusqué »). Inconvénients •Moins souple à la modification (à chaque fois il faut recompiler) •N’est pas plateforme indépendant (faire une compilation pour chaque plateforme). Interprété •Rendu « intelligible » au processeur par le biais d’un programme auxiliaire (l’interpréteur) traduisant au fur et à mesure les instructions du programme. Avantages •Un programme interprété peut même se modifier lui- même et se réécrire dans sa phase d’exécution. •Plateforme indépendant. Inconvénients •Plus lent à l’exécution (l’interprétation à l’exécution ralentit le programme). Hybride => compilé et interprété •Plateforme indépendant •Rapide à l’exécution
    17. 17. javaOOP.fr JAVA COMPILÉ ET INTERPRÉTÉ 17 HelloWorld.java HelloWorld.class javac HelloWorld.java COMPILATION Bytecode JVM pour windows JVM pour Linux INTERPRETE java HelloWorld public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World! I am new to Java."); } } 0: iconst_2 1: istore_1 2: iload_1 3: sipush 1000 6: if_icmpge 44 9: iconst_2 10: istore_2 Write Once, Run Anywhere (WORA) => Write Once, Debug Everywhere (WODE)
    18. 18. javaOOP.fr JAVA VIRTUAL MACHINE •JVM = Java Virtual Machine, est donc comme son nom l’indique une « machine virtuelle » ou l’illusion d’une appareil informatique créée par un logiciel d’émulation. Il exécute des programmes compilés sous forme de bytecode java. •Contient un Bytecode interpreter mais aussi le JIT compiler (Just In Time, compilation à la volée, optimise et compile directement en code machine des petites portions de code en se basant sur les statistiques du programme en train de tourner pour trouver les parties « Hot » et les met en cache pour les réutiliser) •Cet « appareil informatique fictif » est simulé par un logiciel spécifique à chaque plateforme => WORA. •JVM existantes: Hotspot (Oracle), JRockit (Oracle (anciennement Weblogic)), Dalvik (Android) etc. •Initialement conçue pour java, mais utilisée par de nombreux autres langages (Clojure, Groovy, Scala, Jruby, Jython, Rhino etc.), du moment que ces programmes sont compilés en bytecode. •La JVM est le point d’entrée pour analyser les performances d’un programme java à l’exécution et chercher des pistes d’optimisation (outils de monitoring JConsole, VisualVm, Java Mission Control, Flight Recorder…) •Une spécification JSR décrit le comportement à respecter par toutes les JVM. The Java virtual machine is the cornerstone of the Java platform. It is the component of the technology responsible for its hardware- and operating system-independence, the small size of its compiled code, and its ability to protect users from malicious programs. […] The Java virtual machine knows nothing of the Java programming language, only of a particular binary format, the class file format. A class file contains Java virtual machine instructions (or bytecodes) and a symbol table, as well as other ancillary information. […] However, any language with functionality that can be expressed in terms of a valid class file can be hosted by the Java virtual machine. Attracted by a generally available, machine-independent platform, implementors of other languages can turn to the Java virtual machine as a delivery vehicle for their languages. http://download.oracle.com/otn-pub/jcp/jvm-se7-mr3-approved-oth-JSpec/jvm-javase7-mr3-spec.pdf?AuthParam=1391528359_95a49eef8ad45e73415419f4aeea1d17 18
    19. 19. javaOOP.fr POO Un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre. On appelle classe la structure d'un objet. Un objet est donc « issu » d'une classe, c'est le produit qui sort d'un moule. Un objet est une instanciation d'une classe, c'est la raison pour laquelle on pourra parler indifféremment d'objet ou d'instance. Les attributs : il s'agit des données représentant l'état de l'objet Les méthodes: il s'agit des opérations applicables aux objets (son comportement) 19 Attributs Méthodes Constructeur Classe Objet
    20. 20. javaOOP.fr CONCEPTS CLÉS POO • Héritage => transfère le savoir à « ses filles ». • Encapsulation => protège l’intégrité des données. • Abstraction => code commun dans une représentation abstraite • Polymorphisme => code qui peut prendre plusieurs formes à l’exécution. 20
    21. 21. javaOOP.fr POO - HÉRITAGE • Permet la réutilisabilité et le polymorphisme. • Les « filles » (sous-classes) héritent des caractéristiques (attributs et méthodes) de leur « mère » (super-classe) en fonction du niveau de visibilité déclaré par la mère (public, private, protected). • On ne peut hériter que d’une seule classe. • Enrichissement: Il est possible « d’enrichir » la classe fille avec des attributs et méthodes supplémentaires. • Redéfinition (ou substitution): Il est possible de « redéfinir » les méthodes héritées avec une nouvelle implémentation. Syntaxe en java: public class Chat extends Animal 21 Classe mère Classe fille
    22. 22. javaOOP.fr POO - ENCAPSULATION 22 Encapsulation Encapsulation: les attributs (déclarés private) ne sont accessibles que via les mutateurs (setter) et les accesseurs (getter). Le fonctionnement interne de l’objet reste intègre, toute modification d’un attribut de l’objet est maîtrisée. Il est une « boîte noire ». Attention à la déclaration d’attributs public ou protected, c’est possible mais ne respecte pas le principe d’encapsulation.
    23. 23. javaOOP.fr ABSTRACTION 1/2 •Une classe abstraite n’est pas instanciable mais on peut en hériter. •Elle est définie par l’emploi du modificateur abstract. public abstract class FormeGeometrique { •Elle peut contenir des méthodes abstraites, ce sont des méthodes sans implémentation pour lesquelles les classes filles (sauf si elles sont également déclarées abstraites), doivent obligatoirement définir une implémentation. protected abstract double calculerSurface(); 23
    24. 24. javaOOP.fr POO – ABSTRACTION 2/2 24
    25. 25. javaOOP.fr POO - POLYMORPHISME •Du grec signifiant « plusieurs formes » •Un même bout de code correspond à l’exécution du code à l’appel de différentes méthodes. •Repose sur l’héritage ou les interfaces 25
    26. 26. javaOOP.fr INSTALLER JAVA 26 •Télécharger le JDK sur http://www.oracle.com/technetwork/java/javaee/overview/index.html •Configurer la variable d’environnement JAVA_HOME dans ordinateur/propriétés/Paramètres système avancés bouton variable d’environnement
    27. 27. javaOOP.fr IDE: ENVIRONNEMENT DE DÉVELOPPEMENT INTÉGRÉ 27 •IDE: Integrated Development Environment (environnement de développement intégré). C’est un regroupement d’outils d’aide au développement, permettant d’augmenter la productivité des développeurs et la qualité du code. •Les IDE permettent la compilation, le débogage, le refactoring, la connexion aux outils de gestion de version, l’intégration d’outils de déploiement (Maven, Ant), d’analyse du code (Checkstyle, findbugs…), la connexion avec les serveurs d’application (start/stop et déploiement), l’accès au bases de données… •Principaux IDE pour java: Eclipse, Netbeans (Oracle), IntelliJ (JetBrains)…
    28. 28. javaOOP.fr JUNIT 4 •Framework de tests unitaires • Ecriture de tests pour tester le contrat d’interface d’une classe (annotation @Test sur une méthode) • Utilisation d’assertion pour valider le résultat • Regroupement des Tests en Suite de Tests • Exécutables de façon automatique en environnement d’intégration continue pour détecter des régressions. http://junit.org/ (4.x) 28
    29. 29. javaOOP.fr TDD: TEST DRIVEN DEVELOPMENT Le Test Driven Development (TDD) ou développement piloté par les tests est une technique de développement qui préconise d'écrire les tests unitaires avant d'écrire le code source. Avantages: • Cela permet de spécifier le fonctionnement de sa méthode avant de l’implémenter évitant des erreurs de conception, et permettant une « documentation technique ». • Influe sur la conception du code: • L’implémentation est faite à partir d’un cas de test et donc le programmeur se concentre sur le contrat d’interface avant l’implémentation. • Cela encourage le développeur à implémenter son code en petites briques unitaires testables et lisibles avec un faible couplage. • Cela permet de mettre en place dès le codage les tests de non régression automatisés. 29 1. Ecrire un premier test JUnit. 2. Vérifier qu'il échoue (car le code qu'il teste n'existe pas), afin de vérifier que le test est valide. 3. Ecrire juste le code suffisant pour passer le test. 4. Vérifier que le test passe. 5. Puis refactoriser le code, c'est-à-dire l'améliorer tout en gardant les mêmes fonctionnalités.
    30. 30. javaOOP.fr GESTION DE VERSIONS 30 No. Problème : chaque développeur écrit sur son propre poste Solution: Logiciels de contrôle de version Permet de travailler avec des branches: branche en production, branche de la futur version etc. Puis de fusionner les branches Repository Copie locale Copie locale 0 : Commit 1 : Update 2 : Gestion des conflits 3 : Commit Exemples : Subversion, Git, Git
    31. 31. javaOOP.fr OUTILS DE BUILD 31 Un outil de build automatise les fonctions répétitives du développement: la compilation, la génération de javadoc, la création du war, le déploiement etc. Ant: repose sur un fichier xml (ex build.xml) composé d’un ensemble de cibles (ou targets) ayant chacune un rôle dans la construction du projet : nettoyage de répertoires, initialisation, compilation, transfert de fichiers, tests unitaires… Il existe une grande panoplie de tâches possibles et il est possible d’en créer des customs. Avec Ivy en + il permet également de gérer les dépendances. Maven: Repose sur des pom.xml (signifiant Project Object Model) dans les différents niveaux du projet. Ils permettent la compilation, lancement des tests unitaires, déploiement etc. mais surtout la gestion des dépendances grâce à des repositories distants et locaux. Gradle: Le petit nouveau très tendance, combine les avantages de ant et maven sans leurs inconvénients. http://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of- maven-gradle-and-ant-ivy/ http://blog3.lemondeinformatique.fr/?p=299
    32. 32. javaOOP.fr PACKAGING/LIVRABLE 32 •JAR = Java ARchive => fichier zip (ouvrable par 7-zip ou winzip). Il contient des classes java compilées, un fichier manifest (versions, nom de la class principale, dépendances etc), des applets… •Ex log4J.jar •WAR = Web application Archive => fichier JAR contenant une application web (librairies JAR, classes java, html, xhtml, JSP, images, javascript, css, web.xml…) à déployer sur un serveur d’application. •Ex: SNCF.war •EAR = Enterprise Archive => fichier JAR contenant plusieurs modules à déployer sur un serveur d’application (WAR, EJB, JAR…) •EX: PortailAMELI.ear
    33. 33. javaOOP.fr APPLETS JAVA •Introduite dès la première version du langage en 95. Une applet java s’exécute dans un navigateur web (bytecode java exécuté par la jvm). Elle peut également être testée dans l’appletviewer. •De préférence, on recommande maintenant l’utilisation de la technologie Java Web Start. •Exemple d’applets: http://www.oracle.com/technetwork/java/index-135948.html •Depuis les derniers update de java 7, la sécurité s’est renforcée au maximum en réponse aux failles de sécurité controversées => il faut désormais livrer des applets signées avec un certificat acheté auprès d’une autorité de confiance reconnue mondialement telle que Thawte ou Verisign pour éviter les fenêtres de blocage sécurité. 33
    34. 34. javaOOP.fr JAVA WEB START 1/2 -Java Web Start permet de lancer une application java directement depuis le web, d’un seul clic. L’extension est jnlp (Java Network Launching Protocol). -Java Web Start garantit l’exécution de la version la plus récente de l’application. -Par défaut, lancement de l’application dans un « bac à sable » (sandbox), préserve l’intégrité et la sécurité de l’ordinateur. -Page de démo: http://docs.oracle.com/javase/tutorial/uiswing/examples/misc/index.html http://www.java.com/fr/download/faq/java_webstart.xml 34
    35. 35. javaOOP.fr JAVA WEB START 2/2 35 •La gestion des applets et applications java web start se fait dans panneau de configuration/Java/Général/Fichiers Internet temporaires/Visualiser •On peut vider le cache, lancer directement une application sans passer par le navigateur, ou l’installer en raccourci sur le bureau.
    36. 36. javaOOP.fr INTÉGRATION CONTINUE 1/2 36 Ensemble de pratiques consistant à vérifier de façon automatique à chaque modification du code source dans le gestionnaire de sources qu’il n’y a pas de régression. A la détection d’une modification, le serveur d’intégration peut lancer un compilation voire un déploiement et l’exécution des tests unitaires (JUnit). On peut paramétrer l’envoi d’e-mails en cas de problème. L’exécution repose sur un logiciel de gestion de versions (svn, git…), un outil de build (ant, maven…), ainsi qu’un outil d’intégration continue (ex Jenkins). La plateforme peut aussi planifier (par ex une fois par jour) le lancement d’outils d’audit qui génère des rapports. Ex d’outils d’audit (Open source) •Checkstyle: vérifie le respect des règles de codage •PMD: détecte les mauvaises habitudes de codage pouvant être la cause de bugs. •Findbugs: détecte des bugs courants •JaCoCo: couverture de code (analyse du pourcentage de code testé par les tests unitaire), permet de détecter les portions de code manquant de tests. •SonarQube: permet d’agréger les résultats des outils d’audit (findbugs, checkstyle etc) en rapports et graphiques.
    37. 37. javaOOP.fr INTÉGRATION CONTINUE 2/2 37 Site démo: http://nemo.sonarqube.org http://zeroturnaround.com/rebellabs/d eveloper-productivity-report-2013- how-engineering-tools-practices- impact-software-quality-delivery/11/
    38. 38. javaOOP.fr JAVADOC 1/3 •Outil permettant de générer une documentation html de l’API à partir des commentaires présents dans le code. • A livrer avec toute API, sinon l’API est pratiquement inutilisable. • Indispensable pour toute application, notamment si TMA, changement de développeurs sur le projet, développeur intervenant sur des parties codées par un autre etc. • A faire « au fil de l’eau » de l’écriture du code par le développeur, sinon ne sera pas fait ou mal fait a postériori… • Ceci est un commentaire java mais n’est pas de la javadoc: • La javadoc commence par /** et se termine par */ • Oracle fournit une javadoc détaillée de ses API de base (core java API). Ex de javadoc d’une classe Exemple de javadoc d’une méthode et d’un constructeur 38
    39. 39. javaOOP.fr JAVADOC 2/3 39 Génération en ligne de commande: javadoc -d homehtml -sourcepath homesrc -subpackages java -exclude java.net:java.lang Ou via l’IDE:
    40. 40. javaOOP.fr JAVADOC 3/3 40 https://www.java.net/pub/pq/65 http://stackoverflow.com/questions/184618/what-is-the-best- comment-in-source-code-you-have-ever-encountered
    41. 41. javaOOP.fr SOMMAIRE • Introduction • Au cœur de Java et de la POO • Conclusion • Java vs Javascript • Java vs .NET • TOY • Le future de Java ? • Restez dans la boucle ! 41
    42. 42. javaOOP.fr JAVASCRIPT ET JAVA : RIEN À VOIR ! 42 •Java a été créé par Sun Microsystems. •Java permet de créer des Applets, des applications standalone, la logique côté serveur d’une application Web. •Java est un langage de programmation Orienté Objet. •Java créée des application tournant dans une machine virtuelle. •Java doit être compilé. •JavaScript a été créé par Netscape Inc. •JavaScript est embarqué dans l’HTML pour créer de la « richesse » côté client. •JavaScript est un langage de script à la fois procédural et orienté object. •JavaScript tourne sur un navigateur (plus entièrement vrai, le server side javascript prend de l’ampleur ex Node.js). •JavaScript est interprété https://developer.mozilla.org/en-US/docs/Web/JavaScript/About_JavaScript http://www.java.com/en/download/faq/java_javascript.xml Quelques similitudes (javaScript s’est entre autres inspiré de java) mais surtout beaucoup de différences de syntaxe, typage, framework etc.
    43. 43. javaOOP.fr JAVA VERSUS .NET 43 JAVA •Produit d’Oracle •Open source •Gratuit •Multi plateforme •IDE: Eclipse, NetBeans.. •Applications d’entreprise •Nombreux outils, logiciels, framework, API à disposition => nombreux fournisseurs commerciaux et nombreuses communautés open source => la concurrence stimule l’innovation, permet de négocier de façon concurrentielle entre deux produits etc. ++ Applications mobiles (Android) ++ Serveurs sont essentiellement sous Linux ++ Considéré meilleur, plus robuste pour les applications complexes avec de gros volumes d’utilisateurs .NET •Produit de Microsoft •Propriétaire •Prix des licences pour l’OS, l’IDE, Microsoft IIS… •Plateforme Windows •IDE: Microsoft visual studio •Applications d’entreprise •Seul fournisseur Microsoft, outils cadrés et stables mais sont-ils innovants ? ++ Application de bureau windows ++ « Ecosystème » plus petit, plus simple et conduit par une seule source, Microsoft => plus facile à appréhender et maîtriser http://www.youtube.com/watch?v=9QFK1cLhytY&hd=1
    44. 44. javaOOP.fr LE FUTUR DE JAVA ? •Reste le langage de programmation le plus populaire, la tendance TIOBE est relativement constante, signifie aussi une forte masse de développeurs. •Ecosystème important de librairies open sources et commerciales •Outils reconnus et de grande qualité (Eclipse, Netbeans…) •Open source •Forte implantation dans les entreprises •Belle avenir sur la téléphonie mobile avec Android (70% de la téléphonie mobile) •Période de flottement de 2008 à 2011, mais avec Java 8 et ses avancées majeures Java est remis sur les rails •Et pas de concurrent valide pour le remplacer (Objective-C ? Pour Apple uniquement, Microsoft.NET ? Verrouillé par Microsoft. Peut être un mystérieux nouveaux langage ? Le temps qu’il s’implante laisse du temps pour voir venir…) •A considérer pour le futur de java, peut être Scala (niveau d’abstraction supérieur) compilé en bytecode java. •En conclusion, on en reparle dans 5 ans… 44
    45. 45. javaOOP.fr RESTEZ DANS LA BOUCLE ! •Le site web: https://home.java.net/ • Le site web @Oracle: http://www.oracle.com/technetwork/java/index.html •Le blog: https://blogs.oracle.com/java/ • Twitter: https://twitter.com/java • Facebook: https://www.facebook.com/ilovejava •Le e-magazine: http://www.oracle.com/technetwork/java/javamagazine/index.html •YouTube: http://www.youtube.com/user/java •Apprendre la POO en s’amusant avec Alice: http://www.alice.org/ •S’initier au java en s’amusant avec le projet Greenfoot: http://www.greenfoot.org/ •Apprendre le java: http://docs.oracle.com/javase/tutorial/tutorialLearningPaths.html 45
    46. 46. javaOOP.fr POUR LES UTILISATEURS… •JUG: Java User Groups, groupe d’utilisateurs java se rassemblant pour partager leurs connaissances java à travers des conférences, des pizzas… http://www.alpesjug.org/ http://www.lyonjug.org/ •JavaOne: conférence annuelle inaugurée en 1996 par Sun Microsystems sur les technologies java, présentations techniques, nouveautés etc. The place to be… •Devoxx est la conférence Java européenne, créé en 2001 par BeJUG (JUG Belgique), elle existe aujourd’hui en France, Belgique et Angleterre. Conférences et recrutement… •JavaZone: Conférence annuelle en Norvège, à Oslo sur l’open source depuis 2002 organisé par javaBin (JUG Norvégien). Conférences, exposition de produits et recrutement. 46 http://www.oracle.com/javaone/index.html
    47. 47. javaOOP.fr DES QUESTIONS ? 47

    ×