Aller au contenu principal

Kotlin et librairies tierces

Avant la séance (2h)

Il existe des milliers de librairies Java pour faire presque tout, qui fonctionnent généralement bien. De nombreuses compagnies tech comme Google, Twitter ou Square partagent leur librairies.

À faire pendant la séance
  • Demo de MavenRepository: librairie, version
  • Exemple de recherche de librairie : exemple de https://square.github.io
    • Interopérabilité des librairies Java et Kotlin
  • Compléter les exercices de la semaine
  • Continuer le TP1

Attention : une grande partie du travail de ces exercices consiste à faire vos propres recherches. Lorsqu'on commence à utiliser une nouvelle librairie, il est généralement recommandé de commencer en lisant la documentation et les exemples fournis par les développeurs de la librairie.

Exercices

Exercice Jsoup

À l'aide de la librairie Jsoup, vous devez écrire un petit programme qui prend une url en paramètre, qui télécharge la page web correspondant, puis qui extrait toutes les balises <a> de la page et affiche leur attribut href.

Par exemple, si la page contient

<a href="pipo.html">test</a>

le programme devra afficher test = pipo.html dans la console.

Exercice ValidationCourriel

Tu dois trouver une librairie qui valide si un courriel est valide. Écris un programme pour voir si la méthode fournie par la librairie fonctionne sur les exemples suivants:

Exercice SuperListe

On veut comparer les performances de plusieurs implémentations de List quand on parle de performance pour l'insertion. On souhaite comparer le temps d'exécution nécessaire pour:

  • ajouter 100 000 éléments en dernière position dans la liste
  • ajouter 100 000 éléments en première position dans la liste
  • ajouter 100 000 éléments dans une position au hasard dans la liste

Pour permettre de tester plusieurs listes, on vous recommande de créer une méthode

fun testeCetteListe(liste: MutableList<Int>) {
val random: Random = Random(1234)
val a = System.currentTimeMillis()
// ajouter 100 000 elements en dernière position liste.add(nombre);
val b = System.currentTimeMillis()
// ajouter 100 000 elements en première position liste.add(0, nombre);
val c = System.currentTimeMillis()
// ajouter 100 000 elements position au hasard liste.add(random.nextInt(liste.size + 1), nombre);
val d = System.currentTimeMillis()
// afficher b-a, c-b, d-c qui sont les durées d'exécution en millisecondes
}

Le but est de voir quelle liste est la plus performante entre LinkedList, ArrayList et une dernière que vous trouverez dans la librairie suivante : GapList.

Ainsi, avec un main qui appelle la méthode testeCetteListe pour une LinkedList puis une ArrayList puis une GapList, vous aurez une bonne idée des performances respectives.