D 的个人博客

全职做开源,自由职业者

  menu

关于桌面界面和插件设计思想

关于桌面界面开发:

Desktop版本的界面换语言啦!

原先考虑的JavaFX,熟悉了一个星期。

它是一个动态脚本语言,理论上是可以作出更快速的开发,和Java类的互操作也有问题。

可惜,目前的IDE(NetBeans IDE)不能把它的优势完全发挥出来,连开发JavaFX的NetBeans插件都是Beta版本的- -

相比较,应该选择Swing。

所以今天早上我把桌面版本的界面重新做了下设计,原型已经出来了。

下午结合辞典引擎的服务,已经可以搜索词汇了 :-)

不过,目前问题比较大的是性能问题,和上次讨论的结果一样,性能问题出来了。

试验中,我加载了两部辞典(物理大小20.4Mb,词汇共计62万左右),索引文件完全加载后程序运行起来至少耗费50Mb内存。。。。

关于索引的部分必须要重新设计一下!

到目前为止,我们的第一轮迭代基本完成了(14号迭代0结束,刚好2个星期),大家要注意关注项目管理中心的素材、任务、缺陷、Issue的计划。

 

关于支持Plugins的设计思想:
现在的词库引擎核心是Fixed和Dynamic两类。Fixed下目前只有StarDict的查询引擎;Dynamic下有基于XML的查询/编辑引擎。

我觉得可以把Fixed类型的词库查询引擎做成支持插件的设计,可以让其他开发人员扩展查询引擎。举个例子:

1. John开发了一个支持dict.org辞典格式的引擎

2. Vanessa开发了一个可以在WikiPedia上搜索词汇的引擎

他们的引擎都实现了Fixed类型引擎的接口并编译成了Jar包,我们的辞典框架可以方便地选择所需要的辞典引擎。对用户来说,可能就是在下载词库 引擎Jar后点,在StongeAge的词库引擎管理界面里来个"Install Query Engine",以后可以方便地 选择/反选/卸载 各种引擎。只要词库查询引擎够数量,世界上还有什么单词查不到的呢?这大大方便了用户!

上面只考虑了Fixed类型的词库查询因为Fixed的查询方法前人已经有辞典格式/搜索服务接口来规定了,要作edit是不可能的。

但,这至少有两个优点:

1. 我们可以集中努力去做Open & Real-time的特性

2. 让其他开发词库引擎的开发者可以更专注地做好Fixed类型搜索

以上只是目前的想法,技术方面也作了一些研究:

OSGi4.1,eclipse3.x用的就是这个规范(基于Equinox框架)

这个是Java插件设计目前在业界据说使用最好的,但技术本身的复杂度还需要继续一定时间来实验。

 

好了,今天又罗嗦了一推,还是那句话:大家要积极讨论啊,交流有益身心健康:-)