速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

NetBeans:Ruby 开发者的新伙伴

  • 2007-11-01
  • 本文字数:2986 字

    阅读完需:约 10 分钟

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.html http://www.netbeans.org/download/flash/jruby_editing/jruby_editing.html

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

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

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

2007-11-01 23:363353
用户头像

发布了 225 篇内容, 共 64.1 次阅读, 收获喜欢 50 次。

关注

评论

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

为什么说企业需要实施知识管理?

Baklib

ChunJun&OceanBase联合方案首次发布:构建一体化数据集成方案

袋鼠云数栈

【编程实践】详解MySQL在Python中的使用(1)

迷彩

Python MySQL 数据库 pymysql 9月月更

这些Java基础知识,诸佬们都还记得嘛(学习,复习,面试都可)

钟奕礼

编程 java;

Jmix 中 REST API 的两种实现

世开 Coding

Java Spring Boot Jmix 少代码 企业级开发

行走的Offer收割机!首次公布Java10W字面经,Github访问量破百万

Geek_0c76c3

Java 数据库 开源 程序员 面试题

如何查询已经执行过的流程信息?

江南一点雨

springboot workflow flowable

红海竞争下,「社交+」在中东泛娱乐 App 市场的出海新机遇

融云 RongCloud

白皮书 泛娱乐 出海

《软件开发的201个原则》思考:7.尽早把产品交给客户

非晓为骁

软件开发201原则

荣耀开发者平台全面升级,加强分发场景服务与能力开放

荣耀开发者服务平台

开发者 手机 安卓 荣耀 honor

开源技术公开课丨Taier工作流的介绍

袋鼠云数栈

Android 开发环境的搭建(Android Studio + 逍遥模拟器)

Android Studio 安卓开发 9月月更

APICloud可视化编程(二)

YonBuilder低代码开发平台

前端开发 APICloud 多端开发

好的,DFS,也学废了!

掘金安东尼

前端 9月月更

实用五步法教会你指标体系的设计与加工

袋鼠云数栈

面试中经常问到的几个问题,快来看看能答对几道吧(Java)

钟奕礼

java; 编程、

如何使用iMazing监督、配置器功能

淋雨

ios iphone

开源直播课丨高效稳定易用的数据集成框架——ChunJun类加载原理与实现

袋鼠云数栈

Redis进阶知识点(可学习,可复习,可面试)

钟奕礼

java; 编程、

[iOS研习记]聊聊iOS中的Mach-O

珲少

易观分析互联网+慢病管理生态洞察,助力行业升级

易观分析

医疗

他来了!袋鼠云大数据基础平台EasyMR正式上线

袋鼠云数栈

未来智安加入中国通信标准化协会成为全权会员

未来智安XDR SEC

聊一聊新陈代谢

Taylor

创新 新陈代谢

西部省份数字化需求暴涨 首届828 B2B企业节见证企业数字化新浪潮

科技热闻

信我,Java面试的苦只吃一次,看完这八股文合集,渣渣也能进大厂

钟奕礼

编程 java;

微服务框架搭建过五关斩六将—第一关(网关)

为自己带盐

微服务 网关 9月月更

开源项目丨ChengYing 1.1版本重磅发布:新增超多功能,全新优化体验!

袋鼠云数栈

模块一作业

知足🐏

实战案例,个个是经典,不愧是阿里P7私传“并发编程核心讲义”,竟能讲的如此通透

程序知音

Java 并发编程 多线程 高并发 后端技术

【云原生 | 从零开始学Kubernetes】十二、k8spod的生命周期与容器钩子

泡泡

Docker 云计算 云原生 k8s 9月日更

NetBeans:Ruby开发者的新伙伴_Java_Roman Strobl_InfoQ精选文章