2010-07-13 56 views
25

在完成了整個「企業」編程一段時間之後,我對語言本身非常失望,如果必須回去,總會覺得很困難。平均Android應用程序的項目規模並不太令人生畏,並且這些庫對於它們的編碼風格確實相當不錯,但是如果我能夠避免使用Java,那麼我肯定會這樣做。Android沒有Java

這就是問題:我能避免嗎?雖然在桌面和服務器上有很多JVM語言可供選擇,但Dalvik虛擬機和設備本身也有一些限制。在2.2版本中,這似乎更好一些,但將自己限制在最前沿將是一個相當苛刻的決定。

我知道的唯一的選擇有點似乎是Scala。有沒有可能我錯過了? Clojure似乎正好運行在我上面用Dalvik說明的問題上,但是由於AppInventor是建立在Kawa上的,所以在移動平臺上Lisp可能有希望嗎?

其他什麼語言已經可以使用或朝這個方向邁進?

+2

[我可以使用任何JVM語言爲android編程嗎?](http://stackoverflow.com/questions/3002566/can-i-program-for-android-using-any-jvm-language) – 2010-07-13 23:48:06

+1

這和其他討論提到了很多潛在的候選人。在Android上實現任何JVM語言並不難,實用性和性能是其他問題... – mhd 2010-07-14 03:30:06

+0

關於Oracle對Android的指控,從谷歌的角度來看,放棄Java和標記其他語言爲主要支持者之一? (也許我應該提出一個關於這個問題的真正問題,而不僅僅是評論。) – pcjuzer 2011-06-20 11:09:37

回答

14

就我個人而言,我會說斯卡拉是你現在最好的選擇。它工作得很好,其中一個缺點是你需要將Scala作爲依賴項(這會增加應用程序的大小)。

+4

使用ProGuard可以控制應用程序的大小。 – missingfaktor 2010-07-14 04:38:03

+0

@missingfaktor同意,apk大小的最後差異可以低至〜500Kb – 2013-03-23 13:13:18

1

This link有一些關於如何讓Android上的Scala應用程序工作的細節。我相信你可以爲clojure或其他jvm語言做類似的事情。

Ruboto的目標是帶來的JRuby英寸

9

有一些可能性,我失蹤?

他們的時間!

的Clojure似乎運行在正是我在前面已經有 的Dalvik

說明我沒有意識到這一點的 問題。任何作爲提前編譯器的JVM語言(即,在開發人員PC上生成Java字節碼)都應該與Dalvik協同工作。

但隨着AppInventor是建立在 川有可能是一個Lisp的希望寄託在 移動平臺

據我所知,App Inventor的只能用川代碼生成。

其他什麼語言已經 可用或大踏步前進?

那麼,有HTML5(Javascript),它可以在離線模式下正常工作。

或者,還有PhoneGap(HTML + CSS + Javascript)。

或者,還有Rhodes(設備上的Ruby中的Rails-esque應用程序)。或者,Titanium Appcelerator Mobile(HTML + Javascript,但帶有JavaScript鉤子來呈現本地UI小部件)。

或者,至少在Android 2.2及更高版本中有Flash。

或者,還有AIR ...好吧,那還是在預發佈階段。

正如Elfred在寫這篇文章時提到的,JRuby和Ruboto在一起。

有基岩,電暈,DroidScript,Flixel,MobiForms,MonoDroid,MoSync,Squeak和SuperWaba。

通過NDK有C/C++,但主要是將擴展庫添加到Java應用程序,而不是編寫完整的本地代碼應用程序。

有SL4A(以前稱爲Android Scripting Environment或ASE),它是您通往Python,Perl,Lua和其他腳本語言的入口。截至目前,您無法將這些腳本打包爲APK,但他們正在努力。

現在,這些都不會給你一個「常規」的Android應用程序的外觀。對於那些,你需要一個提前編譯的JVM語言。毫無疑問,沼澤標準Java Android應用程序的數量遙遙領先。但與一些阻礙這類事情的水果味操作系統不同,您有很多地方可以嘗試使用Android進行傳統Java編碼的替代方案。

一些禿頭的傢伙正在寫一本書,將審查所有這些選項,但現在只是部分準備就緒。

+2

現在我主要看「本機」應用程序。而我關於Clojure的信息可能有點老,但是我幾個月前在郵件列表上記得一些東西,那裏的啓動時間非常緊張。只需要在Dalvik/Android上運行並不困難,但很難推銷性能不佳的產品。 – mhd 2010-07-13 22:42:59

+1

「Clojure似乎正好運行在我上面用Dalvik說明的問題上。」Clojure的問題主要與糟糕的啓動時間,大量的開銷以及糟糕的JIT編譯器(與熱點相比)有關。 Clojure的功能特性也意味着它很大程度上取決於垃圾收集器,而Dalvik遠遠落後於Hotspot。 – technomancy 2011-03-28 17:30:13

11

你有沒有看着Mirah?它爲您提供類似Ruby的語法並編譯爲Java。它被標記爲Java的CoffeeScript。

+1

Mirah是理想的,因爲它增加了類型推斷和閉包等更多現代功能,但增加了零運行時開銷。看看Pindah:https://github.com/mirah/pindah一個幫助構建Mirah Android應用程序的小工具。 Dr. Dobbs對語言有很好的概述:http://drdobbs.com/java/229400307 – technomancy 2011-03-28 17:27:20

+0

@technomancy,對,但是你如何獲得IDE對此的支持? – Pacerier 2014-11-20 10:30:33

0

Xamarin Studio讓你在C#/ Mono中構建併爲Android和iOS構建應用程序。現在表示層必須在兩個平臺上以不同的方式實現,但爲了使用C#,這是一個很大的勝利。

1

DroidScript可能是上述用於Android開發的最簡單的開發工具之一。像Cordova一樣使用JavaScript,但與Cordova不同的是,您可以選擇使用原生Android GUI或HTML5來構建App界面。

此外,您還可以訪問所有設備的傳感器/硬件,而無需導入大量複雜的插件。此外,如果您需要(甚至可以構建APK並從設備發佈它們),您可以獲得在移動設備上實際開發的獎勵。

我會說它對初學者或原型製作非常好,但對於經驗豐富的開發人員來說可能不夠靈活。

0

我從來沒有使用它,但Kotlin是一種新的語言,它運行在由JetBrains(Android Studio製造商)開發的JVM上,值得一提。 Kotlin網站聲稱該語言與Java 100%互操作,並且有一個Getting started with Android and Kotlin的教程,現在Android Studio實際上帶有Kotlin支持。