InfoQ

文章

NetBeans:Ruby开发者的新伙伴

作者 Roman Strobl译者 郭晓刚 发布于 2007年11月1日 下午11时36分

社区
Ruby,
Java
主题
工件和工具
标签
Netbeans

NetBeans是一个广受欢迎且功能强大的Java IDE,由Sun Microsystems在2000年开放源码。随着用户社区的增长,如今已成为行业中一个主要的IDE。在2007年,NetBeans开始将功能扩大到支持许多其他语言,包括Ruby在内。

在这个系列中,你会看到NetBeans为Ruby开发者提供的许多便利,其中一些特性还是其他IDE身上找不到的。我们还会谈到Ruby工具项目的一些背景,获取NetBeans软件的必要信息,如何配置IDE,以及如何为这个项目贡献力量。

为什么Sun投资于Ruby?

Sun Microsystems向Ruby如此大手笔地投入可能有些令人惊讶,毕竟Ruby作为一种语言与Java有所竞争。为了理解Sun的动机,我们需要把Java看作是一个平台。Java不仅是一门编程语言,还是一个虚拟机以及一整套API。与过去不同,如今的Java虚拟机(JVM)支持多种语言。JVM不再只是Java一家的事情,Sun在JDK 6中捆绑了Rhino JavaScript解释器也明确体现了这一点。

Sun认识到动态语言的价值——Java语言仍然是大型企业应用的最佳选择,但Ruby这类动态语言在特定领域中非常高效,例如原型验证、Web开发,或者粘合各种应用。在2006年,Sun雇佣了JRuby项目的主要开发者——Thomas Enebo和Charles Oliver Nutter——去进一步探索将Ruby集成到Java平台的不同方式。(JRuby是完全用Java编写的一个Ruby实现。)2007年6月发布的1.0版标志着JRuby项目达到了一个重要的里程碑。

使用JRuby,开发者可以得到Java平台的许多优势,比如访问Java API和方便的部署。Java平台存在着大量的类库(其中大多数是开源的),因此Ruby开发者如果在JRuby之上运行Ruby代码,就能够享受到直接访问这些类库的便利。JRuby能将Ruby带到之前不曾进入的领域。能想象在大型机上运行Ruby吗?JRuby使之成为可能。Java平台有许多解决伸缩性、安全、维护、部署等等企业应用问题的方案,同样由于JRuby,Ruby开发者也能够从中得益。

Sun总是通过NetBeans为它的各种技术提供工具支持,JRuby也不例外。即使你是纯粹的Ruby或者Rails开发者,对JRuby一点都不感兴趣,NetBeans仍然是一件合适的工具。NetBeans Ruby IDE用JRuby作为默认的运行时,但你可以在选项对话框中将JRuby换成原生的Ruby——只要告诉NetBeans你的Ruby安装在哪里。因此无论是想探索动态语言领域的Java开发者,还是对Java一点都不感兴趣的Ruby/Rails开发者,NetBeans都是值得尝试的。

NetBeans中Ruby支持的三大亮点

让我们先看看我觉得在NetBeans中开发Ruby极其有用的三项特性:

1. 无处不在的代码完成

“代码完成”是一个上下文敏感的弹出窗口,给用户提示一些最可能的方法、类或者模块。用户可以在编辑器中按下“Ctrl-Space”来调用它。代码完成是Java开发者们熟知并深为喜爱的——所有现代Java IDE都提供了这个功能。然而,对Ruby来说,实现一个完善的代码完成功能是一件困难的任务,因为在Ruby语言里类型是没有声明的。因此IDE采用推断的方法去猜测类型,并据此提供代码完成中的选项。

代码完成会随着你的打字而减少可选项的数量,直接回车就可以把选中的文字填到编辑器里。

你可以看到每个方法的模块,以及方法接受的参数。除了帮你快速地补完方法/类/模块的名称,代码完成还可以给你帮很多忙。其中很有用的一项就是代码完成会显示每个类、方法、模块、关键字等等的文档(RubyDoc)。

对于初学者和从其他语言迁移过来的开发者,近在指端的文档是特别有帮助的——你可以用代码完成功能一边开发一边学习API。这样去学习一门语言及其API,比起预先学会所有的细节的方式要友好得多。而且,许多开发者都喜欢边实验边学习,Ruby干净整洁的语言和API会让这个过程更加容易更加愉快。

代码完成在你输入Require语句的时候也能发挥作用:

NetBeans的代码完成还有一个很有用的特性,它支持正则表达式。除非你能记住正则表达式所有的符号组合,不然这个特性是很便利的“

类似地,如果你记不住一个$变量的名字和意义,或者%开头的转义代码,NetBeans会帮你:

我在这里仅仅介绍了一些基本的特性,代码完成还有很多很多办法让你日子过得轻松一些。在用NetBeans进行Ruby开发的时候,你绝对会发现Ctrl-Space是你最爱用的快捷键。

2. 图形化的Ruby调试器

多数Java开发者都离不开调试器。然而,Ruby的调试一直都是一大难题。NetBeans给Ruby提供了一个图形化的调试器,与Java调试器很相像。你可以在代码里插入断点,然后以调试模式运行程序,程序就会如愿在第一个断点处停下来。此时你可以观察各种视图,如本地和全局变量;你可以加入监视条件;查看调用栈;切换线程,等等。如果你把鼠标停留到代码中的任何元素上,该表达式的当前值就会被计算出来立即显示在你面前。

在上面的截图中可以看到,NetBeans还支持RHTML调试,你可以很方便地一步步检查RHTML页面。

3. Ruby重构和快速修补

重构Ruby代码一直都繁琐到令人痛苦:要想改一个方法名,你不得不把它出现的所有地方都改一遍。在NetBeans里这个过程被自动化了,你可以搜索任何方法/类/变量的使用情况,也可以调用重命名重构功能去修改元素的名称。下面是使用查找使用情况命令的一个例子:

重命名重构功能让你在一个专门的视图里修改所有引用:

NetBeans Ruby支持在以后的版本里,还会提供其他重构功能,包括提取方法、提取本地变量等等。

IDE有时候会检测到代码里的变量冲突,可能使代码不符合用户的意图。在这种情况下,IDE可以提供一个“快速修补”,让用户便捷地修正代码:

在上面的截图中,块变量和本地变量的名字相同,会导致代码出现副作用;于是IDE向你提供将变量改名的选项去解决这个问题。

这里只是NetBeans让你过得更加轻松的几个例子。我会在本系列的后续文章中继续介绍其他编辑功能。

从哪里获得NetBeans Ruby IDE

要获得NetBeans Ruby支持有几种方式。其一是访问NetBeans 6.0下载页面获取NetBeans完全版,里面已经包括了Ruby支持:http://dlc.sun.com/netbeans/download/6.0/milestones/latest

如果你只想安装精简版的Ruby IDE,你可以从这里下载:http://deadlock.netbeans.org/hudson/job/ruby

获取Ruby模块的还有一种方式是先安装基本的Java IDE,然后转到IDE中的插件管理器(Tools | Plugin Manager),让NetBeans从网上下载并安装各种模块。

目前,NetBeans Ruby支持还只是一个预览版。不过我们知道很多开发者已经在商业应用开发中使用它,还有很多Bug等着在最终版中修复。如果你发现任何Bug,请向NetBeans的 Issuezilla系统报告:http://www.netbeans.org/kb/articles/issuezilla.html

更多信息

你可以在Wiki页面上找到NetBeans Ruby支持的更多信息。

我们也录制了一些截屏录像,重点演示了各种新特性:http://www.netbeans.org/download/flash/jruby_on_rails/jruby_on_rails.htmlhttp://www.netbeans.org/download/flash/jruby_editing/jruby_editing.html

其他演示和教程请移步Ruby文档主页

在本系列的后续文章中,我们将讨论更多Ruby支持的特性,以及其他一些主题,比如如何影响这个项目和它的未来计划。与此同时,请务必试试NetBeans中的Ruby支持。如果你经常用Ruby开发,你会发现NetBeans正是你一直在寻找的IDE!

查看英文原文:NetBeans: Ruby Developer's New Best Friend

5 条回复

回复

ai 发表人 fan fan 发表于 2007年11月5日 上午12时32分
Re: ai 发表人 li Jiang 发表于 2007年11月5日 上午2时22分
功能很强悍的,赞一个 发表人 xie vincent 发表于 2007年11月5日 上午7时43分
期待 发表人 Jack Wang 发表于 2007年11月5日 下午7时26分
[分享]NetBeans IDE 6.0 Ruby 文档 发表人 Jerome Chen 发表于 2007年11月8日 下午9时3分
  1. 返回顶部

    ai

    2007年11月5日 上午12时32分 发表人 fan fan

    不就是个code complete么

  2. 返回顶部

    Re: ai

    2007年11月5日 上午2时22分 发表人 li Jiang

    无知者无畏

  3. 返回顶部

    功能很强悍的,赞一个

    2007年11月5日 上午7时43分 发表人 xie vincent

    下了安装几天,功能相当强悍,于是把 apatana delete了。 缺点就是速度有时有点慢,尤其不爽的是好像每次启动ide时都会重新索引,好耗时的

  4. 返回顶部

    期待

    2007年11月5日 下午7时26分 发表人 Jack Wang

    好像那个精简版一直没有发布一个稳定的版本,总是在不停的CI:)

  5. 返回顶部

    [分享]NetBeans IDE 6.0 Ruby 文档

    2007年11月8日 下午9时3分 发表人 Jerome Chen

    原文标题:NetBeans IDE 6.0 Ruby Documentation 原文作者:Sun 原文地址:http://www.netbeans.org/kb/60/ruby/index.html 译者:Ruby中文社区翻译团队 译文首发:http://ruby-lang.org.cn/forums/thread-1896-1-1.html 转载请保留本版权信息,违者必究!
    -------------------------------------------- Ruby中文社区 - http://www.ruby-lang.org.cn/

独家内容

开发者眼中的Android手机平台

在四月份的Beijing Openparty上,InfoQ中文站特邀编辑仝健对三位开发者进行了采访,请他们从开发者角度谈一下对Android的认识和感觉。

智能服务契约带来的巨大伸缩性

可伸缩性并不是无状态设计倾向假设的那个布尔值(译注:一般都认为无状态设计的伸缩性好,此处暗示布尔值为True)。Udi的团队使用服务契约来处理多维度的伸缩性问题,避免了二次失败。

使用NetKerne实现REST风格的ESB

Jeremy Deane对使用NetKernel来编写REST风格的ESB应用做了一番深入的研究。他详细地剖析了选择商业ESB应用的决策过程,以及最终如何使用NetKernel来实现该应用。

多个敏捷团队之间的版本控制

当多个敏捷开发团队在同一个代码库上进行工作时,如何在保证混乱最小化的同时,还能在每个迭代结束时拥有一个干净的、可发布的软件版本?Henrik Kniberg在本文中罗列出了在“Scrum and XP from the Trenches”迷你书中所使用的策略要点。本文并非为版本控制专家编写,而是为我们这些希望进行简单、有效的协作的人所准备的。

想快快喝下Google果汁——Guice吗?

依赖注入出现已经有一段时间了,很多团队都在重构自己的应用以利用DI。但这是一件麻烦的事情。在这篇文章中,Paul Hammant说明了如何将现存应用从单件嵌套设计转为完全成熟的DI设计。

Scrum实施情况调查之案例分析

前不久,InfoQ中文站上发表了一篇文章:Scrum在中国——企业实施情况调查实录,引起了激烈争论。在本文中,作者通过对调查实录中案例的分析诊断,探讨了敏捷开发方法的概念及应用。

Jim Marino与Meeraj Kunnumpurath专访:关于SCA和Fabric3

BEA发布了在WebLogic 10.3中支持的SCA技术预览版,它是以开源的Fabric3运行时为基础构建的。InfoQ对Jim Marino和Meeraj Kunnumpurath进行了专访,前者是BEA Systems的技术主管,后者是VocaLink的首席技术人员。我们就他们对SOA和SCA的看法,VocaLink实施SOA的方法和这个技术的关键优势进行了讨论。

Ruby调试器一览

在Ruby世界中流行着一个误解:Ruby没有调试器。这是明显的错误——Ruby不但有调试器,还有供调试器用的GUI和API。InfoQ仔细调查了Ruby世界中调试器的现状——发现Ruby的调试功能支持已经很好了。