La JVM est l’environnement d'exécution des applications basées sur Java.
Nous pouvons écrire des programmes qui s'exécutent dans la JVM (Java Virtual Machine) avec une multitude de langages différents.
Aujourd’hui, le Java et le Kotlin sont les deux langages les plus utilisés par les développeurs Android, et comme Google, beaucoup préfèrent désormais le Kotlin.
Il n’est pas trop tard pour refactorer votre application Java ;)
Vous pouvez suivre notre guide de migration ici si vous utilisez actuellement notre SDK Java, qui est maintenant déprécié au profit du SDK JVM :
Entièrement écrit en Kotlin, il nous permet aisément d’y appeler également du code Java.
Ce langage a été écrit par JetBrains, notamment connus pour ses nombreux IDE tels que IntellIJ Idea, CLion ou encore Webstorm.
Quelques caractéristiques intéressantes du Kotlin
- Null Pointer Safety : Limite le risque des NullPointerException en distingant les références nullables de celles qui ne le sont pas.
- Scope Functions : Copie l'objet sur lequel il est appelé et effectue des operations.
- Default arguments : Limite de nombre d'overload à écrire.
- Named parameters : Modifier librement l'ordre dans lequel ils sont appelés
- Full Java interoperability : Il fonctionne sur la JVM et utilise les bibliothèques et outils Java.
- Extensions functions : Ajouter des méthodes aux classes sans modifier leur code source.
Show me the code!
Le JAR est disponible sur Maven: https://bintray.com/maven/kuzzleio/sdk-jvm
Vous pouvez dès à présent l’ajouter à votre classpath:
Maven:
<dependency>
<groupId>io.kuzzle</groupId>
<artifactId>sdk-jvm</artifactId>
<version>1.0.1</version>
<type>pom</type>
</dependency>
Gradle:
implementation 'io.kuzzle:sdk-jvm:1.0.1'
Ivy:
<dependency org='io.kuzzle' name='sdk-jvm' rev='1.0.1'>
<artifact name='sdk-jvm' ext='pom' ></artifact>
</dependency>
Connectez vous à present à votre instance de Kuzzle!
Tout d’abord il faut instancier le SDK en choisissant le protocole de communication. Seul le WebSocket est disponible pour le moment, mais le support HTTP arrivera très prochainement.
Voici le code Kotlin:
val ws = WebSocket("kuzzle");
val kuzzle = Kuzzle(ws).apply {
connect()
};
A present vous pouvez commencer à communiquer avec Kuzzle via l'API.
La structure de nos SDK est calquée sur celle de notre API avec un découpage en contrôleurs et actions.
Voici un exemple d'authentification avec auth:login:
// Login with username "Yoann"
kuzzle.authController.login("local", ConcurrentHashMap<String, Any?>().apply {
put("username", "Yoann")
put("password", "thisarticleisfire")
}).get()
// The SDK instance is now authenticated
Ou encore pour créer un nouveau document avec document:create :
val document: ConcurrentHashMap<String, Any?> = ConcurrentHashMap<String, Any?>().apply {
put("firstname", "Yoann")
put("type", "alien")
}
val result: ConcurrentHashMap<String, Any?> =
kuzzle
.documentController
.create("nyc-open-data", "yellow-taxi", document)
.get();
Notre documentation, écrite en Kotlin et en Java, est disponible ici.
Vous pouvez également consulter nos Getting Started Kotlin et Java.
Evolutions à venir
Dans un futur proche nous avons prévu de développer le support du protocole HTTP, très important pour le développement mobile, afin de ne pas drainer la batterie par une connexion WebSocket persistante.
Il reste également du travail à réaliser sur la documentation afin de la rendre plus accessible, en rédigeant notamment des Getting Started et des nouveaux guides.
Finalement, comme l’API de Kuzzle s’enrichit sans cesse de nouvelles actions, nous allons également avoir du travail pour les intégrer au SDK actuel.
Si vous avez des questions à propos du SDK, vous pouvez les poser à la core-team sur Stackoverflow ou venir en discuter avec la communauté sur Discord : http://join.discord.kuzzle.io.