Saya memiliki masalah perangkat lunak yang sesuai dengan pendekatan fungsional untuk pemrograman, tetapi target pasar akan berada di OS Android. Saya bertanya karena ada bahasa fungsional yang mengkompilasi ke VM Java, tetapi bytecode Dalvik! = Java bytecode.
Atau, apakah Anda tahu jika dx
utilitas dapat secara cerdas mengkonversi .class
file yang dihasilkan dari bahasa fungsional seperti Scala?
Sunting : Untuk menambah sedikit lebih banyak manfaat bagi komunitas, dan juga untuk membantu saya memilih yang lebih baik, dapatkah saya menyaring sedikit pertanyaan?
- Sudahkah Anda menggunakan bahasa alternatif dengan Dalvik? Yang mana
- Apa saja "gotchas" (masalah) yang mungkin saya hadapi?
- Apakah kinerja dapat diterima? Maksud saya, aplikasi masih terasa responsif terhadap pengguna.
Saya tidak pernah melakukan pengembangan ponsel, tetapi saya tumbuh dengan perangkat yang terbatas dan saya tidak beranggapan bahwa ada biaya untuk menggunakan bahasa yang tidak standar dengan platform. Saya hanya perlu tahu apakah biayanya sedemikian rupa sehingga saya harus menggunakan pendekatan saya ke bahasa default (yaitu menerapkan prinsip-prinsip fungsional dalam bahasa OOP).
sumber
Jawaban:
Ada posting blog oleh Christian Neukirchen yang disebut Programming for Android with Scala yang menunjukkan bagaimana membangun program Scala untuk Android. Tampaknya
dex
dapat menangani Scala, tetapi Anda perlu menggunakan alat seperti ProGuard untuk memotong pustaka kelas Scala ke ukuran karenadex
jika tidak akan mengimpor seluruh runtime Scala.Ada juga beberapa pekerjaan yang sedang berlangsung pada pemrograman Android dengan Erjang dan Clojure .
sumber
dex
setelah semua dioptimalkan untuk berurusan dengan tidak hanya Java bytecode tetapi juga konvensi bytecode Java (Anda akan melihat beberapa diskusi tentang ini di tautan yang saya berikan sebelumnya) - tetapi menargetkan VM Dalvik secara langsung. Dapat dibayangkan itu bisa menjadi lebih cepat dari padadex
rute Java .Kawa adalah varian yang indah tetapi sedikit diketahui dari Skema yang telah ada diam-diam selama bertahun-tahun dan berjalan pada JVM dan Dalvik, secara asli . Oleh karena itu, mirip dengan Mirah, outputnya tidak menyertakan VM tambahan dan hanya mencakup perpustakaan yang diimpor secara eksplisit. Kawa memiliki banyak makro standar (termasuk beberapa khusus untuk API Android) yang menghasilkan sintaksis bersih yang bagus (dengan asumsi seseorang tidak menolak tanda kurung), dan menambahkan beberapa barang lezat di atas Skema, seperti "janji" (eval dan masa depan yang malas) jadi satu). Bahasa ini cukup kuat dan terdokumentasi dengan baik, dan telah secara aktif dipelihara dan berkembang sejak masa awal Jawa.
Kalender Java Advent merangkum keunggulan Kawa dengan beberapa contoh dan tautan informatif.
sumber
Selain scala, saya dapat menyarankan Anda untuk melihat mirah di android, berikut beberapa detailnya: http://threebrothers.org/brendan/blog/strange-loop-2011-mirah-for-android-development/
Jadi apa yang membuat pendekatan ini 'lebih baik' daripada bahasa lain? Mirah adalah bahasa yang diketik statis dengan kemiripan dengan ruby. Yang memungkinkan untuk beberapa gaya fungsional bisa dibilang lebih baik daripada java. Biasanya 'porting' bahasa ke Android bermasalah karena Anda perlu port perpustakaan standar juga. Mirah menghindari ini dengan menghindari memiliki lib standar. Dalam materi yang direferensikan ada gambaran bagus dari pengalaman DUNIA NYATA menjalankan mirah di android dan bagaimana hasilnya. (coba 2)
sumber
Ada banyak gerakan di Clojure di Android ( https://github.com/clojure-android/neko ) Neko .
Ada masalah kinerja yang terkait dengan Dalvik VM dan Clojure Compiler; masalah ini perlahan-lahan diselesaikan.
Presentasi tentang status saat ini (Juli 2015): https://www.youtube.com/watch?v=mVXTcAEKgF8&index=9&list=PLZdCLR02grLoBx0Y5ZrpdmLxc160PIwzQ
sumber
Belum ada di sana tetapi Miguel de Icaza, seorang pria yang tahu satu atau dua hal tentang Davlik VM mengatakan, " F # untuk droid ada dalam daftar hal-hal yang harus dilakukan ." Jadi saya akan mengatakan paket resmi akan datang.
sumber