SlideShare uma empresa Scribd logo
1 de 47
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 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
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/
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/
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
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
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)
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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.
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
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 code à l’appel de différentes méthodes.
•Repose sur l’héritage ou les interfaces
25
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
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)…
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
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.
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
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
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
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
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
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.
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.
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/
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
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:
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
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
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.
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
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
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
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
javaOOP.fr
DES QUESTIONS ?
47

Mais conteúdo relacionado

Mais procurados

Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open SourceIppon
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeformationobjetdirect
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotiqueMicrosoft
 
Spring 3 en production
Spring 3 en productionSpring 3 en production
Spring 3 en productionJulien Dubois
 
Géolocalisation, Speech, Intégration : Tirez parti des nouveautés de Windows ...
Géolocalisation, Speech, Intégration : Tirez parti des nouveautés de Windows ...Géolocalisation, Speech, Intégration : Tirez parti des nouveautés de Windows ...
Géolocalisation, Speech, Intégration : Tirez parti des nouveautés de Windows ...Microsoft
 
Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via mavenFranck SIMON
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à androidLilia Sfaxi
 

Mais procurados (16)

Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilité
 
De Devoxx au CAC40
De Devoxx au CAC40De Devoxx au CAC40
De Devoxx au CAC40
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 
Xcode 4.5
Xcode 4.5Xcode 4.5
Xcode 4.5
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonome
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique
 
Spring 3 en production
Spring 3 en productionSpring 3 en production
Spring 3 en production
 
Géolocalisation, Speech, Intégration : Tirez parti des nouveautés de Windows ...
Géolocalisation, Speech, Intégration : Tirez parti des nouveautés de Windows ...Géolocalisation, Speech, Intégration : Tirez parti des nouveautés de Windows ...
Géolocalisation, Speech, Intégration : Tirez parti des nouveautés de Windows ...
 
Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via maven
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
JavaFX et le JDK9
JavaFX et le JDK9JavaFX et le JDK9
JavaFX et le JDK9
 

Destaque

OAuth with AngularJS and WebAPI - SoCal Code Camp 2015
OAuth with AngularJS and WebAPI - SoCal Code Camp 2015OAuth with AngularJS and WebAPI - SoCal Code Camp 2015
OAuth with AngularJS and WebAPI - SoCal Code Camp 2015Stuart
 
Oracle University - Your Complete Training Source for Oracle Software and Har...
Oracle University - Your Complete Training Source for Oracle Software and Har...Oracle University - Your Complete Training Source for Oracle Software and Har...
Oracle University - Your Complete Training Source for Oracle Software and Har...ORACLE USER GROUP ESTONIA
 
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...Maarten Balliauw
 
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access ControlOAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access ControlMaarten Balliauw
 
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
OAuth-as-a-serviceusing ASP.NET Web API and Windows Azure Access ControlOAuth-as-a-serviceusing ASP.NET Web API and Windows Azure Access Control
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access ControlMaarten Balliauw
 
REST and ASP.NET Web API (Milan)
REST and ASP.NET Web API (Milan)REST and ASP.NET Web API (Milan)
REST and ASP.NET Web API (Milan)Jef Claes
 
29 Essential AngularJS Interview Questions
29 Essential AngularJS Interview Questions29 Essential AngularJS Interview Questions
29 Essential AngularJS Interview QuestionsArc & Codementor
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm
 
PHP 7.0 : aperçu des nouveautés
PHP 7.0 : aperçu des nouveautésPHP 7.0 : aperçu des nouveautés
PHP 7.0 : aperçu des nouveautésDidcode
 
Tuto headsup-sw 0
Tuto headsup-sw 0Tuto headsup-sw 0
Tuto headsup-sw 0mazaltofeur
 
La comm digitale expliquée à mon - Michael TARTAR
La comm digitale expliquée à mon - Michael TARTARLa comm digitale expliquée à mon - Michael TARTAR
La comm digitale expliquée à mon - Michael TARTARA Mon Boss
 
20140530 charte éco responsable v6
20140530 charte éco responsable v620140530 charte éco responsable v6
20140530 charte éco responsable v6CarolineMty
 
Paris montmartre 16 aprilie 2010
Paris montmartre 16 aprilie 2010Paris montmartre 16 aprilie 2010
Paris montmartre 16 aprilie 2010Viorica Munteanu
 

Destaque (20)

OAuth with AngularJS and WebAPI - SoCal Code Camp 2015
OAuth with AngularJS and WebAPI - SoCal Code Camp 2015OAuth with AngularJS and WebAPI - SoCal Code Camp 2015
OAuth with AngularJS and WebAPI - SoCal Code Camp 2015
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
What's new in Angular 2?
What's new in Angular 2?What's new in Angular 2?
What's new in Angular 2?
 
Oracle University - Your Complete Training Source for Oracle Software and Har...
Oracle University - Your Complete Training Source for Oracle Software and Har...Oracle University - Your Complete Training Source for Oracle Software and Har...
Oracle University - Your Complete Training Source for Oracle Software and Har...
 
Introduction to HTML4
Introduction to HTML4Introduction to HTML4
Introduction to HTML4
 
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control - W...
 
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access ControlOAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
 
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
OAuth-as-a-serviceusing ASP.NET Web API and Windows Azure Access ControlOAuth-as-a-serviceusing ASP.NET Web API and Windows Azure Access Control
OAuth-as-a-service using ASP.NET Web API and Windows Azure Access Control
 
REST and ASP.NET Web API (Milan)
REST and ASP.NET Web API (Milan)REST and ASP.NET Web API (Milan)
REST and ASP.NET Web API (Milan)
 
29 Essential AngularJS Interview Questions
29 Essential AngularJS Interview Questions29 Essential AngularJS Interview Questions
29 Essential AngularJS Interview Questions
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautés
 
PHP 7.0 : aperçu des nouveautés
PHP 7.0 : aperçu des nouveautésPHP 7.0 : aperçu des nouveautés
PHP 7.0 : aperçu des nouveautés
 
Tuto headsup-sw 0
Tuto headsup-sw 0Tuto headsup-sw 0
Tuto headsup-sw 0
 
La comm digitale expliquée à mon - Michael TARTAR
La comm digitale expliquée à mon - Michael TARTARLa comm digitale expliquée à mon - Michael TARTAR
La comm digitale expliquée à mon - Michael TARTAR
 
Cours5 enr
Cours5 enrCours5 enr
Cours5 enr
 
Plaquette LDB MEDIAS
Plaquette LDB MEDIASPlaquette LDB MEDIAS
Plaquette LDB MEDIAS
 
20140530 charte éco responsable v6
20140530 charte éco responsable v620140530 charte éco responsable v6
20140530 charte éco responsable v6
 
Web2.0 creando mi primer aula digital
Web2.0 creando mi primer aula digitalWeb2.0 creando mi primer aula digital
Web2.0 creando mi primer aula digital
 
Devoir5
Devoir5Devoir5
Devoir5
 
Paris montmartre 16 aprilie 2010
Paris montmartre 16 aprilie 2010Paris montmartre 16 aprilie 2010
Paris montmartre 16 aprilie 2010
 

Semelhante a Javaoop

devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfJean-Michel Doudoux
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdfOmbotimbe Salifou
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro javaAmel Morchdi
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?Rui Carvalho
 
Java & Etat de l'art
Java & Etat de l'artJava & Etat de l'art
Java & Etat de l'artInes Ouaz
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Jean-Michel Doudoux
 
Nantes jug 2018 - Java le changement c'est maintenant
Nantes jug 2018 - Java le changement c'est maintenantNantes jug 2018 - Java le changement c'est maintenant
Nantes jug 2018 - Java le changement c'est maintenantJean-Michel Doudoux
 
Java EE, un ami qui vous veut du bien
Java EE, un ami qui vous veut du bienJava EE, un ami qui vous veut du bien
Java EE, un ami qui vous veut du bienAntoine Sabot-Durand
 
Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Jean-Michel Doudoux
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lroxmed
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web servicesoussemos
 

Semelhante a Javaoop (20)

Chap 02 poo en java
Chap 02 poo en javaChap 02 poo en java
Chap 02 poo en java
 
Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
 
Introduction àJava
Introduction àJavaIntroduction àJava
Introduction àJava
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro java
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 
Java & Etat de l'art
Java & Etat de l'artJava & Etat de l'art
Java & Etat de l'art
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
 
Nantes jug 2018 - Java le changement c'est maintenant
Nantes jug 2018 - Java le changement c'est maintenantNantes jug 2018 - Java le changement c'est maintenant
Nantes jug 2018 - Java le changement c'est maintenant
 
Java EE, un ami qui vous veut du bien
Java EE, un ami qui vous veut du bienJava EE, un ami qui vous veut du bien
Java EE, un ami qui vous veut du bien
 
Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Javavs net
Javavs netJavavs net
Javavs net
 
JavaCours1.ppt
JavaCours1.pptJavaCours1.ppt
JavaCours1.ppt
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
Introduction JavaEE
Introduction JavaEEIntroduction JavaEE
Introduction JavaEE
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web services
 

Javaoop

  • 1. A LA DÉCOUVERTE DE JAVA javaOOP.fr
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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:
  • 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. 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. 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. 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. 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. 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

Notas do Editor

  1. 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
  2. - 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.
  3. Github: service d’hébergement et de gestion de projets (compte gratuit pour les logiciels libres) http://stackoverflow.com/: forum pour développeurs
  4. En synthèse, voici la liste des gagnants 2014, à réactualiser en 2015
  5. 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
  6. 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.
  7. 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.
  8. Fonctionnement par update: exemple Version 7 Update 67 Java SE 8u20
  9. - 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 
  10. 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.
  11. 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
  12. 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
  13. 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
  14. Très brève explication des interfaces, ce n’est pas le sujet.
  15. Java pourrait être écrit dans un notepad mais grosse baisse de productivité…
  16. Fait partie des pratiques agiles.
  17. 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/
  18. 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
  19. La majorité des applications web sont livrés sous forme fichier war.
  20. 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.
  21. 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.