没有Java的Android

mhd*_*mhd 26 lisp java android scala clojure

在完成整个"企业"编程一段时间之后,我对语言本身感到非常失望,如果我不得不回到它,我总是感到非常受阻.你的普通Android应用程序的项目大小并不太吓人,而且库的编码风格实际上相当不错,但如果我能避免使用Java,我肯定会这么做.

这就是问题:我可以避免吗?虽然桌面和服务器上有很多JVM语言可供选择,但Dalvik VM和设备本身也有一些限制.在JIT中2.2这似乎有点好一点,但限制自己到最前沿将是一个相当苛刻的决定.

我所知道的唯一替代方案似乎是Scala.我有可能失踪吗?Clojure似乎完全符合我在Dalvik上面所说明的问题,但由于AppInventor是基于Kawa构建的,因此移动平台上的Lisp可能有希望吗?

还有哪些其他语言可以使用或朝这个方向迈进?

dby*_*rne 14

我个人认为Scala是你现在最好的选择.它工作得非常好,但缺点是您需要将Scala包含为依赖项(这会增加应用程序的大小).

  • 使用ProGuard可以控制应用程序的大小. (4认同)

apg*_*apg 10

你看过Mirah吗?它为您提供类似Ruby的语法并编译为Java.它被标记为Java的CoffeeScript.


Com*_*are 9

我有可能失踪吗?

他们的吨!

Clojure似乎完全符合我在Dalvik上面所说明的问题

我不知道这个.任何JVM语言都是一个提前编译器(即在开发人员PC上生成Java字节码)应该与Dalvik一起使用.

但由于AppInventor是基于Kawa构建的,因此可能有希望在移动平台上使用Lisp

AFAIK,App Inventor仅使用Kawa进行代码生成.

还有哪些其他语言可以使用或朝这个方向迈进?

嗯,有HTML5(Javascript),它可以在离线模式下正常工作.

或者,有PhoneGap(HTML + CSS + Javascript).

或者,有Rhodes(设备上的Ruby中的Rails-esque应用程序).

或者,有Titanium Appcelerator Mobile(HTML + Javascript,但使用Javascript钩子来呈现本机UI小部件).

或者,有Flash,至少对于Android 2.2+.

或者,有AIR ......好吧,好吧,那还在预发布之前.

正如Elfred在写这篇文章时指出的那样,JRuby和Ruboto有关.

有Bedrock,Corona,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编码替代方案.

一些秃顶的家伙正在写一本书,将审查所有这些选项,但现在只是部分准备.

  • 现在我主要关注"原生"应用程序.我关于Clojure的信息可能有点陈旧,但我记得几个月前邮件列表上的内容,启动时间非常令人望而却步.只是在Dalvik/Android上运行一些东西并不难,但很难卖掉那些表现不佳的东西. (2认同)