找回密码
 创建账号

QQ登录

只需一步,快速开始

查看: 2073|回复: 2

[新闻快讯] Groovy 现在可运行在 Android 系统上了!

  [复制链接]
  • TA的每日心情
    慵懒
    2024-8-18 14:29
  • 签到天数: 179 天

    连续签到: 1 天

    [LV.7]雪女

    发表于 2014-6-11 10:10:20 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有账号?创建账号

    ×
    在最近的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系统中的发展。


    InfoQ:让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本身!


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


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


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


    本文转自:开源中国社区 [http://www.oschina.net]
    本文标题:Groovy 现在可运行在 Android 系统上了!
    本文地址:http://www.oschina.net/translate/groovy-android
    参与翻译:地狱星星, 0x0bject

    英文原文:Groovy Now Runs on Android


  • TA的每日心情
    慵懒
    2 分钟前
  • 签到天数: 3121 天

    连续签到: 62 天

    [LV.Master]酒吞童子

    发表于 2014-6-11 10:40:07 | 显示全部楼层
    不知道groovy是什么
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-7-15 08:50
  • 签到天数: 256 天

    连续签到: 1 天

    [LV.8]荒川之主

    发表于 2014-6-11 12:35:28 | 显示全部楼层
    这是个不错的消息
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 创建账号

    本版积分规则

    Archiver|手机版|小黑屋|iYa.App 软件交流社区

    GMT+8, 2024-11-22 00:30 , Processed in 0.027494 second(s), 18 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表