级别: 初级 Joe Winchester (winchest@uk.ibm.com)IBM Hursley,英国 Dr Gili Mendel (gmendel@us.ibm.com)IBM Research Triangle Park,北卡罗莱纳州 Peter Walker (walkerp@us.ibm.com)IBM Research Triangle Park,北卡罗莱纳州 Rich Kulp (richkulp@us.ibm.com)IBM Research Triangle Park,北卡罗莱纳州 Srimanth Gunturi (sgunturi@us.ibm.com)IBM Research Triangle Park,北卡罗莱纳州
2003 年 2 月 01 日 本文描述了在 Visual Editor for Java 中扩展 JavaBeans 的选用板的技能,以使您能够扩展选用板。
© Copyright International Business Machines Corporation 2003. All rights reserved.
WebSphere® Studio Application Developer(以下简称为 Application Developer)中的 Visual Editor for Java 使用户能够创建和编辑包含 JavaBeans 组件的 Java 源代码文件。本文描述了扩展 Visual Editor for Java 中的 JavaBeans 选用板的技能以使您可以扩展选用板。IBM 不能保证在今后的发行版中支持本文中描述的技能。所有构成选用板扩展机制的类位于内部的包中,IBM 保留收回或改变允许访问这些类的 API 的权利。
背景
当 Java 源代码文件被打开后,它将被解析以找出任何可识别的 JavaBeans 模式。它们被显示在树视图中和图形画布的表面上。如果 JavaBeans 是抽象窗口工具箱(Abstract Window Toolkit,AWT)或 Swing 的一部分,那么它们被可视地显示在画布上,其模样与运行时相同。您可以在属性视图中查看和修改 JavaBeans 属性。
Visual Editor for Java 使用户能够使用被包括在选用板中的一组 JavaBeans 来构建应用程序。这些是常见的 AWT 和 Swing JavaBeans(例如框架(frame)、文本框(text box)和列表(list))。您也可以通过 ChooseBean 对话框来使用其它 JavaBeans。
如果您想创建 JavaBeans 的库,那么本文描述了如何构建 Application Developer 的插件。为了包括您的类,该插件扩展了 Visual Editor for Java 的选用板,它还包括一个可容易地配置 Java 项目的向导。
引言
本文假定您已创建了一些 JavaBeans,现在想创建把它们部署给开发者以供开发的插件,本文将从这一时刻开始讲起。本文中提供一个 Java bean 示例
com.abc.wizzowidgets.shape ,并按以下方式来打包:
|
wizzowidgets.jar
| 包括可画多个预先定义的形状的 com.abc.wizzowidgets.Shape 运行时 JavaBean。 | |
wizzowidgets_src.zip
| 包括
wizzowidgets.jar 中类的源代码。jar 中的包被加上了前缀“src”,所以
/src/com/abc/wizzowidgets/Shape.java 文件是 com.ibm.abc.wizzowidgets.Shape 类的 Java 源代码文件。
| |
wizzowidgets_dt.jar
| 包括在设计时 Visual Editor for Java 所需要的 BeanInfo 类,但在运行时不需要该类。它们在不同的包中。运行时类(例如 com.ibm.wizzowidgets.beaninfo.ShapeBeanInfo)是 com.abc.wizzowidgets.Shape Java bean 的 BeanInfo。 |
作为 Java bean 的提供者,您可能并不愿意象所提供的示例那样拆分您的代码。例如,您可以把源代码和运行时包括在同一个 jar 中,把 BeanInfo 类和运行时 jar 包括在同一个包中。如果您这样做,那么您可以简化插件的创建。但是,本文使用了文件被分开打包的示例以说明复杂的情形。
本文将说明如何:
- 创建插件以使用户可以通过一个操作就安装 wizzo 小窗口类并配置正确的源代码文件的附件和 BeanInfo 类。
- 为添加包含 Shape Java bean 的新类别而扩展选用板。
使用插件文件
您可以通过下载来
获取已完成的插件。您可以分别下载三个 jar 和 zip 文件,然后自己创建插件。本文的第一部分说明如何把包含 wizzo 小窗口的文件打包成插件。第二部分说明如何测试该插件。
创建插件的方法如下:
-
创建插件目录:创建一个插件,其中包含 jar 和 zip 文件和定义扩展点的 plugin.xml 文件。
-
定义容器:使用插件中的 org.eclipse.jdt.ui.classpathContainerPage 扩展点来指定容器名和创建它的向导。
-
指定容器的类路径条目:容器向导需要知道 JavaBeans 是如何被打包的详细信息(例如包含类和任何源代码附件的 jar 文件)。它们被定义在 com.ibm.etools.jbcf.registrations 扩展点中。该扩展点还引用选用板 XMI 文件的位置,您可以使用该文件来把类别添加到 Visual Editor for Java 的选用板中。
-
BeanInfo 类的位置:当 JavaBean 在最终用户应用程序中运行时,这是运行时环境。在构建器工具(例如 Visual Editor for Java)中,JavaBean 在设计时环境中运行。JavaBean 把信息提供给构建器工具,该工具可简化使用,例如如何显示和编辑它的属性和如何定制它。JavaBean 可分割运行时和设计时逻辑以使您可以在运行时部署它而不必包括设计时代码。BeanInfo 类中提供了设计时信息。它们与该 JavaBean 通常位于不同的 jar 中。它们可能在不同的包中。
com.ibm.etools.beaninfo.registrations 扩展点指定了 BeanInfo 类的位置。
-
扩展选用板:创建 XMI 文件,该文件描述了被添加到选用板的类别和 JavaBeans。
完成以上步骤后,用户所需完成的步骤是:
-
在用户的 Application Developer 的副本的 plugins 目录中
安装插件。
-
更改 Java 项目的构建路径以使用户可以编写使用您的 JavaBeans 的类。
创建插件目录
WebSphere Studio 构建在 Eclipse 工具框架上,它由一系列插件组成。每个插件是一个包含 plugin.xml 文件的目录。plugin.xml 文件被称为插件的清单文件,它包括描述扩展点的 XML 标记。您可以使用扩展点来把东西添加到工具栏、向导和首选项页面,也可用来定义新的编辑器。Visual Editor for Java 有多个您可以使用的扩展点。如果您想获取有关插件的更多信息,请阅读这篇文章:
Your
first plugin。
- 请为插件目录创建唯一的名称以避免与其它插件的冲突。插件的命名方式常常与 java 包的命名方式相同:您的公司的 URL 被颠倒后加上您可以保证不在您的组织中再次使用的后缀。例如,如果您的公司的 URL 是 abc.com 而您的 JavaBeans 包被称为 WizzoWidgets,那么请把插件命名为
com.abc.wizzowidgets 。
- 请用这个名称来创建包含
plugin.xml 文件和 jar 和 zip 文件的文件夹。为了在编写插件时测试它,请把它放在 Application Developer 的 plugins 目录中。当您把该插件交付给用户时,这正是他们为利用您的插件而使用的位置。WebSphere Studio 有两个您可以使用的插件文件夹。一个在运行时文件夹下的
eclipse 文件夹中,另一个在
wstools 文件夹中。您可以使用两个中的任一个来创建插件文件夹,如图 1 所示。
图 1. plugins 目录
plugin.xml 清单文件包含多个条目。第一组定义了关于插件本身的详细信息。
<?xml version="1.0"?>
<plugin
name = "Wizzo
Widgets"
id = "com.abc.wizzowidgets"
version = "1.0.0"
vendor-name =
"IBM">
<requires>
<import plugin="com.ibm.etools.jbcf"/>
</requires>
xml version 条目
指定了应该使用哪个版本的 XML 解析器。
plugin 标记
定义了它的名称(name)和标识(id)。在 Application Developer 中的所有插件中,标识是唯一的,所以多数插件清单文件把它们的标识定义为插件目录的名称。版本(version)属性是必需的,它是分三部分的数字,它使您能够管理插件的发行版。在 Application Developer 中,每个插件有自己的类装入器,每个由插件创建的类使用该插件的装入器。请使用装入器来定位类和资源。您必须把装入器需要看见的类定义为必备插件。
requires 标记
指定了 Java beans 组合框架插件(它是 Visual Editor for Java 的一部分,它的插件标识是
com.ibm.etools.jbcf )是 Wizzo 小窗口插件的必备插件。
requires 语句类似于 java 命令中的传统的 -classpath 语句。与 java -classpath(它以整个 JVM 为范围)不同,每个插件类装入器有自己的一组不同的必备插件。
当该插件被交付时,包含 Shape Java bean 和它的 BeanInfo 源代码的 jar 文件也被包括在内。它们在三个文件中:
wizzowidgets.jar 、
wizzowidgets_src.jar 和
wizzowidgets_dt.jar 。jar 和 zip 文件被包括在插件目录中。请创建名为 bin 的目录,其中包括 JavaBeans 和 BeanInfo 类的目标代码,如图 2 所示。
图 2. bin 目录
请创建包含 zip 文件(该文件中有 .java 源代码文件)的 src 目录,如图 3 所示。
图 3. src 目录
定义容器
为了使用 JavaBeans,请把容器添加到 Java 项目的构建路径。为了定义它,请在清单文件中声明 org.eclipse.jdt.ui.classpathContainerPage 扩展点。
<extension point="org.eclipse.jdt.ui.classpathContainerPage">
<classpathContainerPage
id= "com.abc.wizzowidgets.classpathcontainerpage"
name="Wizzo
Widgets"
class="com.ibm.etools.jbcf.internal.ClasspathWizardPage:WIZZO_WIDGETS"/>
</extension>
name
定义了用户在 Application Developer 中看到的标签。在这个示例中,它被硬编码成一种语言。然而,您可以把这个字符串存到外部的 .properties 文件中。插件的外部化(externalize)超出了本文的讨论范围。如果您想获取更多信息,请参阅
How
to Internationalize your Eclipse plugin。
class 名称
是当用户选择
OK 时出现的向导页面的名称。通过实现 org.eclipse.jface.wizard.WizardPage 和 org.eclipse.jdt.ui.wizards.IClasspathContainerPage.IClasspathContainerPage 接口,这个类是有效的向导页面。您可以选择编写自己的向导页面,也可以使用被包括在 Visual Editor for Java 中的 com.ibm.etools.jbcf.internal.ClasspathWizardPage 示例。ClasspathWizardPage 类是内部的包,它是不受支持的类,您可以在今后的 WebSphere Studio 的发行版中删除它。如果您为商业目的而把 JavaBeans 打包到产品中,请为您的特殊情形创建
IClasspathContainerPage 的实现。
如果您使用通用的向导页面
com.ibm.etools.jbcf.internal.ClasspathWizardPage ,请给出 JavaBeans 容器的 Java 变量名。为此,您可以把变量名作为类的初始化数据的一部分来传递,具体的方法是在类名后输入变量名(用分号隔开)。例如:class="com.ibm.etools.jbcf.internal.ClasspathWizardPage:VARIABLE_NAME"。
指定容器的类路径条目
容器被转换以使它不在类路径中,但它被扩展为表示每个包含 JavaBeans 的外部 jar 的单独类路径条目。今后的发行版中可能改变它以使用户看到单个
JAVA_BEANS/WIZZO_WIDGETS 的构建路径条目。用户可以删除它,也可以再次获取它。当 WebSphere Studio 必须创建 JVM 时它在内部扩展成构成的 jar 文件。但是,在 V5.0 中,每个 JavaBeans jar 文件被添加到构建路径中。创建的 Java 变量指向磁盘上实际插件目录的位置。每个 jar 条目被定义为该变量的扩展。例如,
WIZZO_WIDGETS Java 变量指向
C:\WebSphere_Studio_ApplicationDeveloper\wstools\eclipse\plugins\com.abc.wizzowidgets 。
WIZZO_WIDGETS/bin/wizzowidgets.jar 的类路径条目被创建。
为了确定把哪些 jar 文件添加到构建路径中,请在清单文件中定义 com.ibm.etools.jbcf.registrations 扩展点。
<extension point="com.ibm.etools.jbcf.registrations">
<variable
path="WIZZO_WIDGETS"
palettecats="platform:/plugin/com.abc.wizzowidgets/wizzopalette.xmi">
<extend
runtime="bin/wizzowidgets.jar" source="src/wizzowidgets_src.zip" prefix="src"/>
</variable>
</extension>
com.ibm.etools.jbcf.registrations 扩展点定义了变量名
,该变量名也是被传递给
ClasspathWizardPage 的初始化数据的名称。在 Application Developer 中,同名的变量被创建并被用于 path 标记中的构建路径中。您可以使用 extend 标记
来定义构建路径中的实际的运行时 jar 文件。例如,运行时 JavaBeans 的位置。在有必要的情况下,可选的 source 和 prefix 属性可被用于把源代码附加到运行时 jar。当
wizzowidgets.jar 包含
.class 文件且源代码在前缀为 src 的目录结构中的
wizzowidgets_src.zip 文件中的时候,这两个标记是必需的。如果在多个 jar 或 zip 文件中提供 JavaBeans,那么请在扩展点中一个接着一个地输入多个 extend 标记。例如:
<extend runtime="bin/wizzowidgets.jar" source="src/wizzowidgets_src.zip" prefix="src"/>
<extend runtime="bin/wizzowidgetsextra.jar" source="src/wizzowidgetsextra_src.zip" prefix="src"/>
palettecats 扩展点
指向 XMI 文件的位置,该文件包含 Visual Editor for Java 选用板的扩展。这将在
扩展选用板中讲述。
BeanInfo 类的位置
当 Visual Editor for Java 执行对 JavaBeans 的内省时,它创建 JVM 并把
java.beans.Introspector 装入 JVM。这个 JVM 的类路径是该项目的 Java 构建路径加上 BeanInfo 路径中的任何条目。BeanInfo 类和 JavaBeans 在不同的 jar 中,所以您必须在项目的 BeanInfo 路径中包括
wizzowidgets_dt.jar 。您可以通过
com.ibm.etools.beaninfo.registrations 扩展点自动地更新而用户无需手工地更新项目的 BeanInfo 路径。
<extension point="com.ibm.etools.beaninfo.registrations">
<variable path="WIZZO_WIDGETS">
<beaninfos>
<beaninfo kind="plugin" path="/com.abc.wizzowidgets/bin/wizzowidgets_dt.jar">
<searchpath package="com.abc.wizzowidgets.beaninfo"/>
</beaninfo>
</beaninfos>
</variable>
</extension>
variable path
指向变量名
WIZZO_WIDGETS 。当用于内省的 JVM 被创建时,WebSphere Studio 搜索项目的 Java 构建路径并寻找变量条目。如果
WIZZO_WIDGETS 变量被找到,那么 com.abc.wizzowidgets 插件中的 wizzowidgets_dt.jar 文件在 JVM 的类路径中。如果发现变量是
WIZZO_WIDGETS 的扩展,那么它也被用作匹配。如果项目的 Java 构建路径包括
WIZZO_WIDGETS/wizzowidgets.jar ,那么
WIZZO_WIDGETS 的 beaninfo 注册被认为是一个匹配,
wizzowidgets_dt.jar 被添加到 JVM 的类路径中。您也可以在 path 中直接指定扩展(
<variable path="WIZZO_WIDGETS/wizzowidgets.jar> )以允许细粒度地控制 beaninfo jar 的包含。
用来找到 JavaBean 的 BeanInfo 类的 java.beans.Introspector 类有一个包的搜索路径。通过内省器的 java.beans.Introspector.setSearchPath(String[] packageNames) 方法,它们被传递给内省器。如果 BeanInfo 类与 JavaBeans 在不同的包中,那么您必须通过使用 searchpath
标记来显式地把 BeanInfo 包交给内省器。
com.abc.wizzowidgets.beaninfo.ShapeBeanInfo 是
com.abc.wizzowidgets.Shape JavaBean 的 BeanInfo 类。您必须在 beaninfo 注册扩展点中定义
com.abc.wizzowidgets.beaninfo 包以使内省器能够找到 ShapeBeanInfo 类。
如果 JavaBeans 没有 BeanInfo 类或者 BeanInfo 类与 JavaBeans 在相同的包和 jar 中,那么没有必要完成这一步(即定义 com.ibm.etools.beaninfo.registrations 扩展点)。例如,如果 ShapeBeanInfo 类不在 com.abc.wizzowidgets.beaninfo 包中,但是被包括在 com.abc.wizzowidgets 包中且被包括在
wizzowidgets.jar 文件中,那么内省器无需任何 beaninfo 注册扩展点就可以找到类。
扩展选用板
Visual Editor for Java 把它的 JavaBeans 的选用板存储在被序列化为 XMI 的对象模型中。为了包括选用板条目,请使用先前定义的指向 XMI 文件的
palettecats= 扩展点。该扩展点使用
wizzopalette.xmi 文件,所以与该文件同名的文件在插件目录中被创建。
图 4. wizzopalette.xmi 文件
因为该选用板表示被序列化为 XMI 的对象模型,所以它的结构比清单文件所使用的纯粹的 XML 更详细。创建选用板文件的最佳方式是把某个现有的 XMI 复制到该文件中,然后根据需要来修改类名称标记。例如,请把
com.abc.wizzowidgets.zip中提供的文件复制到插件中,然后根据需要来修改它:
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
xmlns:palette="palettecde.xmi" xmlns:cdm="cdm.xmi"
xmlns:utility="utilitycde.xmi">
<palette:CategoryCmp
xmi:id="cat1">
<categoryLabel
xsi:type="utility:ConstantString" xmi:id="string0" string="Wizzo Widgets"/>
<cmpGroups xsi:type="palette:GroupCmp"
xmi:id="group1">
<cmpEntries xsi:type="palette:AnnotatedCreationEntry" xmi:id="entry1"
icon16Name="platform:/plugin/com.abc.wizzowidgets/icons/shape.gif">
<objectCreationEntry
xsi:type="palette:EMFCreationToolEntry" xmi:id="entry1obj"
creationClassURI="java:/com.abc.wizzowidgets#Shape"/>
<values xmi:type="cdm:KeyedString" xmi:id="stringname1" key="com.ibm.etools.cde.nameincomposition"
value="ivjShape"/>
<entryLabel xsi:type="utility:ConstantString" xmi:id="string1" string="Shape"/>
</cmpEntries>
</cmpGroups>
</palette:CategoryCmp>
</xmi:XMI>
palette.CategoryCmp
标记定义了每个类别。以上文件包括一个类别。您可以通过添加新的顶级
palette:CategoryCmp 标记来包括多个类别。在类别中,它的名称由
categoryLabel 标记
来定义,该标记引用
utility:ConstantString 类,该类的 string 属性是类别名。以上的示例类别被称为“Wizzo Widgets”。在每个类别中有一个包括
cmpEntries
的
cmpGroup 。请使用它们来定义每个 Java bean。该示例仅有一个 shape Java bean,所以只有一个
cmpEntries 标记。然而,您可以在
cmpGroups 标记中重复该标记。每个
cmpEntries 标记是包含图标和类名的
palette:AnnotatedCreationEntry 类的实例。
Java bean 的类名被定义为 palette:EMFCreationToolEntry objectCreationEntry 类的
creationClassURI。这是 java:/packagename#classname: 格式。对于 Shape 类来说,它是 java:/com.abc.wizzowidgets#Shape。
当用户为了创建 JavaBean 而选择选用板条目并把它放在 Visual Editor 中的时候,一个域被创建。对于可视的 JavaBean 来说,域名称是类名加上一个数字,这个数字可确保它在该 Java 文件中的唯一性。
com.abc.wizzowidgets.Shape 类是可视的,因为它继承了
java.awt.Canvas ,所以它的域名称是
shape1 。后续的 JavaBeans 的域名称被称为
shape2 、
shape3 等。
由于 Visual Editor 所用的解析规则的缘故,所有表示非可视的 JavaBeans 的域都必须以
ivj 为开头。
ivj 前缀是表示它们被包括在图形画布和树视图中的开关。为了指定非可视的 JavaBean 的名称(该 JavaBean 是选用板类别的一部分),请定义 (E>)
<values 标记,该标记是
cdm:KeyedString ,其键为
com.ibm.etools.cde.nameincomposition 。为了说明语法,
wizzopalette.xmi 文件包括了
<values 标记。这将被忽略,因为 Shape 是可视的 JavaBean。
出现在选用板上的名称由 entryLabel 标记来定义,该标记是常量字符串,它的 string 属性
被使用。
icon16Name= 标记指定了 cmpEntires 标记自身的一个属性。如果您看到的是红色方块而不是图标,那么这意味着图形文件未被正确地装入。Shape 类是 icon16Name="platform:/plugin/com.abc.wizzowidgets/icons/shape.gif"。在插件目录中有一个包含
shape.gif
文件的 icons 文件夹。
图 5. icons 文件夹
如果您没有为 JavaBean 提供定制的图标,那么您可以通过把该属性设置为 icon16Name="platform:/plugin/com.ibm.etools.jbcf/icons/bean16.gif" 来使用缺省的 bean 图标。请注意,如果 JavaBean 有一个从 public java.awt.Image getIcon(int iconKind) 方法返回图标的 BeanInfo 类,那么 Visual Editor for Java 就不使用它。为了在选用板中包括图标,您必须定义 icon16Name= 标记。
安装插件
为了使用户能够使用您的插件,用户可以把
com.abc.wizzowidgets 目录复制到他们的 Application Developer 的副本的 plugins 目录中。当 Application Developer 第一次启动时,它读取 plugins 目录中的文件夹所包括的每个
plugin.xml 。扩展点定义了
WIZZO_WIDGETS 容器的规则。
使用 WizzoWidgets 插件
Application Developer 中的每个
.java 源代码文件被创建在 Java 项目中。Java 文件可引用的可用的类的作用域由它的项目的构建路径来定义。为了把
WIZZO_WIDGETS 插件用于 Java 项目,用户可以更改它的构建路径,更改的方法是打开项目的属性,然后选择
Java Build Path。构建路径页面的
Libraries选项卡使用户可以更改构建路径。
图 6. Libraries 选项卡
为了通过配置项目来包括 Wizzo Widgets JavaBeans,用户可以单击
Advanced,然后选择
Add Container单选按钮。在
清单文件中定义的 Wizzo Widgets 条目出现在列表中。用户选择它,然后单击
OK。
图 7. Add Container 单选按钮
ClasspathWizardPage 从定义了容器是如何被打包的
清单文件中读取扩展点。用户可以看到被创建的 Java 变量、被添加到构建路径的 jar 文件和被包括在选用板中的条目的详细信息。
图 8. 新的库
在单击
Finish 后,
ClasspathContainerWizard 把容器添加到构建路径中。容器名是
JAVA_BEANS 加上扩展的变量名,例如
JAVA_BEANS/WIZZO_WIDGETS 。因为容器被定义为指向
com.ibm.etools.jbcf.registration 扩展点中的多个 jar 文件,所以类路径被进一步修改以使个别的 jar 文件被添加。通过扩展 Java 变量的定义,个别的 jar 文件被指定,所以
WIZZO_WIDGETS 变量是容器,它指向插件目录的位置中的运行时目录。
wizzowidgets.jar 文件被定义为变量的扩展。
当用户打开 Visual Editor for Java 时,XMI 文件中定义的类别被添加到选用板的顶部。用户可以选择 JavaBeans 并把它们放在画布上而不必使用选择 Bean 对话框。
图 9. 显示已包括 Wizzo Wizards 类别的选用板
查错
如果插件存在任何问题(例如未出现在项目的容器列表中),那么
plugin.xml 文件中可能有错误。Application Developer 把这些错误写入
.metadata 目录中的
.log 文件。例如,如果您忘了在 plugin 标记中包括 version 属性,那么
.log 文件中有以下错误:
!MESSAGE Version attribute missing from plug-in or fragment at
"file:C:/WebSphere_Studio_Application_Developer/eclipse/plugins/com.abc.wizzowidgets/plugin.xml".
如果您忘了在标记名后加上关闭的 >,那么错误消息是:
org.xml.sax.SAXParseException: The end-tag for element type "extension"
must end with a '>' delimiter.
!MESSAGE Error while processing "file:C:/WebSphere_Studio_Application_Developer/wstools/eclipse/
plugins/com.abc.wizzowidgets/plugin.xml".
.metadata 目录中的
LoggingUtil 文件可能保存着一些错误。请通过浏览 log 和 LoggingUtil 文件来查错。
结束语
本文为您讲述了如何把 JavaBeans 打包成使用户可以容易地更新项目的构建路径的插件。这也自动地更新源代码附件和 BeanInfo 路径的详细信息的所有下层配置。此外,您可以通过包括 JavaBeans 的新类别来把插件扩展到 Visual Editor for Java 上的选用板中。用户可以容易地把它们放到画布上,然后开始使用它们。
本文中描述的 API 是实验性的,也是 WebSphere Studio Application Developer 5.0 的一部分。预计在未来的 Application Developer 的发行版中扩展选用板和创建包含 JavaBeans 的插件的过程将被改进,因此 IBM 不承诺保证支持或维护扩展点。本文中提供的 JavaBeans 仅用于说明目的,应酌情使用。本文中提供的所有软件以“
按现状”的基础提供,并在适用法律所允许的最大范围内,IBM 以“按现状并可能存在各种错误”的基础提供这些软件,特此声明免除所有(无论是明示的、默示的,还是法定的)其它保证和条件,包括(但不限于)与这些软件有关的适销性、适用于某特定用途、响应的准确性或完整性、结果、技艺精湛的成果、无病毒和无疏忽的任何默示保证、责任或条件(如果有的话)。
下载 | 名字 | 大小 | 下载方法 |
|---|
| com.abc.wizzowidgets.zip | 0.8 MB | HTTP |
作者简介  | |  |
Joe Winchester是 IBM 赫斯利(Hursley)实验室(位于英国)的高级顾问软件工程师。他参与有关 WebSphere 开发工具的工作,也是负责 Visual Editor for Java 的小组成员。您可以通过
winchest@uk.ibm.com与 Joe 联系。
|
 | |  |
Dr Gili Mendel是 IBM Raleigh Lab(位于北卡罗莱纳州)的高级顾问软件工程师。他参与有关 WebSphere 开发工具的工作,也是负责 Visual Editor for Java 的小组成员。您可以通过
gmendel@us.ibm.com与 Gili 联系。
|
 | |  |
Peter Walker是 IBM 罗利(Raleigh)实验室(位于北卡罗莱纳州)的顾问软件工程师。他参与有关 WebSphere 开发工具的工作,也是负责 Visual Editor for Java 的小组成员。您可以通过
walkerp@us.ibm.com与 Peter 联系。
|
 | |  |
Rich Kulp是 IBM 罗利(Raleigh)实验室(位于北卡罗莱纳州)的顾问软件工程师。他参与有关 WebSphere 开发工具的工作,也是负责 Visual Editor for Java 的小组成员。您可以通过
richkulp@us.ibm.com与 Rich 联系。
|
 | |  |
Srimanth Gunturi是 IBM 罗利(Raleigh)实验室(位于北卡罗莱纳州)的专职软件工程师。他参与有关 WebSphere 开发工具的工作,也是负责 Visual Editor for Java 的小组成员。您可以通过
sgunturi@us.ibm.com与 Sri 联系。
|
对本文的评价
|