:: Enseignements :: ESIPE :: E4INFO :: 2018-2019 :: Java Inside ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) |
Bootcamp
|
Git, Pro, JUnit, JMH, Github, Travis
Exercice 1 - Git / Github
Le but de cet exercice est de créer un repository sur Github qui sera utiliser pour le reste des labs.
-
Créer un compte sur Github (si vous n'en aavez pas déjà un)
-
Créer un repository nommé java-inside avec un .gitignore configuré pour les projets Java
et un README indiquant que ce repository va contenir les différents labs de la matière Java Inside.
-
Dans votre home directory sur la machine de la fac (ou votre propre machine), cloner le projet avec
git clone (dans un terminal).
Changer l'editeur de texte (pour le texte des commits) pour utiliser vi
export GIT_EDITOR=vi
Modifier le README puis faite une git commit et aller vérifier que le README est bien mis à jour sur GitHub.
Que se passe t'il ? Pourquoi ? Comment corriger le problème ?
-
Ajouter un fichier test.txt, puis utiliser git add. Puis faite en sorte que le fichier apparaisse sur Github.
-
Modifier le contenu du fichier test.txt en utilisant directement l'interface de github (le petit stylo Edit) pui commiter le.
Comment faire pour mettre à jour la copie local de votre repository pour que vous voyez le contenu du fichier changé
sur la machine locale.
-
Supprimer le fichier test.txt en locale et fait en sorte qu'il soit supprimer sur Github.
-
Ouvrer Eclipse (en utilisant la version /home/ens/forax/java-inside/eclipse) et répéter les mêmes opérations,
- créer un fichier test-eclipse.txt en local
- faire en sorte qu'il soit pris en compte par git
- faire en sorte qu'il soit visible sur github
- modifier le en utilisant l'interface de Github
- faire en sorte de voir les modifications que vous avez fait en local
- suprimmer le fichier en local et de mettre à jour le repository sur Github
-
Prenez une feuille blanche et faire un dessin expliquant le fonctionnement de Git !
Exercice 2 - Pro et JUnit 5
Pour la suite des labs, nous allons utiliser un outils de build pour gérer les dépendences, compiler, packager, executer les tests d'un projet Java.
Dans le monde Java, historiquement,
ant qui ressemble à
Make mais avec un fichier de build écrit en Java
était utiliser. Depuis une quizaine d'année, la plupart des projets utilise soit
Apache Maven
(build toujours en XML) si le build est standard ou
Gradle si le build
(en Groovy ou récemment Kotlin) est plus compliqué.
Nous n'utiliserons ni Maven ni Gradle mais
Pro
qui est utilisé par personne mais qui a l'avantage de pouvoir facilement packager des versions de Java qui n'existe pas encore.
Pro est installé sur les machines de l'université dans le répertoire
/home/ens/forax/java-inside/pro-jdk-11,
si vous voulez utiliser pro sur votre machine personnel, vous pouvez télécharger les differentes version
à partir de l'onglet
releases de Github.
-
Créer un repertoire lab1 puis dans ce répertoire utiliser la commande pro scaffold
pour créer un exemple de projet Java ayant un module fr.umlv.javainside.lab1.
Puis utiliser la commande pro sans argument pour exécuter le build définie par le fichier build.pro.
Ajouter une classe Java fr.umlv.javainside.lab1.Sums ayant deux méthodes caculant la somme des nombre de 0 à n
soit en tilisant une boucle loopSum soit en utilisant un Stream streamSum.
Vérifier que le module build correctement.
-
Ajouter une classe de test fr.umlv.javainside.lab1.SumsTests utilisant le framework de test JUnit 5 (regarder l'exemple)
testant les deux méthodes loopSum et streamSum avec différents paramétres.
Vérifier que le module build toujours correctement et que les tests sont bien exécutées.
Exercice 3 - JMH
Pour faire les tests de performance sur des micro-benchmarks, nous allons utiliser l'outil
Java Microbenchmark Harness (ou JMH)
Pour demander à Pro d'utiliser JMH, il faut:
- ajouter les dépendences sur JMH
- demander au compilateur d'utiliser le processeur d'annotation de JMH
- ajouter le perfer dans la liste des commandes que l'on passe à run
-
Récupérer un exemple de test de performance JMH
JMHSample_01_HelloWorld.java,
changer le build pour utiliser ce test et vérifier que le projet build.
Créer un test JMH TestBenchMark qui compare la vitesse d'exécution des méthodes loopSum et streamSum en fonction
de différents paramètres.
La doc de JMH
est uniquement composé d'exemples exécutables.
Note: pour executer un test JMH à partir de la ligne de commande, on doit écrire
/chemin-vers-pro/pro/bin/java --module-path target/test/artifact:deps -m fr.umlv.javainside.lab1/fr.umlv.javainside.lab1.TestBenchMark
Le module-path indique les répertoires contenant les jars et -m prend en paramètre le nom du module et le nom du fichier Java séparé par un slash.
Exercice 4 - Travis
Travis est un service qui permet de tester (et déployer) du code à distance.
Travis est intégré avec Github et execute le script de test à chaque fois qu'un commit est fait.
Comme nous n'utilisons pas Maven ou Gradle mais Pro, il va falloir dans un premier temps
demander à Travis de télécharger la dernière version de Pro, pour cela nous avons un petit script
écrit en Java (si on peut écrire des scripts en Java) nommé
pro_wrapper.java.
Le script s'exécute en utilisant
java pro_wrapper.java (pas besoin de le compiler).
Le script
pro_wrapper.java utilise la variable d'environement
PRO_SPECIAL_BUILD pour choisir
quelle version de pro doit être utiliser.
PRO_SPECIAL_BUILD='' correspond à Java 11 et
PRO_SPECIAL_BUILD='early-access' correspond à la version 12.
-
Enregistrez vous sur le site travis-ci.org et demander à ce que Travis
s'occupe de votre repository GitHub java-inside
-
Liser comment marche Travis
-
Créer un fichier .travis.yml, qui décrit en YAML la configuration de test.
Attention: Travis est sourcillieux avec son fichier YAML , il n'accepte pas les tabs et
un déclage se fait avec 2 espaces, pas 3, pas 1 !
language: java
jdk: openjdk11
# https://github.com/travis-ci/travis-ci/issues/8408
before_install:
- unset _JAVA_OPTIONS
env:
- PRO_SPECIAL_BUILD='early-access'
install:
- cd lab01
- java pro_wrapper.java version
script:
- ./pro/bin/pro version
- ./pro/bin/pro
-
Regarder les temps d'exécution si vous demandez à Travis d'exécuter les tests JMH, que pouvez vous en conclure ?
-
Utiliser la notion de build matrix
pour tester votre projet avec les version 11 et 12 de Pro.
© Université de Marne-la-Vallée