当前位置:文档之家› 在 IBM Lotus Domino Designer 中使用 Java 构建应用程序

在 IBM Lotus Domino Designer 中使用 Java 构建应用程序

在 IBM Lotus Domino Designer 中使用Java 构建应用程序Oscar Hernandez, 高级软件工程师, IBM简介:本文旨在帮助那些传统的 LotusScript 开发人员转向 Java 开发。

在几乎不具备 Java 知识的情况下,本文可帮助您开始在 IBM Lotus Domino 中进行Java 应用程序开发。

简介对于 IBM Lotus Notes 应用程序开发人员来说,LotusScript 和 LotusScript 类在设计 Notes 应用程序时很有用。

LotusScript API 支持以编程方式与数据库、文档,甚至设计元素进行交互。

随着 Java 发展成为主流编程语言,原来越多的 Notes 应用程序开发人员开始将目光投向 Java。

本文面向那些想要在 IBM Lotus Domino 中使用 Java 进行编程的 LotusScript 开发人员。

假定读者具有一定的 LotusScript 编程经验。

本文包含三部分:Java 语言、示例和其他要素。

Java 编程人员可以直接跳到示例部分,但是新手应该从 Java 语言部分开始阅读。

Java 语言发布于 1995 年,Java 是一种面向对象的编程语言,它的出现满足了平台独立性需求。

这是通过将 Java 源代码编译成字节码实现的,然后任意平台上的任何Java 虚拟机(JVM)都可以解释字节码。

因此,只要为目标平台实现了 JVM,就可以运行任何 Java 应用程序。

有关更多信息,请参见“The History of Java Technology”。

Java 的语法类似于 C,而它面向对象的实现方式类似于 C++,因此 C/C++ 编程人员可以轻松掌握 Java。

但是,LotusScript 开发人员可能会发现 Java 语法与 LotusScript 大不相同。

由于本文关注的是在 Lotus Domino 中使用 Java,因此所展示的示例也将在Lotus Domino 的环境中实现。

我们从经典的“Hello World”示例开始。

在 Domino Designer 中创建新的 Java 代理时,会收到表 1 左栏所示的模板代码。

右栏的代码已经进行了修改以适应“Hello World”示例的需要。

表 1. Hello World 示例 模板 Java 代理代码Hello World Java 代理代码 import lotus.domino.*;public class JavaAgent extendsAgentBase {public void NotesMain() {try {Session session =getSession();AgentContextagentContext=session.getAgentContext();// (Your code goeshere)} catch(Exception e) {e.printStackTrace();}}}import lotus.domino.*;public class JavaAgent extendsAgentBase {public void NotesMain() {try {Session session =getSession();AgentContextagentContext=session.getAgentContext();// (Your code goes here)System.out.println("Hello World!");} catch(Exception e) {e.printStackTrace();}}}逐行详解我们来逐行看一下这段代码: import lotus.domino.*;Java 使用 import 语句以包括其他 Java 类。

在本例中,所有 lotus.domino 类对于代理代码都可用。

Java 类通常包含在 JAR 文件中。

代理可以通过几种方式使用 JAR 文件。

有关 JAR 文件的信息,请参阅本文第 4 节 “将外部 JAR 文件与 Java 代理一起使用” 部分。

public class JavaAgent extends AgentBase {Java 是一种面向对象的编程语言。

该行证明了这一点,创建 Java 代理时,它创建了 JavaAgent 类,这是在其中编写 Java 代码的主类。

可能还注意到了 JavaAgent 类扩展了 AgentBase 类。

因为 Java 是面向对象的,所以扩展 AgentBase 类为我们提供了进入代理的入口点,这将我们带到了下一行。

public void NotesMain() {NotesMain 方法是到代理的入口点。

这里我们用自己的定义改写了 AgentBase 方法定义。

try {在 Java 中,错误处理通过 try 和 catch 块进行处理。

Java 中抛出异常的方法必须囊括在 try 块中,而且每一个 try 块都必须有一个相应的 catch 块。

在“Hello World”示例中需要 try 和 catch 块,因为 getAgentContext 方法抛出了 NotesException。

要查看哪些 Domino 方法抛出异常,请参阅 Domino Designer 帮助文件中的方法签名。

Session session = getSessiono;AgentBase 类的 getSession 方法用于创建会话对象。

Java Session 类类似于LotusScript NotesSession 类。

AgentContext agentContext = session.getAgentContexto;AgentContext 类用于获取到当前数据库的句柄(使用其 getCurrentDatabase 方法)。

在 LotusScript 中,不需要使用这个额外的类来获取到当前数据库的句柄。

//(Your code goes here)这一行要注意的是单行注释以“//”开头。

多行注释在开始和结尾处使用“/*”(类似于 C++)。

System.out.println("Hello World!");这是用于输出到控制台的 Java 方法。

要在 Notes 中打开 Java 控制台,从菜单中选择 Tools > Show Java Debug Console。

System.out.println 方法类似于 LotusScript Print 方法。

} catch(Exception e) {这是与上文 try 代码块相对应的 catch 语句。

e. pri ntStackTraceo;在 catch 代码块中,可以按照自己的意愿处理异常;在本例中,我们只是将其输出到堆栈跟踪。

Java 语言基础知识Java 提供了 8 种基本类型:byte、short、int、long、char、float、double 和Boolean。

表 2 介绍了每种类型并指出了相对应的 LotusScript 的等价物(如果有)。

表 2. 基本类型和 LotusScript 等价物Java基本类型Java 说明LotusScript 等价物byte 正负 8 位二进制补码整数(-128 到127)Byte相似点:8 位不同点:无负数(0 到 255)short 正负 16 位二进制补码整数(-32,768 到32,767)Integer相似点:16 位,有正负(-32,768 到 32,767)int 正负 32 位二进制补码整数(-2,147,483,648 到 2,147,483,647)Long相似点:32 位,有正负(-2,147,483,648 到2,147,483,647)long 正负 64 位二进制补码整数(-9,223,372,036,854,775,808 到9,223,372,036,854,775,807)N/Achar 单个 16 位 Unicode 字符N/A但是, LotusScript 提供了一个 String 类型,它包含多个字符float 单精度 32 位 IEEE 754 浮点Single相似点:单精度 32 位浮点double 双精度 64 位 IEEE 754 浮点Double相似点:双精度 64 位浮点Boolean true 或 false 值Boolean相似点:true 或 false 值运算符Java 具有丰富的运算符集。

表 3 只是显示了其运算符的一部分并提供了说明和LotusScript 的等价物(如果有)。

有关完整列表,请访问Java 教程运算符页面。

表 3. Java 运算符Java 算术运算符说明LotusScript 等价物= 赋值=~ 加~~~ 递增N/A+= 加法赋值N/A- 减(也是一元减运算符)--- 递减N/A-= 减法赋值N/A* 乘**= 乘法赋值N/A/ 除//= 除法赋值N/A% 求余数Mod%= 求余数赋值N/AJava 关系运算符说明LotusScript 等价物== 相等=!= 不等于<>, ><> 大于>>= 大于等于>=, =><小于<<= 小于等于<=, =<Java 逻辑(位)运算符说明LotusScript 等价物& 按位与AndI 按位或OrA 按位异或Xor- 按位求补Not>>带有符号扩展的右移位N/A<< 左移位N/AJava 逻辑(布尔)运算符说明LotusScript 等价物&& 布尔与AndII 布尔或Or== 布尔等于E qv! 布尔非Not声明变量Java 中声明变量的语法是类型,后面接着变量名:类型 variable_name;在 Java 中,变量名由字母、数字和下划线组成。

变量名是区分大小写的并且不能以数字开头。

Java LotusScriptint i; Dim i as IntegerString s; D im s as String创建函数关于函数语法,LotusScript 和 Java 有两个主要的不同之处。

首先,返回类型放在函数名前面(这与 LotusScript 相反,在 LotusScript 中返回类型放在末尾);第二,Java 使用返回关键字从函数返回值(请参见清单 1)。

清单 1. 创建函数示例return _type function_name(parameter_type 1 parameter_name 1, parameter_type2 parameter_name2) {// 函数代码 ...return return_type_object; }Java LotusScript public int product(int x, int y) { return x*y; } Function product(x As Integer, y As Integer) As Integer product = x * y End FunctionCalling the function:int i = product(2,4);System.out.println(i);Calling the function:Dim i As Integeri = product(2, 4)Print i创建类Java 中创建类的语法与 LotusScript 中的类似。

相关主题