写点什么

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:363301
用户头像

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

关注

评论

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

Java面试题大全(2024最新版)1000+大厂面试题附答案详解

架构师之道

程序员 java面试

PTS 3.0:开启智能化的压测瓶颈分析

阿里巴巴云原生

阿里云 云原生 压测

Web3.0区块链技术全流程方案:DApp项目开发、推广以及运营

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

云桌面系统厂家-青椒云

青椒云云电脑

云桌面 云桌面厂家 云桌面方案 云桌面系统

陆海×微帧,在海洋卫星传输环境下的极限视频压缩

微帧Visionular

视频编码 视频压缩

教你如何用Keepalived和HAproxy配置高可用 Kubernetes 集群

华为云开发者联盟

开发 华为云 华为云开发者联盟

前端:Vue2.0和Vue3.0的一些入门对比

秃头小帅oi

前端 低代码 js Vue 3 vue2

蒋安祥:巴拿马奖项评选指南与规程赢得企业界广泛认可

Geek_2d6073

舞台LED显示屏与传统LED显示屏的区别

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏 舞台表演

追踪Jira中项目成本与工时,更符合国人使用习惯——TimeWise工时管理

龙智—DevSecOps解决方案

DevOps DevSecOps Atlassian

亚马逊云科技为派拓网络打造数字安全平台产品组合

财见

聚道云助力时尚巨头打通数据孤岛,实现全渠道管理升级!

聚道云软件连接器

案例分享

SD-WAN网络搭建技术:企业降本增效的首选

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

火山引擎弹性容器实例:从节点中心转型 Serverless 化架构的利器

Geek_2d6073

蜗牛游戏宣布利用AI技术提升其开发流程

财见

EMQX Enterprise 5.5 发布:新增 Elasticsearch 数据集成

EMQ映云科技

mqtt mqtt broker

超越传统:人工智能赋能的自动化测试新前景

测吧(北京)科技有限公司

测试

云桌面跟远程桌面有什么区别?

青椒云云电脑

云桌面 云桌面方案 云桌面系统

鸿蒙移动开发加速器何处寻?

Geek_2305a8

Hybird App开发,纯血鸿蒙系统快速助力兼容

Geek_2305a8

商品评价聚合:利用API从多个来源获取数据的详细指南

Noah

KaiwuDB 拿下 “物联之星” 双项殊荣

KaiwuDB

数据库 物联网

Udemy 上最受欢迎的免费编程课程

秃头小帅oi

php 学习 React 课程 java

SNZ资本的首席信息官Gavin确认出席Hack .Summit() 2024香港开发者大会!

TechubNews

云桌面哪家好用?

青椒云云电脑

云桌面 云桌面厂家 云桌面解决方案

开班在即 | 测试开发名企定向培养训练营,手把手带你提升核心竞争力!

测吧(北京)科技有限公司

测试

Supermicro 通过新基础设施解决方案,加速 5G 和电信云工作负载性能

财见

破防了,谁懂啊家人们:记一次mysql问题排查

阿里技术

MySQL 索引 问题排查 表结构

SD-WAN对金融行业的重要性

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

聊聊Java 类属性与类方法的应用

伤感汤姆布利柏

Java 前端

作为程序员,沟通能力是否重要?

小齐写代码

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