8. 从Lotusscript到Java

本文探讨了从LotusScript迁移到Java时需要注意的关键差异,包括语法、编程范式和Domino对象API等方面的变化。文章还介绍了如何利用Java的特性来替代LotusScript中的Variant等特性。
摘要由CSDN通过智能技术生成
随着Notes开发逐渐转向使用XPages,主要的编程语言也从Lotusscript变成了服务器端Javascript和Java。无论是开发新的功能还是迁移旧的系统,都需要用这些新语言编写大量代码。使用Java开发有其独特的优势,以后会专门介绍。这里先谈谈从Lotusscript转换到Java需要注意的地方。

首先是语法的差异。这是最明显也最容易注意到的。比如下面这些基本的差别

<wbr></wbr>

Lotusscript

Java

大小写

不敏感

敏感

句末

分号

变量声明

Dim variable as type

Type variable;

错误处理

On error goto

try{}catch{}

对象和值变量

区分,给对象变量赋值时需Set

不区分

此外还有函数的声明、调用,Lotusscript中各种流程控制的结构都有不同的开始和结束语句而Java中使用()和{}完成等等。

这些只要了解对应的语法,都很容易将Lotusscript的代码移植到Java。容易出错的是这样一些规则上的细微差别。

<wbr></wbr>

Lotusscript

Java

判断两表达式是否相等

比较两个值时用=,比较对象时用Is。

==

Select/Switch结构

每个条件执行的语句后不需要break。

需要break。

判断字符串是否相等

=

需使用字符串的equals方法。

字符串在Java中是对象。==比较的是两个对象变量的全等性,即两者是否指向同一对象。

两个来源不同的字符串,即使内容相同,也是不同的对象。

String s1=”abc”;

String s2=”abc”;

s1==s2; //false

s1.equals(s2); /true

定义常量

使用Const关键字

虽然Java保留了const关键字,但是使用final关键字标识一个字段不能改变(相当于定义常量)。

<wbr>其次是编程范式上的不同。Lotusscript是一种兼有面向过程和面向对象范式的语言,而且在传统的开发中大量使用的还是面向过程的风格,程序被组织成一个个函数。Java则是完全的面向对象的语言。即使只执行一行语句,也需要创建一个类。这种思想上的转换如果在Lotusscript开发中已经大量创建自定义对象也不难完成。</wbr>

再次是Java与Lotusscript特性的差别,包括Domino对象的API。

  1. Lotusscript中大量使用variant。这是一种标记了自身类型的多用途的数据结构。它使得一个函数可以处理多种不同的参数类型,比如Format。而且可以包含数组,使得数组的赋值和传递、返回成为可能。使用它,还可以形成一种“后期绑定”的效果,将不同类型又具有同样方法的对象用一个变量表示。Java中具有类似效果的就是Object。但是我们很少直接使用它,因为Java是一种强类型的静态语言,需要明确指定变量的类型。而且variant在Lotusscript的功能都被Java的特性一一实现。函数的多种不同的参数类型通过方法的重载解决。数组本身可以被传递给函数和被返回。“后期绑定”的效果可以通过类继承和接口实现。
  2. 为了使得一个函数能处理不同参数的情况,Lotusscript采用的方式是Variant和可选参数,Java则是通过方法重载。
  3. Domino对象的Lotusscript<wbr>API经常返回可变长度的数组,比如NotesDocument.GetItemValue()。在JavaAPI中,这些数组都被Vector代替,要取其中某个值时需要调用Vector.get()方法,或者在最常见的取仅有的第一个值时使用getItemValueAsString/Integer/Double()。</wbr>
  4. Lotusscript中含有一些用于与用户交互的语句,比如MessageBox,也可以访问Notes前端对象。Java只能访问Notes后端对象,并且与用户的交互需要通过页面和具体的控件、Javascript实现。
  5. Lotusscript中Variant未赋值时可用IsEmpty检测是否为空,对象变量未赋值时为Nothing,NotesAPI在未能获得有效对象时也返回Nothing。在Java中,这些都被null代替。

最后是Java开发在Domino领域特别需要注意的,这些方面即使是Java的老手也会觉得陌生。这主要包括两点:

  1. 对象的回收
  2. 安全性暨Session的创建

这两点都需要较长的说明,之后会专门介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值