编写终端软件
今天咱们继续Laxcus分布式应用软件开发的话题。
前面两篇分别介绍了Laxcus分布式操作系统的体系结构和Laxcus分布式应用软件的主要组成元素,这一篇开始,咱们正式介绍Laxcus分布式编程规范流程和注意事项。
闲话不多说,咱们直奔主题,还是按照Laxcus分布式应用软件的三个运行区间:终端、边缘端、云端来介绍。因为Laxcus分布式编程知识点较多,咱们本着节约各位看官时间、不影响阅读体验的原则,分成三段来说,本篇首先介绍终端软件编程。在阅读本文前,各位看官应该具备基本的Java编程知识,另外也建议看看Laxcus分布式操作系统内置的各种命令和分布式软件开发包(DSDK)的文档,最好还能使用过Laxcus分布式操作系统,这样能够提高感性认识,加强阅读理解。
命令可以通过帮助窗口查阅
看过上一篇的开发者应该知道,终端在Laxcus分布式应用体系的定位是实现人机交互的输入输出,交互UI分为字符界面和图形界面两种。从长期的用户反馈看,开发者们大多在编写图形用户界面的应用软件,开发字符界面应用软件的人极少,所以咱们抓大放小,本篇就忽略字符界面编程介绍,重点讲讲编写终端图形界面的编程工作。
终端编程需要首先从“main”函数说起,上篇说过,Laxcus分布式应用软件的终端界面采用Java语言开发,它的入口是“public staitc int main”静态函数,和其它平台Java应用不同的是,Laxcus终端main函数需要返回一个整数值(int),而其它平台的Java应用不需要返回数值,是“public static void main”。Laxcus终端main函数返回值代表了启动成功或者失败,0表示成功,负数为失败,Laxcus分布式操作系统有一个为负数值的错误故障码表,如果是不确定的故障就返回-1,但是没有大于0的正整数。Laxcus终端main函数的这个特点,请各位开发者特别注意。
图形界面有两个重要的基础类:LightFrame和LightDialog,前者是框架窗口,即桌面上显示的主窗口;后者是对话窗口,打开时会绑定框架窗口,和其它图形桌面的对话窗口一样,Laxcus桌面的对话窗口也分为模态/非模态两种。LightFrame和LightDialog都继承自LightForm类,LightForm是一个受保护类,不允许开发者使用,所以开始用到任何一个图形窗口时,只能从LightFrame和LightDialog派生。框架窗口和对话窗口都支持系统的皮肤自动切换功能。
框架窗口基础类:LightFrame
对话窗口基础类:LightDialog
运行时桌面环境
LightFrame和LightDialog界面皮肤随系统感知切换
LightFrame和LightDialog都是抽象类,有需要用户实现的抽象方法。LightFrame有两个抽象方法:“release0”,“release1”。LightDialog有一个抽象方法:“showDialog”。
LightFrame的抽象方法
release0方法释放框架窗口关闭前的资源,如关联的对话窗口。release1方法用来释放框架窗口关闭后的非窗口资源,比如线程和各种冗余数据,断开与云端、边缘端的网络通信和RPC的工作,也建议在release1处理。
LightDialog的抽象方法
被LightDialog.showDialog调用的方法
LightDialog的showDialog抽象方法需要开发者实现,功能是打开对话窗口,方法中指定两个参数:1. 父类窗口句柄,它可以是图形桌面句柄或者LightForm类的子类句柄,2. 模态/非模态的布尔值。如果以模态方式打开,showDialog必须有一个返回值,返回值允许开发者自行定义和解释,非模态方式打开时,返回值是一个空指针。根据模态/非模态选项,showDialog中可以直接调用“showModalDialog”和“showNormalDialog”方法,它们都是保护类型,只能被LightDialog子类调用。
Laxcus桌面的系统对话框窗口
目前基于Laxcus桌面上显示的窗口组件,都是从LightDialog派生而来,比如文件对话窗口、云目录对话窗口、字体对话窗口、颜色选择窗口。其它图形组件,比如按纽、文本框、复选按纽,可以使用Laxcus分布式操作系统API提供的,也可以使用Java Swing组件。Laxcus桌面对Java Swing组件无缝支持。
除了图形人机交互界面之外,在底层运行环境,终端与边缘端和云端的远程交互,有两种方式,一种是通过“PlatformKit.findListeners”方法调用“CommandDispatcher”接口,把命令提交给系统,再由系统分发处理。指令可以是Command子类,也可以是Command子类的字符串形式,字符串会由系统来解析和生成Command子类。另一种是使用RPC,动态生成远程连接句柄,提交给边缘端。前者完全由系统提供,开发者只负责输入参数。后者由系统定义接口,需要开发者实现各种细则。
第一种是我们推荐使用方式,因为系统已经开发者需要的各种功能,以及底层的网络通信和分布式处理过程全部封装起来,开发者只需要实现参数和指令的输入输出即可。第二种因为需要开发者自已实现大部分功能,拥有更多的灵活性。但是这种编程需要开发者有足够丰富的编程经验,对于初次接触编程工作的开发者,不建议使用。
CommandDispatcher接口
以上是终端软件主要的编程规范和注意事项,本篇介绍完毕,下一篇继续介绍边缘端软件的编程和注意事项。