首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Eclipse 任务列表(1)简要回顾与资源管理

Eclipse 任务列表(1)简要回顾与资源管理

在这个新的系列中,我将重温        使用 XML 专栏的一位老朋友:XSLT Make 或 XM。它也可以算做使用 Eclipse 插件的一个理由。2001 年 7 月,我在        使用 XML 专栏中介绍的第一个项目就是 XM。它是一种轻量级的、价格低廉的、使用 XML 和 XSLT 发布文档的工具。      
2002 年 10 月,我决定为 XM 工具添加图形用户界面。我没有从头开发整个界面,而是求助于刚刚出现的一种 IDE:Eclipse。之所以选择 Eclipse,是因为它是可扩展的、用 Java 编写的,并且提供了一个神奇的小部件库。
重温 XM,使我有机会从两个方面改进 Eclipse 集成:我将修正一个讨厌的用户界面限制(本文中),并重新编写核心 XM 引擎,以便与 Eclipse 更好地集成。通过改进,我还将提高 Eclipse 的扩展性和功能。关于 XM 引擎的工作计划,将在后面的两篇文章中阐述。
简要的历史回顾XM 已经存在一段时间了。从我的咨询经验和读者的反映来看,它在很多项目中证明了自身的价值。比如,我使用 XM 作为一种教学工具,为客户管理 Web 站点,并以 HTML 和 PDF 格式发表了大量的文档。关于该项目的文章,请参阅 。      
XM 的优点开发 XM 的最初原因是使 XML 和 XSLT 的使用更方便。我需要一种简单而有效地解决方案,依靠小型或中等大小的团队维护 Web 站点。我知道 XML 和 XSLT 提供了一个很好的基础,但当时我没有找到合适的工具。最后我卷起袖子自己做了一个这样的工具。2001 年那时出现的工具不是太简单(只能用于单个文件,而不是整个网站),就是太复杂(以大型团队为目标)。
XM 的功能非常强大(我曾经将其用于包含数千页面的项目),但有足够简单,能适应中小型团队的需要。
XM 有两个最重要的特性:
  • 它是开箱即用的,不需要准备复杂的脚本,也不需要编写高级的配置文件。使用 XM,只要将文档放在一个目录中,把样式表放在另一个目录中,          好了,这样就可以发布文档了。
  • 它生成静态的站点,同时又提供了动态站点的大多数管理优势。比方说,修改站点的布局只需要编辑一个样式表即可        。
第二点可能更容易引起争议,但根据我的经验,维护静态站点的工作量更小,效率也更高。一些站点需要结合静态和动态网页,但是以静态方式为主维护站点可以避免很多问题:使用的软件包更少,因而减少了失效的机会。此外,因为可以使用更成熟的缓冲技术,站点的响应速度也更快。关于 XM 的独到之处,我建议您阅读一下原文(请参阅 )。      
从 XM 的角度看两年之中情况发生了很多变化。现在,有大量的开源项目能够满足您的需要(请参阅 )。我曾经用过其中的一些项目,虽然不敢说有广泛的经验,但确实发现其中一些项目的功能比 XM 更强大,但没有一种像 XM 那样易于使用。      
Eclipse 平台也发生了根本的变化。现在,Eclipse 是最受人瞩目的开源 IDE 之一,拥有上千种插件。更重要的是,文档得到了更新,提供了更多的例子。我还记得当时和源代码与调试器搏斗以便获得特定效果的情景,因为当时还没有文档,那种情形不复存在了。
从技术上说,Eclipse 项目从 2.0 发展到了 3.0。新的 API 预计将为今后的很长时间奠定基础。所幸的是,不同的版本在很大程度上都是兼容的(事实上为 Eclipse 2.0 编写的 XM 插件在 3.0 中也能很好地工作),但有些变化不是向后兼容的。一个好的办法是清理代码,尽可能地使用新的 API。
本系列文章有两个目标:
  • 改进 Eclipse 集成。虽然 Eclipse 的功能很齐全,但原来的插件还有一些粗糙之处。通过与 Eclipse 资源管理更紧密地集成在一起,我希望能够稍微缓解一下不足之处。
  • 重写核心引擎。我曾经在很多项目中使用过 XM,在一些项目中遇到了核心引擎最初设计中的一些局限,不得不临时改变实现。现在是时候将这些修改加入到项目中了。
Eclipse 资源管理在以前的专栏文章中,我曾多次提到,Eclipse 不仅仅是一种 IDE。最好将其看作是构建 IDE 的平台。Eclipse 可以归结为管理插件的一个系统。它提供了诸如加载插件、管理插件之间的联系和依赖性、管理插件之间的接口(通过扩展点)等服务。
显然,一些插件提供的服务是每个应用程序都需要的,所以可以将它们作为核心的一部分。部件库 SWT 就是其中之一。另一些插件,如 XM 插件,具有更强的专用性,则由用户在需要的时候安装。
还有一种核心服务是资源管理,该服务由         org.eclipse.core.resources 插件提供。对于 Eclipse 来说,工作区之下的一切都是资源。资源的基本接口是         IResource(非常明确)。最常用的后代有         IFile、        IFolder 和         IProject,分别代表文件、文件夹和项目。      
虽然有一定的关系,但         IResource 和 JDK 中的         File 对象实际上是两码事。JDK         File 代表文件系统中的一个记录,而 Eclipse         IResource 在文件系统之上又添加了几层抽象。首先,资源有属性,属性代表关于资源的信息,帮助插件处理资源。比如,插件可以把         <?xml-stylesheet?> 处理指令的内容作为属性来进行缓冲。同时将数据缓冲在属性中,这样就避免了每次运行插件时都需要解析文件。属性可以存储在内存中(用户退出编辑器时将丢失)或者持久存储到文件系统中。      
此外,当添加、删除或编辑资源时,资源和文件系统就不再同步。        IResource 记录资源的状态,并提供与文件系统同步的方法。更重要的是,Eclipse 可以通知插件资源和文件系统的变化。当资源与文件系统同步时,Eclipse 将传递给插件一个 delta,即上一次同步之后的变动列表。显然,这样就能够进行智能构建,也就是说仅对修改过的资源进行重新编译。
返回列表