J'ai un problème logiciel qui correspond à l'approche fonctionnelle de la programmation, mais le marché cible sera sur le système d'exploitation Android. Je demande parce qu'il existe des langages fonctionnels qui se compilent sur la machine virtuelle de Java, mais Dalvik bytecode! = Java bytecode.
Alternativement, savez-vous si l' dx
utilitaire peut convertir intelligemment les .class
fichiers générés à partir de langages fonctionnels comme Scala?
Edit : Afin d'ajouter un peu plus de serviabilité à la communauté, et aussi pour m'aider à mieux choisir, puis-je affiner un peu la question?
- Avez-vous utilisé d'autres langues avec Dalvik? Lesquels?
- Quels sont les "problèmes" (problèmes) que je pourrais rencontrer?
- Les performances sont-elles acceptables? Par cela, je veux dire que l'application se sent toujours sensible à l'utilisateur.
Je n'ai jamais fait de développement de téléphones portables, mais j'ai grandi sur des appareils contraints et je ne me fais aucune illusion qu'il y a un coût à utiliser des langages non standard avec la plateforme. J'ai juste besoin de savoir si le coût est tel que je devrais appliquer mon approche dans le langage par défaut (c'est-à-dire appliquer les principes fonctionnels dans le langage POO).
la source
Réponses:
Il y a un article de blog de Christian Neukirchen intitulé Programmation pour Android avec Scala qui montre comment créer des programmes Scala pour Android. Il semble
dex
pouvoir gérer Scala, mais vous devez utiliser un outil comme ProGuard pour réduire la bibliothèque de classes Scala à la taille, cardex
sinon, vous importerez l'intégralité du runtime Scala.Il y a aussi des travaux en cours sur la programmation Android avec Erjang et Clojure .
la source
dex
est après tout optimisé pour traiter non seulement le bytecode Java mais aussi les conventions de bytecode Java (vous en verrez une discussion dans les liens que j'ai fournis plus tôt) - mais le ciblage directement la VM Dalvik. En théorie, cela pourrait finir par être plus rapide que ladex
route Java .Kawa est une variante charmante mais peu connue de Scheme qui existe silencieusement depuis de nombreuses années et fonctionne à la fois sur la JVM et sur Dalvik, nativement . Par conséquent, à l'instar de Mirah, sa sortie n'inclut aucune machine virtuelle supplémentaire et inclut uniquement des bibliothèques explicitement importées. Kawa a beaucoup de macros standard (y compris certaines spécifiques aux API Android) qui font une belle syntaxe propre (en supposant que l'une n'est pas opposée aux parenthèses), et ajoute quelques goodies savoureux en plus de Scheme, comme "promesses" (évaluation paresseuse et futurs dans une). Le langage est assez robuste et bien documenté, et a été activement maintenu et évolue depuis les premiers jours de Java.
Le calendrier de l'Avent Java résume les mérites de Kawa avec quelques exemples et liens informatifs.
la source
À côté de scala, je peux vous suggérer de jeter un œil sur mirah sur android, voici quelques détails: http://threebrothers.org/brendan/blog/strange-loop-2011-mirah-for-android-development/
Alors, qu'est-ce qui rend cette approche «meilleure» que les autres langues? Mirah est un langage typé statique ressemblant au rubis. Ce qui permet un style fonctionnel sans doute meilleur que java.Généralement, le `` portage '' d'une langue vers Android est problématique, car vous devez également porter la bibliothèque standard. Mirah évite cela en évitant d'avoir une bibliothèque standard. Dans le matériel référencé, il y a un bon aperçu de l'expérience REAL WORLD avec Mirah sur Android et comment cela s'est avéré. (essayez 2)
la source
Il y a eu beaucoup de mouvement sur Clojure sur Android ( https://github.com/clojure-android/neko ) Neko .
Il existe des problèmes de performances liés à la machine virtuelle Dalvik et au compilateur Clojure; ces problèmes se résolvent lentement.
Une présentation sur l'état actuel (juillet 2015): https://www.youtube.com/watch?v=mVXTcAEKgF8&index=9&list=PLZdCLR02grLoBx0Y5ZrpdmLxc160PIwzQ
la source
Ce n'est pas encore tout à fait là, mais Miguel de Icaza, un gars qui sait une chose ou deux sur la machine virtuelle Davlik, dit " F # for droid est sur leur liste de choses à faire ." Je dirais donc qu'un paquet officiel arrive.
la source