Connaissant assez bien le langage Java (pour le desktop, et dans une moindre mesure, pour Android), je souhaiterais néanmoins pouvoir m'affranchir des difficultés que je rencontre en ce qui concerne l'architecture et l'évolution de mes applications (entre autres, ma faible connaissance et appréhension des Design Pattern et le fait de reprendre chaque projet quasiment de zero).

Toutefois, il faut bien prendre garde au fait que je ne critique pas Java, mais ma conception et mon utilisation de la POO.

Je souhaiterais donc me tourner vers un langage plutôt fonctionnel, qui tourne sur la JVM (la version 8 devrait faire l'affaire, d'autant plus que, d'après ce que j'ai compris, les dernières versions de Java tendent à faciliter le développement sous les langages "oriéntés JVM" si je peux me permettre l'expression). Je pense déjà avoir quelques idées, mais je souhaiterais éventuellement bénéficier de retours d'expériences, notamment sur les points suivants :

  • Comme je l'ai souligné dans le titre, je souhaite utiliser le même langage pour le développement bureau et pour Android (mais ce n'est pas impératif)
  • Je souhaite aussi utiliser un langage dont l'utilisation sur Android n'impacte pas trop les performances, en tout cas au niveau de l'expérience utilisateur
  • Un langage fonctionnel de préférence, me permettant ainsi d'éviter facilement toutes les difficultés d'architecture que je rencontre dans un langage impératif et orienté objet


J'ai donc pensé, à priori au langages suivants :
  • Clojure : la prolifération de parenthèses ne me fait pas peur. J'ai même déjà essayé quelques scripts. Mais c'est au niveau de la performance que j'ai plus peur (d'après les remarques des développeurs du plugin android)
  • Ruby, notamment avec Ruboto. Idem, ce qui me gène davantage, c'est l'avertissement émis sur les performances. Même si il ne me semble pas fonctionnel.
  • Kotlin : bien que non fonctionnel, il semble avoir un faible impact sur la taille de l'application finale en tous cas, selon ce que j'ai pu lire
  • Scala: pourquoi pas ? Mêmes questions.


Si je devais me lancer maintenant, je choisirais plutôt Clojure, car fonctionnel. Après les seules questions que je me pose, vous l'aurez compris, concernent l'impact mémoire et la performance de l'application.