11月3日,IBM 发布了一个重要的信息:Notes/Domino 的发展路线图。原文件请点此查看,以下是我个人的解读:

Domino 又一次要死掉了?

前些时间由于 902 版本的取消,Domino 社区里引起了很多讨论,很多人对 Domino 后续的发展持悲观态度(例如:There is no 9.0.2. Dead. Canceled. Killed. )。

IBM 官方的回应是 901 版本的支持会延长到 2021 年,而且期间不仅是 bug fix,也包含新功能的增强,实际上的 902 版会以 901 feature pack 的形式发布。

产品更新策略

一个重要的变化,901 FP7 已经从 fix pack 转变为 feature pack,后续的所有新功能也都是以 FP 形式发布,所以才会有上文提及的取消 902 版本。

IBM 官方的说法是为了加快版本迭代速度,才引入了这个变化。其实这个行为也很好理解,类似于 Windows 10 的策略,似乎大家都不准备让产品的大版本号往前滚动了:毕竟升一个大版本要做很艰难的决定,小版本就简单多了不是么。

但是对于用户来讲,以前 FP 包发布后是可以无脑更新的,毕竟都是在改 bug;现在加入了新功能,是否要更新肯定就要打一个大大的问号了。

支持的操作系统

新的路线图中,将现有的操作系统分为两类:

  • Win/RHEL:支持后续的 feature pack,有功能的持续改进
  • 其他操作系统(AIX/IBM i):仅有安全性更新、bug修复

Verse/iNotes

Verse 的私有环境版(非云环境,Verse On-premises)将于 12 月发布。VOP 将替代现有的 iNotes,作为今后的新邮件客户端。

Notes/Domino 后续新功能

  • Java 1.8 + OSGi/Eclipse 4.x

祖传的 1.6 终于更新了,感动啊

  • 视图索引可移至 nsf 外部

这个还是不错的,nsf 就应该存持久化的数据;索引这种缓存类数据分离出来后,更方便独立优化

  • XPages

持续更新,说起来 XPages 早就已经开始版本内的功能迭代了(853 Upgrade Pack 1)

总结

总体来说,Domino 肯定会继续发展和更新的。但是主要集中在 Java 端:VOP 基于 Connections、XPages。

啥时候把祖传的 NSF 存储也更新一下啊,万恶的 16K、32K 限制……

Notes/Domino 9 中文版已经于四月底发布,以下是我比较看重的新功能:

服务器端 Javascript 调试器

重大改进,可以像调试 Java 那样下断点、监控变量等。

Dojo 调试开关

打开后可以发送未压缩的 Dojo 代码到浏览器端,便于调试。这个太方便了!

Security Assertion Markup Language (SAML)

一种新的 SSO 方式,甚至可以跨域(原有的LtpaCookie方式无法跨域)。

64位版的 xLinux 服务器

终于支持64位了,以前 xLinux 只有32位,基本无法用作生产服务器。

Social 特性

Domino 9 名字后面多了一个 Social Edition,足见其重要性。主要是对 OpenSocial 标准的支持,包括嵌入式体验等。理念蛮好,但是大面积的实际应用估计还要一段时间。

XPages 编辑器增强

自动完成、为CC增加链接导航、悬停帮助等。

关闭应用程序选项

小改进,但是很实用。随时关闭不用的 NSF 应用程序是个好习惯。

Jar 设计元素

与上一版加入的 Java 设计元素类似,只能在 XPages 中使用。

日历 API

通过 NotesCalendar 对象操作日历对象。

整合的 XPages Extension Libary

整合了各种 extlib 控件、REST 服务等,不用再安装 Upgrade Pack 了。

参考链接:What’s new in IBM Domino 9.0 Social Edition?
What’s new in IBM Domino Designer 9.0 Social Edition?

前些时间我介绍过 Mastering XPages 这本书,这本书的内容非常好,只是由于语言的限制很多 Domino 开发人员还没有读这本书。现在本书的中文版已经发布了,所以我再次郑重推荐此书:

本书在架构方面包含了 XPages 的设计思想、JSF 的介绍(XPages 是基于 JSF 框架的);应用开发方面包含了所有控件的介绍、Domino 文档/视图数据源的应用;还涵盖了扩展性、国际化、安全性、性能等方面。

Mastering XPages 是现阶段关于 XPages 最全面、最权威的文档和资源,建议每一个 Domino 开发人员阅读

消息来源:Mastering XPages released – in Chinese

相关链接:豆瓣读书亚马逊京东当当china-pub

XPages 为我们带来了新的开发体验,但其服务器端组件树、服务器端状态存储等特性会消耗大量的内存。Domino 8.5.2 版之后,为 HTTP JVM 分配的内存默认为64M,如果使用了较多的 XPages 的话,一般来说这个默认值是不够的。可以通过以下 Notes.ini 参数调整(增加到256M):

HTTPJVMMaxHeapSize=256M
HTTPJVMMaxHeapSizeSet=1

如果使用了较多的XPages,通常来说32位操作系统推荐设置为256M,64位操作系统+32位Domino为1024M,64位操作系统+64位Domino为物理内存的1/4。当然具体环境请酌情调整。

在实际使用 XPages 的过程中,我们发现第一次访问时会非常慢,有时候甚至要等5秒钟以上。这是因为第一次访问时需要加载一些 XPages 相关的 class,所以耗时比较长。

为了解决这个问题,在 Domino 8.5.3 中引入了 XPages 预加载功能。通过以下 Notes.ini 参数实现:

XPagesPreload=1
XPagesPreloadDB=myDb.nsf/myXPage.xsp,myDb.nsf/test.xsp

请参考:Domino Designer 8.5.3 中的新增功能

我们之前提到过,XPages 是基于 JSF 1.1 开发的,在 JSF 中有个很重要的概念:生命周期的六个阶段

在开发 XPages 的过程中,我们经常遇到一段代码会运行很多次的情况,实际上就是在不同的阶段执行的。我们通过 LifeCycleListener 可以记录每个阶段的开始/结束,有助于我们更深入的理解 XPages。结果类似于:

HTTP JVM: Before phase: RESTORE_VIEW 1
HTTP JVM: After phase: RESTORE_VIEW 1
HTTP JVM: Before phase: APPLY_REQUEST_VALUES 2
HTTP JVM: After phase: APPLY_REQUEST_VALUES 2
HTTP JVM: Before phase: PROCESS_VALIDATIONS 3
HTTP JVM: After phase: PROCESS_VALIDATIONS 3
HTTP JVM: Before phase: UPDATE_MODEL_VALUES 4
HTTP JVM: After phase: UPDATE_MODEL_VALUES 4
HTTP JVM: Before phase: INVOKE_APPLICATION 5
HTTP JVM: After phase: INVOKE_APPLICATION 5
HTTP JVM: Before phase: RENDER_RESPONSE 6
HTTP JVM: some debug info from print()…
HTTP JVM: After phase: RENDER_RESPONSE 6