zoukankan      html  css  js  c++  java
  • 原生IDE新军:JRuby阵营的RedCar,JavaScript阵营的Cloud9(自己写个IDE出来一定很复杂吧)

    除了Smalltalkers之外,动态语言程序员使用的工具和IDE等都是用底层语言编写的。但是是对于用户(例如开发者)来说,使用原生开发工具是大有裨益的。例如如果编辑器和IDE是原生的话,这就意味着开发者能够即时扩展他们的工具,而不需要在另外一种语言和平台上浪费时间。Java开发者现在有一大批Java原生IDE可供选择,而且均可以编写一些Java代码进行扩展。不过这种情况对于JavaScript和Ruby来说并不适用。 但是,两个新发布的IDE改变了这种现状:JavaScript原生IDECloud9和JRuby原生IDE RedCar

    Cloud9 - Javascript

    使用JavaScript和HTML编写编辑器和IDE在五年前还是一件很难想象的事情。但是在接下来的数年内,JavaScript VM变得更快,HTML的组件也有足够的能力构建复杂的编辑器。Mozilla程序员的编辑器Skywriter(前身是Bespin)就是使用Canvas元素和API来绘制的。

    项目最初的时候,Cloud9仅仅是重新组织了一下Eclipse的视觉元素,而且它也同样使用了Eclipse的插件思想。所有的功能都是由插件来完成的,包括编辑器,视图,行为等。JavaScript插件的一个好处是可以轻松处理JSON格式的元数据描述字符,让插件开发者省心不少。

    从功能上来说,现在讨论Cloud9还是太早了 - 至少和成熟的IDE相比。不过现在它已经有很多很方便的功能了。JavaScript Debugging已经支持GUI、Node.js脚本调试的连接器以及Chrome runtimes,并且在GUI中能够挂起,恢复和设置断点。这个特性的关键在于使用了JavaScript VM的内建调试器。

    Cloud9使用ACE作为编辑器组件。Skywriter使用Canvas和ACE来绘制编辑器以及操作DOM。编辑器的窗格是DIV元素;ACE能够决定在编辑器中哪些能够显示,把这些内容作为DIV元素渲染然后加入到编辑器的DIV中。ACE使用多层DIV来渲染编辑器中不同的元素,尤其是光标和选择高亮的实现。

    看起来现在的HTML渲染器和DOM已经足够强大,能够让ACE高速运行,给用户感觉是像一个原生的编辑器组件。

    对编辑器组件大有裨益的一个HTML5 API是Web Worker API,这个组件允许JavaScript代码能够新建JavaScript进程,而不是所谓的无共享的进程,它们之间的通信是使用JSON格式的数据。在程序员的编辑器中,在后台运行任务是非常重要的;每次敲击键盘或者操作都会产生大量的工作。使用正则表达式的语法高亮就是其中之一,但是,现代编辑器需要解析源代码来做语义高亮,例如,用不同颜色表示局部变量和全局变量,静态方法和虚拟方法等。其他的特性还包括代码折叠支持等。可以聪明地通过使用setTimeout来在前台线程中运行这些任务。Web工程师从而不需要破解内部结构,而能够直接在后台运行额外的任务,充分利用多核结构。

    虽然名字中带有云的概念,但是Cloud9还可以默认在本地安装和运行,并且可以访问本地文件系统。它在后端使用JavaScript编写的Node.js文件来通过socket进行通信。Node.js将文件内容封装成jsdav库所支持的WebDAV格式。

    Skywriter和Cloud9团队最近声称将兴趣放在协作和开发插件共享,特定语言功能等特性。要是这是真的的话,那就又避免了一场IDE战争。

    Cloud9 IDE博客提供了新版本的更新信息。GitHub是代码托管的好地方。Cloud9 IDE可以能够通过代码下载安装,在后端服务器运行Node.js和在浏览器中直接安装。

    RedCar - JRuby

    RedCar是一个可扩展的编辑器,以发展成为IDE为目标。它是使用Ruby,更准确的说是JRuby编写的。RedCar使用SWT作为GUI框架,这样使其能够跨平台使用。

    内建的REPL使得程序员能够通过API来探索和发现更多的功能,现存的插件能够帮助程序员更加简单地扩展系统。实际上,RedCar也能够使用HTML/JavaScript进行扩展,而不是仅仅只使用SWT组件或者绘图API。

    TextMate用户听到RedCar能够支持TextMate插件将会非常高兴,因为这将使得迁移工作更加轻松。

    对RedCar的深入介绍以及如何扩展之类的信息都可以在InfoQ对RedCar创建者Dan Lucraft的采访记录中找到。RedCar Twitter账户或者博客都是获取这些信息的好场所。RedCar还可以和Ruby Gem共存。

  • 相关阅读:
    C#遍历DataSet中数据的几种方法总结
    011_Eclipse中使用HDFSFileSystemAPI事例介绍
    011_用eclipse打开hadoop1.2.1源码出现The method getSplits(JobConf, int) is undefined for the type Object错误
    010_Hadoop配置测试成功后关机重启浏览器打不开dfs和MP
    09_Hadoop启动或停止的三种方式及启动脚本
    08_三大配置文件和五大守护进程
    07_Warning $HADOOP_HOME is deprecated.去除办法
    06_Hadoop配置伪分布式模式详解
    05_安装本地(单机)模式
    04_Apache Hadoop 生态系统
  • 原文地址:https://www.cnblogs.com/bmate/p/1877493.html
Copyright © 2011-2022 走看看