6. Lotus Notes中的开发语言

Lotus Notes中的开发语言有很多种,这在其它平台中是比较少见的。每种语言都有各自的长处和适用的场合,本文就简单介绍和比较在经典Notes开发和XPage开发两种类型下的各种语言。

经典Notes开发

这里的经典是指相对XPage技术出现之前的Notes开发。

1.公式语言

公式语言是最早出现在Notes中的程序语言。它主要是用来进行简单的计算和自动化操作。其提供的公式,即API,分为两大类,@function和@command。前者给出了一般程序语言中常用的一些函数,比如类型转换、数学运算。这些与变量、操作符等构成了类似其他程序语言的功能较弱的微型语言。后者则主要是UI操作对应的命令,Notes菜单栏中大部分的命令都可以藉由它们实现。

在公式语言中,可以直接引用当前文档的域值,还有方便的List操作,很适合于计算域值、视图的列值。再加上可以使用@command进行各种界面操作,甚至可以使用公式语言写出一个完整的流程应用。

2.LotusScript

公式语言的解释器在R6版本中进行了重写,提高了速度,也除去了很多奇怪的规定,比如变量在使用之前要先给自身赋值、不能重复使用等等,并且增加了许多功能如循环、数组。尽管如此,用公式语言还是无法写出较复杂的逻辑,并且由于无法写函数进行代码重用和难以调试的缺点,新的一种脚本语言LotusScript被增加到Notes平台中。

LotusScript可以被看作是Lotus产品中的VBA。它们的语法基本一致,只是包含的对象接口不同。LotusScript与事件模型相结合,极大地方便了开发各种灵活强大功能。也是在R6中LotusScript的功能得到了加强,一些常用的函数不再需要调用公式语言或者自己开发,比如关于数组的几个函数。能够访问的Notes对象也进一步丰富。

LotusScript是一种基于对象的脚本语言,对Notes功能地调用都是通过使用各种Notes对象。通过自定义类,也可以大大提高程序的清晰性和重用性。因此,LotusScript是经典Notes开发中主要使用的语言。

3.JavaScript

随着Web系统的流行和JavaScript广泛使用,Notes的设计师也将它引入了Notes。与LotusScript一样,JavaScript可以被用来写各种表单事件的处理程序。Notes的设计师预想这样能带来一个好处:表单中的事件处理程序在客户机和浏览器中可以共用同一套JavaScript。Lotus Designer还提供了当时少见的JavaScript保存时语法检查。使用JavaScript做一些表单前端的运算确实比使用LotusScript更为简洁,不过由于无法访问Notes对象,它的使用受到很大限制。

4.Java

Java从Sun公司诞生后不久就成为世界上最流行的程序语言。作为一种完全面向对象的语言,它提供了比LotusScript更为丰富和强大的许多特性,比如接口、方法重载、静态方法。而且Java还有巨大而功能强大的Library可以调用,比如各种容器类Vector, Arraylist等。另一个典型的情况是在访问关系型数据库时,使用JDBC就比采用LotusScript和ODBC更为灵活方便。但是,使用Java无法访问Notes的前端对象,进行和用户的交互操作,它在Notes中的应用仅仅被限制在开发代理时。

XPage开发

  1. 公式语言

在全新的XPage开发中,古老的公式语言被保留下来有点让人惊讶。在Server Side JavaScript(服务端JavaScript,简称SSJS)中,可以嵌入公式。只不过为了适应JavaScript,这些公式变为区分大小写,而且公式中的分号被改成了逗号。使用公式仅仅是为了向熟悉它们的开发人员提供一种便捷地实现某些功能的方式,这些功能完全可以使用新的JavaScriptAPI或者编写JavaScript函数实现。

  1. Server Side JavaScript

SSJS在XPage开发中的地位与LotusScript在经典开发中相同。XPage是基于JSF技术的采用模块设计和事件模型的Java Web框架。为了提供与经典的Notes开发相一致的快速开发能力和体验,IBM选择使用SSJS来编写各个控件的事件响应程序。与前端的JavaScript不同,SSJS可以方便地访问Notes对象,还可以调用Java的类库。SSJS作为JavaScript,是一种函数式弱类型语言,它的编写风格和使用方式与过程式强类型的LotusScript有很大的分别。

  1. Java

IBM将JSF本身的Java语言放到幕后,为了降低XPage的学习难度。但是使用Java编写Bean来实现事件响应和业务逻辑可以做到显示层和业务层分离。同时,Java也是一种过程式强类型的语言,更易于在编写时发现错误和调试,开发环境比SSJS的强大,也更易于调用自身的类库。唯一的缺点是,使用Notes对象后还带有和在经典Notes开发中同样的先天不足,需要手动调用recycle()方法回收对象。

你可能感兴趣的:(6. Lotus Notes中的开发语言)