Android est un système d’exploitation qui va bientôt fêter ses 10 ans. Son architecture fait intervenir différents langages de programmation et la couche la plus proche de l’utilisateur est tout naturellement les applications. Jusqu’à présent, Google ne supportait que le langage Java pour développer les fameuses applications que vous utilisez au quotidien. Il existe plusieurs versions de Java, dont la plus récente est nommée Java 8 (Java 9 étant prévu pour cet été).
Côté Android, le support de Java 8 n’est actuellement qu’en bêta suite à diverses tergiversations de Google sur son intégration. Version de Java qui date de… 2014 ! Mais aujourd’hui le Java est un langage de plus en plus décrié, car des langages modernes l’ont quelque peu ringardisé. Les développeurs iOS n’hésitaient plus à se moquer d’Android, car Apple a développé de son côté son propre langage : Swift.
Des rumeurs circulaient il y a un an sur le support d’un nouveau langage pour compléter Java. Mais lors de la Google I/O 2016, nous avons eu droit à un silence radio. Les ingénieurs de Google avaient alors nié en bloc l’utilisation de Swift, bien que le langage soit open source.
Mais cette édition de la Google I/O a généré un grand soulagement chez les développeurs Android, puisque le support de Kotlin a été officialisé. Ce langage de programmation développé par JetBrains (à qui l’on doit notamment IntelliJ, l’environnement qui sert de base à Android Studio) est déjà utilisé par certains développeurs depuis plusieurs mois/années, malgré l’absence de support officiel.
Qu’est-ce que Kotlin ?
L’ajout de ce nouveau langage soulève également de nombreuses questions. La première et non des moindres est que Kotlin ne nécessite en aucun cas de réécrire l’ensemble des applications. Il est tout à fait possible de faire cohabiter du code Java et du code Kotlin. On comprend aisément pourquoi Google a opté pour cette solution qui offre une transition en douceur. Kotlin est également un langage robuste et éprouvé, puisqu’il est disponible depuis près de cinq années et qu’il est déjà utilisé en production sur des applications Android. Quelques exemples : Flipboard, Pinterest ou Expedia.
Qu’offre Kotlin ?
La liste des fonctionnalités serait trop longue à faire, mais on peut résumer simplement en un langage plus riche, flexible et concis. Si l’on devait citer quelques fonctionnalités : ne plus avoir besoin de mettre des points virgules à la fin de chaque instruction, la fin des null checks, l’inférence de type, étendre des classes existantes, les casts intelligents… Une page officielle détaille plus précisément les différences que l’on peut trouver avec Java.
Quel avenir pour Java et C/C++ sur Android ?
Sur scène, Google l’a affirmé haut et fort : le support de Java, C et C++ sera le même qu’aujourd’hui. Kotlin est simplement un nouveau langage supporté.
Et Android Studio ?
Android Studio est donc basé sur IntelliJ, qui lui même supporte Kotlin. Par conséquent si vous utilisez au minimum Android Studio 2.0, l’IDE sait parfaitement gérer ce nouveau langage.
Sur Android Studio 3.0 (actuellement en version Canary), une fonction de copié/collé intelligent sera au rendez-vous. Il faut pour cela copier du code Java et le coller dans un fichier Kotlin. Automatiquement l’IDE transformera le code pour vous.
Une bonne nouvelle pour l’utilisateur final
Et faciliter la vie aux développeurs, c’est aussi une bonne chose pour les utilisateurs des applications. Un langage plus concis, c’est également moins d’erreurs potentielles, et donc moins de crashs à long terme. Le développement des applications étant facilité, on peut également espérer que les applications et les nouvelles fonctionnalités soient déployées plus rapidement.
Si vous débutez le développement Android, ne perdez plus de temps et passez directement à Kotlin !
Pour aller plus loin
Google I/O 2017 : ce qu’il faut retenir
Chaque matin, WhatsApp s’anime avec les dernières nouvelles tech. Rejoignez notre canal Frandroid pour ne rien manquer !
Bon ça pourrait nous emmener dans un long débat, mais moi je vois l'intérêt ;-)
Oui on est bien d'accord, ce n'est pas fait pour faire un gros serveur en monolithique, mais pas restreint au scripting. C'est parfait pour le micro-service, les performances sont assez exceptionnel :-)
Il y a effectivement des méthodes sur structure mais la notion POO n'est pas totalement présente, et il y est bien trop complexe pour du procédural, en regardant des débats sur reddit et stackoverflow, la notion de langage scripté revenait souvent du fait qu'un des dev de golang avait déclaré que c'était un langage scripté. Après il est vrai que ce langage peu servir pour énormément de chose : - microservice (dans un des projet de fin d'année ou même dans l'entreprise où je me trouve ) - scripts - jeux (bien que très très rare) Etc
Un peu à la PHP en somme, mais en plus propre. C'est pas plus mal si ça peut permettre d'avoir la souplesse de PHP avec un vrai typage, mais je ne vois pas l'intérêt quand un dev maitrise déjà Java. Et pour sa partie programmation fonctionnel je n'en voit pas l'intérêt également. et ma Licence m'a définitivement dégouté de Cacaml et Scheme~
C'est quand même pas vraiment un langage scripté, les struct sont bien des objets comprenant variable et méthode. Je sais que certain l'utilise pour du script, mais cela s'utilise également très bien en tant que micro-service tel que c'est le cas chez Google. J'essaierai quand j'aurai l'occasion de refaire une app Android :-)
Maitriser la syntaxe oui, mais après il y a l'apprentissage des aspects fonctionnels, qui peut prendre des années avec des nouvelles pattern, etc. Mais c'est que du bonheur :-)
Exactement. Je suis dev Scala principalement depuis 6 ans maintenant, et j'ai adoré Kotlin pour ça.
Le golang n'est pas orienté objet ni fonctionnelle, c'est un langage scripté, sinon je trouve que golang à un syntaxe encore plus simple que kotlin bien que similaires sur de rare aspects (ex: func en golang correspond à fun en kotlin).
Pour avoir fait du Scala, effectivement Kotlin semble chouette car reprendre ses avantages sans les aspects complexes.
Oui le problème c'est les derniers 2%. Pour des apps simple c'est effectivement très rapide et c'est pas un soucis. Et puis c'est pas une maîtrise de 80%, c'est une connaissance de surface de 80% qui ne tient pas dès que cela se complique un peu. Comme je le disait c'est pour du "code efficace, clair et bien structuré". Un dev java peu également être formé très rapidement, mais ne codera pas sans erreur (même si le code fonctionne dans son ensemble).
d'accord sur l'idée, mais pas sur le cas en question. La formation d'un dév Android sur Kotlin c'est très rapide pour mon expérience personnel et plusieurs de mes connaissances. Pour les 80% de la maitrise du langage moins d'une demi journée
Non c'est le fait de pouvoir utiliser x.length alors que le cast n'a été fait explicitement à aucun moment (x est défini comme "Any"). En Java, comme dans tous les langages à typage statique, il faut explicitement caster (String) x, même si on a explicitement checké que x était un String auparavant.
C'est juste le fait d'utiliser un "is"? Il n'y a pas ça en java?
Tous les commentaires parlent beaucoup de syntaxe, mais les changements syntaxiques ne sont pas la plus grosse différence par rapport à Java. Kotlin est un langage hybride OO/fonctionnel, c'est ce qui fait sa plus grosse valeur ajoutée. Comme Scala, Clojure, F# ou Swift. En fait, Kotlin est un peu un Scala-light. Ou plutot un Scala avec une approche plus pragmatique, moins académique (et moins complexe).
Voila un exemple: fun demo(x: Any) { if (x is String) { print(x.length) } } x peut être automatiquement casté en String puisqu'il est checké à la ligne au-dessus (et le compileur le sait)
Pour moi qui utilise Kotlin depuis un an pour mes dev Android et essaie de le faire adopter partout ou je passe, c'est en effet une excellente nouvelle. Ca va soulager les risques que ressentent les boites au moment d'adopter une tech "non-officielle", par définition risquée pour eux.
Réponse à un iTroll : non, ils vont arrêter le développement sur ios et ne faire que de l'Android. Bisous
C'est étrange comme les annonce ne sont pas vécu de la même façon, dans ma boite, certains trouvent cela génial (même des dev ios) alors qu'ici , mouais... sans plus :D Je sais pas si Swift apporte beaucoup plus mais les dev iOS sont hyper content de l'utiliser, bon en meme temps Apple ferait un caca qu'il le trouverais magnifique donc... pas vraiment tres objectifs.
Tellement raison...
Je suis plutôt dans l'univers .Net, mais j'ai jamais eu l'impression de perdre mon temps avec des ";", au contraire, ça permet de rendre du code plus lisible en le mettant sur plusieurs lignes si nécessaires. Sinon je sais pas ce qu'il veut dire par cast automatiques, mais, si c'est pour transformer directement des strings en floats, c'est pas vraiment une bonne nouvelle non plus.
omg JS! Pourquoi pas vb tant que tu y es.
Le Joe là !
XD
Il y a une trop grosse différence entre un for incrémental for (x in 1..10 step 2) et la version decrémentale for (x in 9 downTo 0 step 3) Enfin d'après moi, surtout que les compilateurs ne sont pas stupide for (x in 9..0 step -3) devrait pouvoir fonctionner sans problème. C'est juste mon avis. En plus si ça se trouve c'est le cas !
Non.
On pourrait te répondre si l'affirmation de base n'était pas fausse et un troll.
Sauf si j'ai un $ dans mon texte ^^ (troll je suppose qu'avec un escape cela doit-être considérer comme un $, je n'ai jamais utilisé Kotlin). C'est proche de golang niveau syntaxe?
Tu portes bien ton pseudo !
Non, les utilisateurs de la pomme considèrent normal de payer pour un travail alors que ceux d'android sont des crevards :p
Le logo Konbini on en parle?
for (name in args){ println("Hello, $name!") } Je trouve ça plutôt clean...
C'est sûr qu'on gagnerait certainement du temps, mais ont voit des nouveaux langages apparaître tous ans/mois/semaines? Si on change à chaque fois qu'on peut gagner 20% en relecture on perdrait bien trop de temps en formation. Il faut déjà plusieurs années avant de vraiment pouvoir concevoir un code efficace, clair et bien structuré dans un certain langage. Sinon je ne suis pas contre, il faut bien que les langages de prog évolue. Je soulignait plus le fait que Swift n'as pas forcement de si gros avantage sur Java.
Pour les développeurs, est-ce que ce Kotlin va dans la pratique changer leur habitude : développer d'abord sur iOS puis se contenter d'un portage sur Android ?
Auriez vous pu faire autant en 4 ans si le projet avais été écris en ... lisp par exemple ? J'en doute. Je suis d'accord que le java est un langage déjà pas mal et que la valeur ajoutée des nouveaux langages est plus faible qu'auparavant. Mais ne les sous-estimons pas quand même. Dans votre équipe, combien de temps passez-vous a relire du code ? Combien gagnerez-vous si cette relecture était 20% plus rapide car plus facile ?
Ça fait 4 ans que je suis ces projets. Le projet principale sur lequel je bosse est en java (serveur, pas pour android), le premier commit est de mars 2007 ^^
come on ... le JS est l'une des pire syntaxe du monde
La concision et la cohérence d'un langage avec la fonction pour laquelle il est utilisé n'apporte pas d'avantages sur le cours terme. Cela se voit sur des années, une fois que le projet dispose d'une base de code historique, qui reste gérable ... ou non.
Yep côté syntaxe, je susi pas fan non plus... J'aurais plus vu un truc plus proche du JS.. Il me semblait que le débat c'était re-déplacé vers Native vs Web like (PWA) plutôt que de savoir quel langage utiliser. Nb: Moi java j'aime bien :)
Clairement, la différence est assez peu technique, mais plus une confirmation de la part de Google que le Kotlin est une bonne chose, et ne sera pas bloqué pour une raison ou pour une autre du jour au lendemain, et l'adoption d'un autre langage (le Swift, par exemple) en remplacement du Java devient très peu probable.
Le Kotlin est nativement supporté par Android, sans changement au runtime. La seule différence se déroule à la compilation. Pour utiliser du Swift, ça aurait été beaucoup plus complexe. De plus, le Kotlin est déjà pas mal utilisé sur Android. Étant géré par JetBrains (la boîte derrière IntelliJ, lui-même à la base d'Android Studio), c'est très bien intégré.
Certainement parce que cela à était développer par Apple? De toutes façon c'est plus une hype ces nouveaux language. Comme c'est le cas avec Golang et les Micro-service en ce moment. Dans ma boite on une app qui est exactement la même sur Android et iOS (autorisation de transaction) et les durée de dév sont les mêmes sur Android et iOS pour une fonction donné. Niveau retour et bug il n'y en as pas non plus de différence. Certaine partie comme l'interface et l’interaction est souvent plus rapidement implémenté chez iOS. D'autre comme l'encryptage et les fonctions de sécurité sont généralement bien plus vite implémenté sous Android.
La syntaxe n'à pas l'air terrible. Le for est juste une catastrophe. Mais pourquoi ne pas utiliser swift ? C'est pas que je soit fan, mais bon ça à le mérite d'exister.
A noter que le copié/coller intelligent fonctionne déjà. En effet, le plugin nécessaire à Kotlin pour fonctionner dans Android Studio propose déjà cette feature. En fait, le seul changement technique de cette nouvelle, c'est l'intégration direct dans Android Studio 3 du plugin Kotlin, alors qu'avant il fallait l'installer à part. Si c'est un grande nouvelle, c'est surtout pour la visibilité et la reconnaissance du langage qui désormais n'est plus un langage de substitution comme il l'était avant.
heu, rien compris mais c'etait surement super intéressant...
Ce contenu est bloqué car vous n'avez pas accepté les cookies et autres traceurs. Ce contenu est fourni par Disqus.
Pour pouvoir le visualiser, vous devez accepter l'usage étant opéré par Disqus avec vos données qui pourront être utilisées pour les finalités suivantes : vous permettre de visualiser et de partager des contenus avec des médias sociaux, favoriser le développement et l'amélioration des produits d'Humanoid et de ses partenaires, vous afficher des publicités personnalisées par rapport à votre profil et activité, vous définir un profil publicitaire personnalisé, mesurer la performance des publicités et du contenu de ce site et mesurer l'audience de ce site (en savoir plus)
En cliquant sur « J’accepte tout », vous consentez aux finalités susmentionnées pour l’ensemble des cookies et autres traceurs déposés par Humanoid et ses partenaires.
Vous gardez la possibilité de retirer votre consentement à tout moment. Pour plus d’informations, nous vous invitons à prendre connaissance de notre Politique cookies.
Gérer mes choix