【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

实战中学习浏览器工作原理 — 排版与渲染

三钻

CSS 大前端 浏览器

年度开源盛会 ApacheCon 来临,Apache Pulsar 专场大咖齐聚

Apache Pulsar

开源 云原生 Apache Pulsar 消息中间件

简述 CAP 原理

叶鹏

环信和阿里云签署云原生合作,携手共建云通讯“新基建”

DT极客

高难度对话读书笔记—情绪篇

wo是一棵草

常用设计模式

叶鹏

18 张图,一文了解 8 种常见的数据结构

沉默王二

Java 数据结构

整合Elastic-Job(支持动态任务)

TaurusCode

springboot SpringCloud 分布式任务调度 Elastic-job

技术译文|如何将 Pulsar 用作消息队列

Apache Pulsar

开源 云原生 pulsar Apache Pulsar 消息中间件

智谱AI首席科学家唐杰团队荣获国际数据挖掘顶会时间检验应用科学奖

DT极客

架构师训练营第7周作业

叶鹏

oeasy 教您玩转linux 010304 图形界面 xfce

o

从零开始搭建完整的电影全栈系统(五)——WEB网站、Api以及爬虫的部署

刘强西

爬虫 网站搭建 部署与维护

一个草根的日常杂碎(9月21日)

刘新吾

生活 现实纪录 随笔

前端如何优雅处理类数组对象?

pingan8787

Java 大前端

ECMAScript 6新特性简介

程序那些事

nodejs ES6 ECMAScript 6

两天,我把分布式事务搞完了

yes

分布式事务 seata

恶补,一文了解 8 种常见的数据结构

Java架构师迁哥

支付平台架构技术实现之终端安全

博文视点Broadview

架构 安全攻防 安全 支付系统 风控

架构师训练营12周作业

叶鹏

食堂卡就餐卡系统

叶鹏

架构师训练营第四周作业

叶鹏

Springboot 定时任务

hepingfly

定时任务 springboot 注解

一文学懂递归和动态规划!

小齐本齐

算法 数据结构和算法

小白理财先转变思维理念

boshi

理财 收入 财富自由

anyRTC云端录制功能上线

anyRTC开发者

WebRTC 语音 直播 RTC 安卓

架构师训练营第八周作业

叶鹏

用户密码验证函数

叶鹏

被我玩坏的git:除了之前的工作、当网盘用,还能这么玩

小Q

Java git 程序员 架构 开发

关于Java调用类的main方法

谷鱼

Java 包位置

Spring 5 中文解析数据存储篇-编程式事物管理

青年IT男

Spring5

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