JavaScript Eclipse 插件助您一臂之力,提高 JavaScript 生产力指日可待
JavaScript Development Toolkit(JSDT)是一种开放源码插件,它将健壮的 JavaScript 编程工具引入到 Eclipse 平台中。JSDT 使开发更加流畅、简化了编码并提高了纯 JavaScript 源文件和 HTML 内置的 JavaScript 的生产力。
JavaScript 开发并不容易。浏览器兼容性参差不齐、文档非常糟糕、工具贫乏,这些因素使问题进一步恶化。幸运的是,随着最近针对 Eclipse 的插件集 JavaScript Development Toolkit(JSDT)的发布,工具匮乏的局面有望得到改善。
Eclipse 是一个开源的 IDE 框架,具有提高扩展性和灵活性的架构。JSDT 作为插件在 Eclipse 中运行。在 Eclipse 中,JavaScript 并不是什么新鲜的概念,因为已经可以从其他插件获得 HTML 和一些 JavaScript 支持,但是 JSDT 的独特之处在于其所提供的工具的健壮性和复杂性,这可显著提高 Web 开发的生产力。
JSDT 提供的许多特性和核心设计都可以在 Java Development Toolkit(JDT)中找到。JSDT 将要代替 Web Tools Platform V3.0 发行版中当前的 JavaScript 编辑器。
IDE 和 JavaScript
您可能想知道为什么 JavaScript IDE 会如此流行。随着 Web 2.0 的流行以及大量开发人员都热衷于在博客和社区页面中使用 JavaScript,大量新的 JavaScript 工具不断出现。尽管如此,Notepad 和浏览器的 Refresh 按钮仍然是大多数程序员首选的 JavaScript 开发环境。
问题在于 JavaScript 语言的解释性。与 Java™ 或 C 语言不同,JavaScript 是一种松类型的语言,并且很难实现精确建模。对于较为正式的语言,需要优先考虑已编译代码的效率,并且对语言的灵活性有所限制。JavaScript 的目标则不一样。各种因素试图分化趋向同一个平台的开发人员,这导致了语言的不一致性。从工具和开发的角度来看,这些不一致性使问题更加复杂。
浏览器并不是惟一的问题。面向对象的 JavaScript 是一种补充而不是关注的焦点。Ajax 工具箱努力使 JavaScript 朝面向对象方面转变 — 但是各自采取不同的方式。这可能会使标识对象和类结构变得很困难。这种语言有几个严重的漏洞,程序员利用它们实现一些使用其他方式难以实现的技巧,这使问题更加严重(或者更好,取决于您询问的对象)。其中一个例子是将主要的代码块封装到一个 evalf(..)
函数中,使它只在运行时有效。我们目前仍然在克服这个问题,以便在 JSDT 中精确建模。
现有的 JavaScript IDE
目前可以使用一些并不完整的 JavaScript 工具。但是很多流行的工具还不能提供真正的上下文感知内容帮助,因为它们缺少真正的 JavaScript 语言建模机制。在模型较少的 IDE 中,通过使用静态平面文件列出可用的类型,可以实现内容完成和工具功能。这些类型根据输入的部分字符动态调整,并且通常不会选择代码中定义的对象成员。内容完成对上下文不敏感,因为如果没有模型的话,可实现的功能将受到很大限制。
如果没有语言模型,则很难或者不可能将代码放入到上下文中。由于很多编程元素都依赖于代码的上下文,因此使用工具建立上下文十分重要。缺少模型和代码上下文的 IDE 同样也会缺少充分的类型解析和验证、作用域、可视性,或者其他任何对简化开发非常重要的良好验证功能。
JSDT 设计
图 1. JSDT 语言抽象栈
JSDT 对 JavaScript 语言建模并实时隐含类结构,这通过一种全新的方式来实现。首先,构建基本的语言元素。其次,推理引擎或引擎帮助填补所有类结构和语言差异。
基本语言模型
可以将推理和建模流程看作一个操作栈。模型的开始部分是 JavaScript 源代码。通过使用类似 Eclipse JDT 的引擎,将源代码转换为私有的语言模型。语言的纯模型遵守 ECMA-3 标准。
类型和类推理
对 JavaScript 语言建模后,下一步是管理类型和类推理。许多基于 JavaScript 的工具箱(例如 Dojo、Rico、Prototype)通过自己的技术使 JavaScript 面向对象编程更加方便。JSDT 使用定制的、工具箱感知的推理引擎在工具箱内部识别类和类型结构。这些类和类型随后可以添加到语言模型中。
公开模型
最后,将私有模型及其推理部分转换为公共语言模型。公共语言模型可用于源代码、重构和 as-you-type 工具。如果其中一种工具需要修改一些 JavaScript 源代码,就得先在公共模型中进行修改,并最终转换到 JavaScript 源代码。
管理变量和成员作用域
即使语言模型为描述 JavaScript 源代码和上下文提供了基础,还需要另外一个重要因素:环境上下文。JSDT 必须在运行 JavaScript 的全局作用域时建立可用的变量和类型。这些变量和类型根据 JavaScript 的运行时环境而有所不同。当 JavaScript 在 Web 浏览器上下文中运行时,对象、类型、表示屏幕数据的字段以及浏览器对象在全局作用域中都是可用的。如果代码是针对其他内容而不是浏览器,那么整个对象集可能会不同。
图 2. JSDT 库配置
JSDT 使用库机制管理项目中的通用对象、变量和类型。可以将库添加到项目中,以提供特定于用户目标运行时环境的对象和变量集。如果存在两个定义冲突成员的库,则在相应的用户接口中聚合并注释这些成员。这有助于创建在浏览器或环境之间通用的方法。
为流行的浏览器预打包库非常简单。库被捆绑在一个插件中,该插件包含有定义对象和类型的 JavaScript 源文件。当 JSDT 对源代码编辑器中打开的文件进行建模时,它首先对文件的源代码建模,然后将项目的库集合中的所有源文件添加到模型。库源文件永远不会进行验证,只用于定义对象结构、附加在悬浮式帮助和内容完成中可见的 JsDoc。
虽然库的主要功能是管理 JavaScript 的运行时上下文,但是它还提供了另一个重要特性 — 处理源文件交叉引用。纯 JavaScript 不具备显式的 include 函数。开发人员的一个不良习惯就是将函数散布到多个源文件中。库配置页面可以帮助管理源文件之间的交叉项目可见性。如果某个项目文件夹被标记为一个源文件,那么该文件夹中的所有 JavaScript 将包括在全局作用域中。使用 exclude 模式可以限制文件夹。
工具
撇开较高层的设计不谈,我们仔细看看这些特性。JSDT 的一些可视性较弱但非常重要的特性包括:相同文字突出显示、自动闭合大括号(以及圆括号、引号)以及自动缩进等。因此可以说,“只要是良好 IDE 应该具备的,JSDT 都提供支持”。
图内容帮助
图 3. 内容帮助
内容完成可以通过 Ctrl+Space 键任意调用。图 3 展示了内容帮助调用文档对象。内容完成对上下文敏感,并且基于全局作用域和 JavaScript 模型。完成条目显示字段名、字段类型和字段的声明类型。
检测和纠正错误
如果 IDE 可以主动确定代码错误,它将非常有用。JSDT 可以检测三种主要错误类型:语法/语言错误、类型/字段/方法可视性、流或逻辑错误。所有的错误警告级别都可以通过首选项页面进行单独配置。
图 4. 未解析的方法
JSDT 试图解析对象的所有字段和方法。未解析的方法则标记为错误。
图 5. 语法错误
JSDT 还可以查找并标记语法错误。下面的 for()
语句丢失了一个分号。
图 6. 流分析
图 6 演示了流分析。由于 return
语句后面的所有代码都不能执行,因此将其标记为错误。
图 7. 快速修复
一些错误具有快速修复选项。在图 7 中,当用户单击未解析变量 formyValue
旁边的错误标记时,JSDT 将显示一些纠正错误的选项。
代码格式化
源代码有时会混乱。您可能期望易于阅读、结构良好、格式化良好的代码。这就需要在进行开发和调试时对代码进行格式化。JSDT 支持许多 as-you-type 格式化特性,比如可配置自动缩进和字符成对匹配。这些特性都有助于加快开发和提高可读性。
如果您收到的代码非常混乱,该怎么办?只需要单击一下鼠标,JSDT 代码格式化程序就可以整理并重新格式化混乱的 JavaScript 代码。格式化引擎是高度可配置的,因此可以导出配置供团队共享。
其他 JSDT 特性
上面列出的仅是 JSDT 支持的特性的一部分。下面列出非常简单但必须具备的 JSDT 特性:
- 语法突出显示
- 折叠/行号
- 完整描述、显示类、函数和字段
- 突出显示并检查大括号/圆括号匹配
- 自动完成大括号、圆括号和缩进
- 标记出现位置
- 注释切换(行或块)
- 生成元素 JsDoc
- 用 do,for,try/catch,while 包围
- 用户可配置的完成模板
- 提取函数/修改函数签名
- 缩排纠正
- 打开声明
- 开放类型结构
- 开放调用结构
- 可定制的代码格式化
- 全搜索
- 重构/重命名/移动
- 断点支持
- 使用 JsDoc 为 Firefox、Internet Explorer 和 ECMA-3 定义浏览器库
- 通过 JsDoc + JavaScript 原型定义支持用户定义的库
- 库映像支持
- ATF Project 提供的调试支持
结束语
如果需要一种免费的 Web 开发环境,请选择 Eclipse。由于新增了 JSDT,Eclipse 的 JavaScript 能力超越了市场上其他同类产品。开放源码项目促成了 JSDT 的快速发展,JSDT 将像 JavaScript 一样快速地演进。
参考资料
学习
获得产品和技术
讨论
关于作者
|
|
|
Bradley Childs 2004 年毕业于 Texas A&M University。他在 IBM 从事中间件开发,后来又转到新兴技术方面。他和 Phil Berkland 密切合作开发 JSDT。他在 Ajax Tooling Framework 项目社区中非常活跃。
|
http://www.spitv.net
http://goku.spitv.net
http://sxin99.com
posted @
2008-07-18 22:58 GoKu 阅读(1914) |
评论 (5) |
编辑 收藏
下面是最新一期的Web服务器排名,其中Nginx已经上升到了第四位,太牛X了
Vendor | Product | Web Sites |
Apache |
Apache |
84,309,103 |
Microsoft |
IIS |
60,987,087 |
Google |
GFE |
10,465,178 |
Unknown |
Unknown |
4,903,174 |
nginx |
nginx |
2,125,160 |
Oversee |
Oversee |
1,953,848 |
lighttpd |
lighttpd |
1,532,952 |
Other |
Other |
1,150,202 |
GNR |
GNR |
425,029 |
Zeus |
Zeus |
405,724 |
IdeaWebServer |
IdeaWebServer |
382,524 |
Sun |
Sun-ONE-Web-Server |
349,704 |
Apache |
Coyote |
338,376 |
Resin |
Resin |
321,746 |
Jetty |
Jetty |
259,558
|
http://www.spitv.net
http://goku.spitv.net
http://www.sxin99.com
posted @
2008-07-06 15:15 GoKu 阅读(2665) |
评论 (4) |
编辑 收藏
今天MyEclipse发布了6.5正式版
Updates for MyEclipse include:
- Maven support (Maven4MyEclipse)
- MyEclipse Spring Tools update (to Spring 2.5)
- Portlet/Portal support
- improvements to the visual JSF/Facelets tool set
- JAX-WS Web Services
- update to MyEclipse Hibernate Tools
- UML tooling upgrades
- more。。。
下载地址:http://www.myeclipseide.com/module-htmlpages-display-pid-4.html
另外还有
Blue Edition: ALM & Open Source for WebSphere
MyEclipse is proud to announce availability of MyEclipse 6.5 Blue Edition as well. This release introduces a new standard of ALM management and open source capabilities for WebSphere.
依然没有Struts2,下个版本可能会支持Eclipse3.4了
http://www.sxin99.com
http://www.spitv.net
http://goku.spitv.net
posted @
2008-06-27 15:19 GoKu 阅读(2270) |
评论 (3) |
编辑 收藏
最近学了一些PHP和Ruby的东西,忽然想把这些东西应用做个比较.
首先,我们把Java .Net PHP应用方面占有率做个比较,简单的把目前主流应用分成两个大类,一个是企业应用,一个是Web网站应用,下面这个表格是我归纳的,不一定准确,但是能说明一个大概.
应用 / 语言 |
Java |
.Net |
PHP |
大型企业应用 |
多 |
少 |
少 |
中型企业应用 |
多 |
中 |
少 |
小型企业应用 |
中 |
中 |
少 |
大型Web应用 |
多 |
少 |
中 |
中型Web应用 |
中 |
中 |
多 |
小型Web应用 |
少 |
中 |
多 |
从表中可以看到,Java和PHP都有各自擅长的领域,但是.Net却没有突出的地方,从占有率来看情况十分尴尬.
我们再来看看技术方面,首先声明,我对其中每种语言技术都不是很熟悉,只能大概分析一下...
先说说Java,在企业级方面,可以说是绝对的老大,许多企业级技术,开发思想都是由Java发展出来的.缺点是Java开发部署比较麻烦 ,不太适合超小型的项目.
再说.Net,在1.x时代,.Net可以说基本上没有多少企业级开发的特性,到了3.0,微软各种框架技术虽然弥补了这些不足,但是相对于Java世界,还是有一定距离. 在Web网站方面,.Net服务器控件的优势,变成了弱势,由于服务器空间产生垃圾代码,并且不方便美工调整,导致在前台界面要求较高的门户站点难以使用(虽然有第三方MVC框架,但是没有IDE支持,体现不出.Net的优势)
再说说PHP,他的定位非常明显,就是Web开发,所以有很多适合Web开发的特性,比如部署十分简单,几个文件随便找个虚拟主机扔上去就能运行.在国内因为Discuz , DedeCMS等著名产品的鼎立推广,PHP在中小型网站开发中有很大的优势.,最近大量的开源框架出现,给PHP企业开发注入了一些生命力,可以说潜力十足.
综合以上我们可以看到,.Net定位不太明确,微软这个想吃那个也想吃,最后没一个能吃饱吃好..
最后还想说一下Ruby,其实应该说ROR,大家喜欢的应该是ROR的特性,二Ruby是个怪怪的东西,如果没有ROR框架,我想他也很难出名.因为ROR本身构架不是很复杂,众多PHP框架可以说都是模仿他的思想来的,而且也学得7 8成功力了,个人认为ROR很难再做大起来,可能是个昙花一现的东西,只是思想新潮大家都来赶时髦学两下,学到了,大家又都觉得其实也就那样,其他语言也能做到.
http://goku.spitv.net/
http://www.spitv.net/
http://www.sxin99.com/
posted @
2008-06-01 20:12 GoKu 阅读(2785) |
评论 (9) |
编辑 收藏
TIOBE开发语言排行榜参考资深开发者、开发供货商等人建议的计算方式,从2002年开始,每个月从常见搜索引擎中,计算出不同开发语言的流行指数,并公布排行。
Java依然是第一位,不过从形式上看PHP很有前途,毕竟未来C/S应用越来越少,PHP相对C和VB的优势明显,有望成为第二位
下面是前20强:
http://www.spitv.net
http://goku.spitv.net
http://www.sxin99.com
posted @
2008-05-30 19:03 GoKu 阅读(2227) |
评论 (5) |
编辑 收藏
MyEclipse and MyEclipse Blue Edition have both released the initial milestones of the 6.5 product line.
Download M1 here!
Updates for the two products include the addition of Spring 2.5 capabilities, portel support, extensive improvements to the visual JSF/Facelets tool set, the addition of JAX-WS Web Services and more.
Additionally for Blue Edition users, MyEclipse now supports project migration from RAD.
刚才收到myeclipseide的邮件,说发行了6.5,不过依然没有struts2的支持
另外邮件提到Pulse 2,不知道是什么东西,谁介绍一下
推荐网站:http://www.spitv.net
http://goku.spitv.net
http://www.sxin99.com
posted @
2008-05-19 15:44 GoKu 阅读(2832) |
评论 (4) |
编辑 收藏