QCon 演讲火热征集中,快来分享你的技术实践与洞见! 了解详情
写点什么

动态语言 IDE:来自 Groovy-Eclipse 的新闻

  • 2008-12-26
  • 本文字数:2276 字

    阅读完需:约 7 分钟

这一条新闻属于我们有关动态语言 IDE 系列文章的一部分。第一篇是有关Ruby IDE 的,其他部分可以通过 DynamicLanguageIDEs 标签找到。

现在 SpringSource 已经收购了 Groovy 和 Grails 的幕后公司,Groovy 的普及率将进一步提高,并对 Java 开发者更具吸引力。

我们采访了 Groovy Eclipse 项目的领导 James Ervin ,询问了他们当前的工作情况:

目前由我和另外几个感兴趣的人一起开发这一 plugin。Guillaume La Forge 让我担当项目领导,因此我能够更新该 plugin 的官方版本,将已积累了一段时间的问题修复包含在内。我目前主要集中在稳定性、简化、定期发布版本并跟踪 JIRA 站点上的一些顶级问题等。例如,我正设法完成利用 Groovy 编译器中联合编译(joint compilation)能力(在需要的时候,委托 Javac 同时编译 Java 和 Groovy 的能力)方面的工作。这将解决那些涉及到附加二进制 groovy 目标目录的令人头疼的问题,以及用 Groovy 编写的代码与用 Java 编写的代码交叉依赖的问题。Michael Klenk 和他的小组在 Groovy Eclipse 对重构(refactoring)的支持方面做了许多卓越的工作。在我完成手头的任务之后,集成他们的工作将是我的首要任务。

Groovy-Eclipse 已经包含了 Groovy 实现因而并不需要一个外部 Groovy:

Groovy Eclipse 包含一个内嵌的 Groovy 运行时库,它本身是一个独立的 Eclipse plugin(或者按 OSGi 的说法,一个 bundle)。之所以这样,有以下几个原因:首先,一个内嵌的运行时可以让我们有机会使用 Groovy 编写该插件的部分内容。如俗话所说,这无异于“吃自己的狗食。”我更喜欢原始的表达,它更符合你的意愿,然而这却是一个友好的设置。其次,包含一个内嵌的运行时库,显然可以让用户跳过安装运行时这一步。最后,实际上是缺点,我们使用内嵌的 groovy 运行时来解析和编译项目中的代码。最后一点对我来说是痛处,我在“ Groovy Eclipse 路线图”中已做了说明。

看一下这个路线图,我们可以看到几个有趣的内容:

  • […] 提供至少一个支持 Grails 开发的基础层。我知道在提供 Grails 支持方面已经有一些现成工作了,但是我知道那是非常基础的那一类,Grails 还有很多东西强烈要求 IDE 予以支持。

  • […] 能够在 Eclipse Plugin 开发过程中使用 Groovy 语言。这实际上更多的是一个个人意愿,我认为对 Grails 的支持或我所罗列的其他各点将会影响更多的人。能够用 Groovy 来做越来越多地 Groovy Eclipse 开发工作还是非常好的,不是吗?我是这么认为的。这样做的部分结果是,我们可以尝试利用和改善对 EMF 的 Groovy 支持。

  • […]Groovy 编译器与 Eclipse JDT 支持能够更好地集成。我看到 Scala Eclipse plugin 中的一个例子,其中该项目把 Eclipse Java 性质增加进了该项目,但是 Java Builder 并没有增加进来。这就允许 Scala plugin 提供 Scala 工具来构建类文件。我想 Groovy Eclipse 应该具备相似的功能,既然 groovy 编译器现在也要编译 Java,那就更应如此了。

Groovy IDE 的其他实现一定也在努力解决类似的问题,你们之间有协作吗?

我已经参与了 GROCIDE 项目的若干讨论,这在我的 Groovy Eclipse 优先级列表中也被排在较高优先级。我们第一位的问题是本项目没有资源(即,工时,尤其是专职的),但是各个 IDE 支持工具可以共享许多东西。这是我们必须包含进来的,尤其是有这么多高人针对 Groovy 在 IntelliJ 和 NetBeans 工具支持上已经做出了不少卓越的工作,我们更应该这样做。 我欲做出如下总结。我在 Codehaus 上 Groovy Eclipse 项目的主页里增加了如下内容:

“Groovy Eclipse plugin 的目标是提升 Groovy 平台和生态系统,使其对工作于 Eclipse SDK 中的 Java 开发者来说,成为一个可行且高效的开发环境。”

这是尽我所能对我的目标所进行的臆测。今天,至少在北美,大量的 Java 开发是在 Eclipse SDK 上进行的。我想让 Groovy 兴旺起来,但是要做到这一点,我们必须为 Eclipse 做出一个非常好的 Groovy plugin!

至于 James 所提到的重构,我们采访了 Michael Klenk:

我们是从实现 Extract Method 重构功能开始着手的。在第一小步之后,我们开始实现其他的重构功能:Inline Method,重命名方法、变量、属性及类。我们还提供了一个源代码格式化工具以及一个支持开发者日常工作的层级视图。

你所提到的这些重构功能与手工操作(比方说重命名)相比有多好?

起先,查找并替换看起来是个不错的开始,但是程序中的名字通常是处于一个上下文中的,理解这一点非常重要。想象一下,如果写了两个方法,每个都声明了一个局部变量,且名字一致。用简单地查找和替换,你必须手工决定应该重命名哪一个变量。 另一个能证明重构多么智能的例子是:创建一个接口,它声明了一个抽象方法。现在这个方法在好几个类中都实现了。如果你要重命名这个方法,必须检查继承层次中的所有类,以找到应该做出改变的所有位置。

对于 Groovy 代码的抽象语法树的分析,可以让我们搜集到我们需要的所有相关信息。

这个列表给人的印象已经相当深刻了,这些特性将会包含在哪个版本中呢?

我们把所有这些重构特性都整合到 Groovy-Eclipse 项目开发主干中了。很快就会发布一个稳定版,届时所有开发者都可以使用这些重构特性。我们希望多数用户都使用这些重构特性并反馈改进意见。我们正在考虑实现的另一个比较酷的特性是,Java 和 Groovy 语言间跨语言的重构特性。

Groovy-Eclipse 的官方网站和专门的 Groovy-Eclipse 重构网站可以获得更多信息。

这一条新闻是我们有关动态语言 IDE 系列文章的一部分。其他部分可以在 InfoQ 的 DynamicLanguageIDEs 标签下找到。

查看英文原文: Dynamic Language IDEs: News From Groovy-Eclipse

2008-12-26 10:481718
用户头像

发布了 150 篇内容, 共 46.5 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

利用淘宝商品详情API(item_get_app)挖掘商品数据:券后价折后价优惠券、价格、销量、描述及SKU,构建精准竞品分析与推广策略

代码忍者

API 接口 pinduoduo API

我把 Github 今年最火 Java 面试题汇总扒下来了

采菊东篱下

编程 java面试

反问面试官:如何实现集群内选主

不在线第一只蜗牛

Linux 面试 运维

寻找 2300 名编程青铜一起写代码,学会就送包!

阿里云云效

阿里云 云原生

京东API深度解析:精准呈现商品全网价格数据于详情页

代码忍者

API 接口 pinduoduo API

淘宝商品详情数据接口(taobao.item_get)

tbapi

淘宝API接口 淘宝商品详情接口 天猫商品详情接口

交通行业怎么定义?需要用到堡垒机?

行云管家

交通 IT行业 IT运维 交通运维

面试中高级golang开发工程师岗位,会问到什么?

王中阳Go

Go 后端 面经

低代码开发平台,低成本快速搭建云MES系统

万界星空科技

低代码 低代码开发 生产管理系统 mes 万界星空科技

时序图是什么意思,怎么画?10个常用的时序图模板盘点!

职场工具箱

效率工具 UML 时序图 在线白板 绘图软件

项目管理人员职业规划指南

秃头小帅oi

走进北京科技大学,通义灵码与企业高校共筑 AI 创意课堂

阿里云云效

阿里云 云原生

Unity Grow 最新调研:45% 的 Z 世代表示游戏内广告会影响假日礼物选择

Geek_2d6073

夜莺 v7 最终版来了,可以上车了

巴辉特

夜莺监控

利用代理IP爬取Zillow房产数据

Yan-英杰

Python 后端 爬虫技术

Termius Beta for Mac(功能强大的SSH客户端)中文版

Mac相关知识分享

Sound Control for Mac(音量控制软件)

Mac相关知识分享

寻找 2300 名编程青铜一起写代码,学会就送包!

阿里巴巴云原生

阿里云 云原生

博睿数据登顶中国应用性能管理及可观测性APMO市场份额第一!

博睿数据

活动回顾 & PPT 下载|大模型背景下私域知识库的构建和可信问答 Meetup 完美收官!

可信AI进展

零信任赋予安全牙齿,AI促使它更锋利

权说安全

AI 网络安全 零信任

ERP系统怎么选?手把手教你选对ERP!

积木链小链

企业管理 ERP

Java如何解决同时出库入库订单号自动获取问题

EquatorCoco

Java oracle JVM

蓝队技术——Sysmon识别检测宏病毒

权说安全

网络安全

如何在低代码平台中高效实现CI/CD:从零开始到全面自动化?

天津汇柏科技有限公司

低代码

抛开偏见,一文全新认识低代码平台

武汉万云网络科技有限公司

走进北京科技大学,通义灵码与企业高校共筑 AI 创意课堂

阿里巴巴云原生

阿里云 云原生

SecureCRT for mac(专业的终端SSH工具)

Mac相关知识分享

电商数据探索:利用API接口获取淘宝关键词与店铺商品全攻略

代码忍者

API 接口 pinduoduo API

动态语言IDE:来自Groovy-Eclipse的新闻_Java_Mirko Stocker_InfoQ精选文章