Groovy现在可运行在Android系统上了!

在最近的GR8Conf Europe 2014期间,SpringSource/Pivotal的Groovy高级软件工程师 Cédric Champeau已经在Andriod上完成一次Groovy代码的现场pull请求的合并。

专业领域包括成都网站建设、网站制作、商城网站定制开发、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,创新互联的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。

Groovy开发人员为了在Android上运行Groovy已经等待好几年了。因为各种困难,它的实现被推迟了,这包括Andriod Dalvik虚拟机的不同字节码和Groovy代码的动态特性等。官方对Android的支持可能在Groovy2.4版本。InfoQ采访了 Champeau,了解了更多的这方面的内容以及未来Groovy在Andriod系统中的发展。

Question:让Groovy在Android上工作,最困难的部分是什么?

实际上有多个问题,它们结合在一起使得这个工作变得有些困难。***个问题是Groovy是一个在运行时生成类的动态语言。问题是那些类是使用标准 的JVM格式生成的,而Android使用了自己的类格式(Dalvik VM)。Dalvik VM并不意味着运行时创建类,这样就变得很困难,因为每个使用标准JVM字节码的文件都需要通过'dex'工具加载处理。甚至你能够在设备上做到这些,运 行时加载类仍然是痛苦的。例如,在jar文件中写一个类,然后加载这个jar。***,我们决定这不是Groovy运行在Android上的主要关注点,我 们应该更关注用Groovy写一个完整的应用,不涉及运行时创建类。这意味着有一些限制,但是这对许多用户来说是不可见的。***,如果你在Android 上静态编译Groovy时,使用了@compileStatic,性能以及内存消耗相当于或者同Android原生应用相同。

第二个问题实际上是和系统构建相关。新的Andriod构建系统使用了Gradle和一个自定义的插件,"android",它绕过了正常 的"java"和"groovy"插件提供类似于应用程序变种的功能。这需要一些工作来弄清楚我们如果插入它来添加对Groovy的支持。令人欣慰的是自 从公布以后,Groovy的Gradle插件和Android已经发布,使得事情变得更容易了。***但并非最不重要的一点,我通过编写对Groovy的支 持了解了Android。这是一件好事情,因为我可以看到在哪些地方使用Groovy会让你受益,但是实际上这花费我更多的时间比适配Groovy本身!

Question:将来会考虑将这项工作扩展到iOS或者至少是Windows Phone来作为一中跨平台解决方案吗?

我肯定非常希望能在iOS上面看到Groovy的身影,但是我没有硬件设备去测试;)即使最近发布的Swift语言看起来与Groovy非常接近并且远远 比Object-C吸引人,人们仍然可以把它作为Groovy的一种替代。但是,我们还要考虑这样一个问题:Swift是由供应商封锁的闭源软件。相比之 下,Groovy则是完全开源的,如果你能在iOS和Android平台下用Groovy进行编码,举个例子来说,人们可能需要做的仅仅是重写他们应用的 UI部分就可以使他们的应用更适应大部分的手机开发。至于Windows Phone,我完全不知道这是否可行。实际上对于这个平台,我了解甚少。

Question:当前有哪些不足之处? 还有哪些是不能运行的?

 直到最近,仅仅@CompileStatic类能运行在Android上。但是现在也可以运行动态代码了,因此几乎所有的东西都能运行了,包括 构建器。应当知道,使用动态代码应限于应用程序的非CPU密集型部分,因为它涉及到反射。这就是说,当前的限制是不能运行时实时构建类,因此一些特定的结 构比如映射到类或者实时运行特征将不工作。欣慰的是有办法解决这些问题。***,在方法描述符的数量上仍然有问题。Andriod缺省的方法总量的限制是 65536,这相当的低,在无优化的情况下,Groovy将消耗8k(例如,ProGuard)。因此这意味着比通常的java应用程序更快的到达限制, 即使有方法可以解决这件事情(例如用multidex选项)。

Question:对将来Groovy/Android的发展有何规划?

CC: 官方对Android的支持会有***个测试版的Groovy2.4。目前,你已经可以将其应用于自己的应用程序,并且实际上在***个示例应用程序中,这已 经包含在产品中。([2])但是它仅是基于Groovy的一个快照版本。但我真的很想看看新的库或框架编写的Groovy是如何便利Android应用程 序的开发。Android非常啰嗦,Groovy则可以使编码更容易。为此,我们很多社区的开发人员已经写了大量的像这样的为Java开发的库,所以 Groovy的普及和发展只是时间问题。我相信一旦用户在Android上面体验到了Groovy,他们不太可能切换回Java;)

[1] https://github.com/melix/groovy-android-gradle-plugin

[2] https://play.google.com/store/apps/details?id=me.champeau.gr8confagenda.app

当前名称:Groovy现在可运行在Android系统上了!
本文地址:http://www.shufengxianlan.com/qtweb/news9/158859.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联