2010-05-14 88 views
12

我剛剛得到了一部android手機,我很想開始編寫它! 然而,我不是一個大的Java粉絲,儘管我可以忍受這一點,但我想知道是否有合適的android虛擬機替代品。 我使用clojure做了一箇中型項目,但是從我讀過的評論中看,在android上運行時速度很慢。 scala怎麼樣?我讀過一些人在Android上做了實驗,它是否「足夠快」?學習曲線有多大?java上的替代品android

乾杯, 澤瑪麗亞

回答

4

有哪些讓你寫部分的C或C++編程的的NDK。

有ASE,它允許你用python或其他語言編寫腳本。儘管您可能會聽到其他聲音,但沒有python編譯器。

我已經讀了一些關於scala的內容,但是因爲我並沒有真正感興趣,所以我沒有注意。

+1

NDK目前僅爲ARM生成代碼。所以帶有其他CPU的設備被遺漏。像WeTab一樣。 – stesch 2010-05-16 21:26:53

4

絕對有不少人在Scala中進行Android開發。尤其值得注意的是,對於SBT甚至有一個plugin,這是Scala項目的首選構建器,具有Android特定的目標。

至於學習曲線,我不能爲Android開發本身說話,因爲我沒有這樣做。至於斯卡拉,你可以非常快速地工作,但學習語言的所有特性需要時間。你不需要需要來學習所有的特性 - 我看到人們幾乎沒有任何經驗寫非玩具程序 - 但有些人不能忍受不知道他們正在使用的語言的一些東西。

此外,很多Scala代碼非常具有說明性。例如,如果您查看SBT構建文件,它們大多是聲明性的。有些人因爲某種原因而非常沮喪。

我猜我想說的是,它主要取決於你如何去斯卡拉。至於速度,Scala代碼可以像Java代碼一樣快,但這可能要求避免更高層次的抽象,以換取更醜陋,但快速的代碼。儘管如此,這取決於你正在做什麼樣的計算。

3

Android 2.2增加了jit到虛擬機,這應該使加載Clojure程序更高效。 Clojure會生成很多小程序,在android程序啓動時需要一段時間才能加載。這應該可以通過enw android來緩解,儘管現在它已經不能忍受了。

+4

而Clojure代碼依賴於一個好的GC,這是達爾維克無法提供的。 JIT與否。 – stesch 2010-05-16 21:29:02

0

「足夠快」 - 您正在手機上運行應用程序,該應用程序與您期望的相關問題有關。

此外,java的表現也在不斷提高。但也運行你只是在Java編碼。 Google已經創建了一個採用java字節碼並將其轉換爲.dex(Dalvik Executables)的工具。Dalvik java所使用的VM實現已針對此平臺進行了優化。這意味着您可以使用像java這樣的高級語言進行編程,該語言提供了許多幫助類,這意味着您的工作效率會更高。

他們有一個NDK,但我相信你必須仍然有一個Java前端,並在必要時讓你的Java代碼調用NDK代碼。當你真的需要優化時,你幾乎只想寫本地代碼。很多java類(如java nio和opengl類)都只是直接使用硬件資源的低級調用的封裝。

我大概過了一段時間回答了你的問題。

0

還有Lua,你可以使用Corona SDK。