Developpez.com

Le Club des Développeurs et IT Pro

Google considérerait Swift comme un langage « de première classe » pour Android

L'OS mobile de Google pourrait-il basculer de Java à Swift ?

Le 2016-04-11 10:29:40, par Michael Guilloux, Chroniqueur Actualités
Un média US rapporte que selon ses sources, Google serait en train d’étudier la possibilité d’un système Android avec Swift, le langage de programmation multiparadigme d’Apple, comme un langage de « première classe ». Cela veut-il dire que Google envisagerait la possibilité de faire basculer Android de Java vers Swift ?

Pourquoi cela serait-il possible ? Cela fait maintenant six ans que Google est trainé devant les tribunaux par Oracle qui exige que le géant de Mountain View lui reverse des sommes énormes pour violation de droits d’auteur relatifs à des API Java. Ayant utilisé des éléments de base de Java dans son système d’exploitation mobile, Google est accusé par Oracle d’avoir copié dans Android « la structure, la séquence et l’organisation » de 37 API Java, sans autorisation. Les deux parties devront encore comparaître le mois prochain devant les tribunaux.

Pendant ce temps, Google a déjà commencé à explorer d’autres pistes pour ne plus être confronté à ce genre de situations à l’avenir. Pour les prochaines versions d’Android, le géant de la recherche en ligne a décidé de remplacer son implémentation des API Java par OpenJDK, la version open source du JDK d’Oracle. « Dans notre version d’Android à venir, nous avons prévu de retirer les bibliothèques du langage Java d’Android pour nous orienter vers une approche basée sur OpenJDK », a rapporté un porte-parole de la société en décembre dernier.

Si Google a donc décidé d’abandonner les API Java d’Oracle, pourquoi ne pas alors profiter pour se tourner vers Swift ? Dévoilé en juin 2014 au WWDC, le salon annuel d’Apple dédié aux développeurs sur Mac et iOS, Swift a rapidement gagné en popularité tendant à faire oublier Objective-C. De nombreux développeurs reconnaissent à Swift de rendre plus facile de construire des logiciels qui sont rapides et sûrs par conception. La montée en puissance du langage multiparadigme d’Apple est également observée au niveau des différents indices de popularité des langages de programmation (TIOBE, PYPL, RedMonk), alors qu’un analyste de RedMonk témoigne que « la croissance que Swift a connue est essentiellement sans précédent dans l’histoire de ces classements ». Également open source depuis décembre dernier, Swift semble encore avoir de très beaux jours devant lui, avec une communauté déjà dévouée.

Si Google officialise ses plans, il ne faudrait toutefois pas s’attendre à ce que la mise en œuvre soit effective de sitôt. Cela nécessiterait en effet une refonte complète de la plateforme Android, qui ne pourrait être implémentée que dans un moyen ou long terme. Il faudrait par exemple un runtime pour exécuter Swift sur Android, mais Google devrait également refaire entièrement sa bibliothèque standard pour supporter le langage de programmation d’Apple. Certaines API de bas niveau écrites en C++ ainsi que des API de haut niveau écrites en Java devraient être réécrites.

Cependant, faire de Swift le langage de base d’Android n’est pas une mission impossible. À la fin de l’année dernière, bien avant que Swift devienne open source, un développeur du nom de Romain Goyet est parvenu à faire fonctionner du code Swift sur Android en utilisant le kit de développement natif Android NDK. C’est donc une preuve que Google peut envisager une expérience au-delà de Java pour son système d’exploitation mobile open source.

Cette information ressort d’une réunion de discussion à Londres entre Google, Facebook et Uber à propos du nouveau langage d’Apple. Les deux autres entreprises, Facebook et Uber, envisageraient également de placer Swift plus au centre de leurs opérations.

Toujours dans la recherche d’un langage de première classe pour Android, Kotlin serait également ressorti dans les discussions internes chez Google. Kotlin est considéré comme un langage qui peut fonctionner partout où Java fonctionne. Il pourrait donc demander beaucoup moins de travail pour obtenir un langage autre que Java qui soit opérationnel pour Android. Comme Swift, Kotlin est orienté objet avec un accent sur la sécurité. En plus, il fonctionne avec Android studio, l’IDE officiel de Google pour le développement Android. Ce qui n’est pas le cas de Swift actuellement. Le problème, d’après les sources, est que Google estime que Kotlin est un peu trop lent lors de la compilation. La transition pourrait également être pénible pour les développeurs par rapport à Swift.

Source

Et vous ?

Que pensez-vous d’adopter Swift comme langage de base pour Android ? Qu’en est-il de Kotlin ?
Pensez-vous qu’il s’agisse d’une meilleure alternative que l’approche basée sur l’OpenJDK ?

Voir aussi :

Un développeur parvient à faire fonctionner du code Swift sur Android, en attendant la sortie de Swift sous licence open source

Bientôt le portage de Swift sur Android ? Un contributeur présente « le premier exemple d'une compilation croisée à l'extérieur de Darwin »
  Discussion forum
22 commentaires
  • GilbertLatranche
    Membre averti
    Envoyé par Mouke
    Quant à l'idée de proposer Js : Non. Déjà parce que niveau perfs y'a déjà des solutions C++ en Android, donc les perfs d'un pauvre langage de script hein. Ensuite Js ça reste un langage bricolé avec plein de défauts graves qui seraient une régression par rapport à Java : Js est mal documenté, Js est confus, Js est mal maitrisé, Js est pas facile à débugger, j'en passe les meilleures.
    +1.

    Les délires de la commu Javascript, ça va bien 2 minutes.
  • Mouke
    Membre confirmé
    Je suis pas convaincu de cette idée. Java possède l'atout d'avoir un écosystème ultra complet, d'être maitrisé et connu par ses utilisateurs. C'est un langage propre, qui impose la rigueur.

    Swift est un langage encore mal connu, trop jeune, sans un écosystème réel et sans intérêt autre que iOs d'un point de vue professionnel.
    La force d'Android, c'était qu'en utilisant Java, on pouvait très facilement apprendre les bases du dev' Android vu que Java est un langage déjà répandu, aussi bien en milieu scolaire que professionnel.

    Quant à l'idée de proposer Js : Non. Déjà parce que niveau perfs y'a déjà des solutions C++ en Android, donc les perfs d'un pauvre langage de script hein. Ensuite Js ça reste un langage bricolé avec plein de défauts graves qui seraient une régression par rapport à Java : Js est mal documenté, Js est confus, Js est mal maitrisé, Js est pas facile à débugger, j'en passe les meilleures.

    Donc personnellement je pense que rester sur une base Java/C++ c'est la meilleure option : Java pour les applications "classiques" avec toute sa force (rigueur, gestion de dépendances, puissance, écosystème, simplicité, performances par rapport à un langage de script), C++ quand l'application a besoin de grosses performances et d'optimisation (comme un jeu, par exemple), quand Java ne suffit plus.
  • marc.collin
    Membre émérite
    Ils vont passer à openjdk, il y a déjà un bon travail à faire de leur part et il pourrait ensuite passer à swift. Un autre changement.

    L'écosystème de Java est de très loin supérieur à swift, ne serait qu'en outils de dev, framework, librairie et nombre de développeur.
    Passer à swift c'est faire table rase de tout ça. Alors que passer à openjdk règle le problème à Oracle.

    Je doute fort qu'oracle est la somme demandé pour 37 api qui ne sont pas primordiale, le passage à openjdk semble s'est fait rapidement.

    Ne pas oublier que si Oracle gagnerait, c'est tout le domaine logiciel américain qui en souffrirait au niveau de l'interopérabilité
  • abriotde
    Membre chevronné
    Le but est de mettre la pression sur Oracle pour montrer qu'il perdrait plus que Google en perdant Androïd car Java, à part sur Androïd est en perte de vitesse.

    Mais non, Google ne passera pas sur Swift, il faudrait réécrire toutes les applications (outre le fait de réécrire tous le coeur Androïd)... c'est trop de travail. Par contre oui, Google passera sur OpenJDK ou C++ pour se libérer totalement d'Oracle. Le problème fondamental est que les "brevets" que revendique Oracle n'en sont pas vraiment ce sont des "idées" alors il y aura toujours une faiblesse. Et Google serait donc bien tenté de changer de langage mais il ne le peux pas.
  • bbalet
    Membre actif
    Go peut être cross-compilé pour Android et iOS.
    Très performant (environ 15%-20% par rapport à C).
    Implémente un ramasse-miette.
    Pensé pour la programmation concurrente.
    Et une refonte des API leur permettrait de se débarrasser de tout problème de procès.
  • archqt
    Membre émérite
    Ils auraient du faire comme BlackBerry, interface compatible Qt. Et description en QML. Cela aurait évité un procès, permis de faire du cross-plateforme. Free s'y est mis pour programmer la freebox. Après un "binding" vers un autre langage aurait été possible aussi.
  • Mouke
    Membre confirmé
    Envoyé par TiranusKBX
    c'est vôtre avis très bien mais le seul fait réel que vous citez est "Js est pas facile à débugger", le reste c'est de l'ordre de la querelle de cloché
    Je pense qu'il y aurait un débat intéressant à ouvrir sur ce point, et que j'aurais beaucoup à apprendre mais ce n'est pas l'endroit pour ce débat.
  • 23JFK
    Membre expert
    Le succès de swift c'est surtout l'absence de choix pour les développeurs sur Apple. Si google voulait vriament se débarasser de java, le groupe aurait les moyens de créer son propre langage maison... En fait, ils en ont déjà deux à leur actif : go et dart.
  • air-dex
    Membre expert
    Swift langage de première classe pour Android ou comment remplacer "Google vs. Oracle" par "Google vs. Apple". Google n'aurait ainsi pas retenu la leçon. Comme le dit bbalet c'est Go qu'ils doivent choisir, ne serait-ce que pour avoir une tranquillité juridique.
  • 23JFK
    Membre expert
    J'ajouterais que l'apparente clarté de swift me semble en grande partie due à sa jeunesse qui le préserve des pollutions induites par le "sucre syntaxique". Ça semble être une bonne idée pour les experts qui pissent du code depuis des lustres, mais pour un débutant, je pense que ça a tendance à compliquer inutilement la compréhension du code en lecture tant que toutes les variantes syntaxiques ne sont pas connues ; et depuis quelques années, chaque mise à jour majeur de java apporte son lot de sucre syntaxique à l'utilité douteuse.