1.2 Eclipse是什么?
就像我们前面提到的那个比喻一样,Eclipse就像一个铁匠的作坊,在这个作坊里面,不仅可以制造产品,而且可以制造供生产使用的工具,在实际中也确实是这样的。在下载EclipseSDK之后,然后再获得JDT就可以编写调试Java程序,或者为了扩展Eclipse的PDE。如果你只想要一个Java开发环境,那么除了JDT之外你就不需要别的东西了,不用管PDE,这些就足够了。这也就是为什么很多人都选择用Eclipse的原因,在本书的前一部分,主要讲Eclipse作为Java IDE的使用。其实JDT也是附加在Eclipse上的。在最基础的层次上,Eclipse就是Eclipse平台,Eclipse平台的作用就是提供集成插件的功能。也就是说,如果要使用Eclipse,就必须要一些插件,比方说JDT。Eclipse设计的亮点就是,除了实时核心,所有的都是插件,或者与插件相关的东西。所以,尽管Eclipse SDK类似于铁匠的作坊,但是Eclipse平台更像是一个空的作坊,除了水,电,煤气之外什么都没有。如果你想当一个陶工而不是铁匠,那么就建造一个陶窑和制陶轮,再弄一些粘土,然后就开始制陶吧。如果你只想用Eclipse开发C/C++,那么就用CDT替换掉JDT。这种插件设计让Eclipse具有扩展性。更重要的是,Eclipse提供一种使集成的插件可以很好的工作的机制,这样就可以不但容易而且实现无缝式嵌入新特征。如果用Eclipse作不同的工作,那么很难说什么时候插件开始工作,什么时候结束。
1.2.1Eclipse体系
Eclipse平台除了小的平台运行核心外,还包括Workbench,workspace,help和组件,在这个框架上再加入一些插件,组成一个可用的应用程序(图1.1)。
JDT
PDE
Your tool here
workbench
Help
Workspace
Team
Platform Runtime
SWT
JFace
图1.1 Eclipse体系结构,除了一个实时核心外,其它都是插件或者与插件相关的东西。
实时平台
平台实时系统的主要任务就是搜索在插件目录下的可用插件。每一个插件都有一个说明自己需要的链接的XML文件,文件内说明了为其他插件提供的接口,以及需要其他插件提供的接口。因为可能会有很多插件,为了减少启动时间和占用资源,所以除非在必要的情况下,否则一般不会载入。本书的第二部分着重讲插件的结构,以及他们怎样工作的一些细节,还有怎样在PDE开发。
Workspace
Workspace负责在顶层按照工程来管理用户的资源,每个工程再workspace下都有一个子目录。每个工程包括文件和文件夹,每个文件夹对应工程目录,每个文件夹可以连接到文件系统任何地方的文件夹。Workspace还包括对每个资源文件最近作的修改,这样就可以在短时间内撤销所作的变动,回到前一个版本,但是这个版本是什么时间的取决于用户的设置。这种历史纪录将资源丢失的风险降到最低。
Workspace还负责通知相关的工具workspace资源所作的改变,工具有加标签的功能,比方说一个java工程,可以用代码来配置工程的资源。
工作台
工作台是Eclipse的用户图形界面,除了显示菜单及工具栏,还可以显示内部视图以及编辑器,在第二章将会讨论到。
Workbench的一个显著特征就是看起来比较像一个自然的程序,而不像其他java程序一样,这是因为它使用Eclipse的SWT和JFace创建的,JFace是再SWT基础上建起来的一个用户界面工具,SWT不像调用标准的JavaAPI的AWT和Swing一样,SWT直接映射到系统本地的图片。SWT一直是Eclipse的一个比较有争议性的问题,因为SWT必须被导入到每一个Eclipse的支持的平台上。其实在实际中,这个问题并不太重要,因为在大多数时下流行的平台上,都已经导入了SWT(包括 Windows, Linux/Motif, Linux/GTK2, Solaris, QNX, AIX, HP-UX和 Mac OS X)。
用SWT和JFace创建自己的java应用程序是可行,在本书的附录D介绍了用SWT编程,附录E简单介绍了JFace。Eclipse使用SWT/JFace并不是说我们在程序中也必须要使用,如果不是为了写Eclipse的插件,仍然可以使用AWT/Swing.
团队支持
团队支持插件使得可以使用版本控制系统来管理用户工程的资源文件,并且定义了向一个仓库存储和检索的必要的工作流,Eclipse平台包括cvs的客户端,关于cvs,将在第6章作介绍。
帮助
像Eclipse平台一样,帮助组件是一个可扩展的文档系统,工具提供者可以以HTML格式添加文档,并且用XML定义一个导航性的结构。与插件与插件之间的联系一样,工具文档可以在已存在的主题树种插入一个主题。
1.2.2语言与平台中立性
虽然Eclipse使用java编写的,并且一般用作javaIDE,但是它是语言中立的,就像前面提到的一样,添加一个插件就可以支持java,添加另外的插件就可以支持c/c++,Cobol,和C#。
Eclipse对人类语言也是一样中立的,插件机制可以让你比较容易的实现增加不同语言的功能。用某一种固定的插件被称为插件片。IBM提供了一个多国语言支持包,包括汉语,法语,德语,意大利语,日语,韩语,葡萄牙语,和西班牙语。这个语言包可以在Eclipse的下载网页http://www.eclipse.org得到。
虽然Eclipse使用java写的,并且按照道理来讲是与平台无关的,但是实际上并不是这样。这是因为Eclipse调用了操作系统的图片,所以只能在那些已经嵌入了SWT的平台上使用。即使你使用的平台没有潜入SWT,事情也没有想象得那么复杂,因为Eclipse是开源的,源代码时刻见的,有一些人已经把Eclipse嵌入到了一些平台中,你可以到Eclipse的网站上去找一下。有时候这些东西反过来又成了Eclipse的一部分。所以总的来说,如果你愿意,你可以自己未Eclipse写接口。