Sakai开源学习平台的实现技术分析

时间:2022-08-08 09:27:40

Sakai开源学习平台的实现技术分析

摘要:Sakai是国外著名大学合作开发的一款优秀学习平台。它充分体现了自由、合作、分享等开源精神。文中对Sakai学习平台的实现技术进行了简要分析,主要包括基本开发环境、项目管理、数据库技术、表现层技术以及Sakai的工具等。

关键词:Sakai;开源;学习平台;Maven;数据库;表现层技术;工具

中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)26-7353-03

Technical Analysis of Sakai Open Source LMS

HE Chao

(East China Normal University, Shanghai 200062, China)

Abstract: Sakai is a good LMS, developed by some famous foreign University. It fully embodies the spirit of open source: freedom, cooperation and sharing. It is briefly analyzed the programming technology used in the Sakai open source LMS in this paper, including the development environment, project management, database technology, presentation layer technology, as well as the Sakaitools.

Key words: Sakai; open source; LMS; database; presentation layer; tools

1 Sakai学习平台简介

随着社会开源软件的不断发展,开源软件以其独特的优势(免费使用,维护费用低;灵活、可移植性好等)赢得了越来越多的用户的青睐。近年来,在教育领域内也涌现出了许多优秀的开源软件,例如:Moodle、Sakai等等。其中,Sakai是由美国印地安那大学、密西根大学、斯坦福大学和麻省理工学院于2004年共同发起的一项开源CMS计划,它得到了梅隆基金的支持。Sakai项目的主要目标是开发Sakai程序的系统架构,将之与已有各种CMS工具和组件整合为一体。这些工具与组件既可用于课程管理,同时也可作为原有CMS模型的扩展插件。更为重要的是Sakai也将支持研究性协作学习。

作为一款开源的软件,要得到Sakai平台的代码是很容易的,然而,要真正的用好Sakai平台,我们还必须得对其进行一些本地化工作,有时候还需要将一些已有的系统整合到Sakai平台中去,这就要求我们对Sakai系统的实现技术有一定的了解了。在本文中将尝试对Sakai系统的一些实现技术进行分析,希望能对Sakai的应用推广起到一定的作用。

2 Sakai系统的实现技术分析

Sakai是一款使用Java语言开发的B/S模式的平台,它很好的实现了各模块的组件化,以及模块之间的松散耦合,它的实现技术中实现了许多现在流行的技术,例如:Spring,Hibernate,Velocity,JSF等等,本文将在Sakai2.5版本的基础上进行分析。

2.1 Sakai的基本开发环境

表1为Sakai的基本开发环境。

2.2 Sakai的项目管理与构建

对于一个大型项目,特别是由众多开发人员分别开发的项目来说,一个优秀的项目管理与构建工具是非常重要的,它可以使项目管理与构建变得简单。在Sakai2.5中,使用的项目管理与构建工具是Maven2,它是由apache软件基金会支持的一个开源项目。使用Maven,我们就只需要在自己的项目中维护一个pom.xml文件即可,该文件是Maven的核心文件,它指示了Maven如何工作。这使得Maven的组件和工具开发人员只需要关注自己模块的开发与部署即可,极大的减少了工作量。

在Sakai的构建中常用的Maven命令如表2[2]。

此外,要使用Maven正确的构建Sakai,还需要在系统环境变量中添加如下参数:MAVEN_OPTS=-Xms256m-Xmx512m-XX:PermSize=64m -XX:MaxPermSize=128m,该参数指定了Maven在构建时所需要的最小内存和最大内存。

2.3 Sakai的数据库技术

Sakai使用数据库来存储持久信息,例如注册的用户信息,建立的站点的信息以及各种资源的信息等。Sakai支持的数据库包括Hypersonic SQL(推荐只在开发时使用)、Mysql和Oracle[3],此外,对于Mssql、db2,Sakai也提供了很好的支持。

通过分析代码我们发现,Sakai的数据库技术的核心代码是在db、db-impl和db-util三个模块中实现的。其中,db模块提供了api接口,而在db-impl中则是这些接口的基本实现,在其它模块中进行数据库操作时主要会使用到这两个模块的代码。

在db-impl模块中提供了两种访问数据库的方式:a.使用Hibernate进行数据库操作;b.不是用Hibernate,直接使用jdbc进行数据库操作。使用前一种方式进行数据持久化,开发者只需要提供Hibernate映射文件以及Pojo对象,然后通过配置Spring的配置文件即可完成。对于后一种方式,相对要复杂许多,需要开发者自己进行sql语句的编写以及查询结果的处理,db-impl模块只提供连接和管理以及查询的实际执行,使用此种方法的好处是sql语句的编写可以进行优化,更加灵活。

在Sakai的核心集中,使用第二种方式的情况较多,然而在自己开发Sakai工具的时候使用第一种方式更加简单,而且难度较低,这也是Subclipse(Sakai的Eclipse插件)中推荐使用的方式。

2.4 Sakai的表现层技术

表现层技术就是用于生成用户界面的技术,Sakai中使用到的表现层技术主要包括Java Servlet、JSP、JSF、RSF和Velocity这几种。这几种技术各有其优缺点[4]:

1)Java Servlet

① 所有的事情都必须手动处理,开发者难以用它进行工作;

② 代码和HTML混合在同一个Java文件中,设计难以进行页面设计;

③ 没有真正的和Sakai集成(但是可以使用)。

2)JSP

① 对于开发者来说,这是一种极其容易入门的技术,难度低;

② 代码和用户界面完全混合在同一个文件中,没有任何的分离;

③ 没有真正的和Sakai集成(但是可以使用)。

3)JSF

① 有很高的学习门槛并且难以使用;

② 在模板中并未使用HTML并且可以在UI中编写代码,UI设计者难以使用;

③ 很好的集成到了Sakai中,并且当前仍在持续更新。

4)RSF

① 有一定的学习难度,但熟悉之后很容易使用;

② 代码和UI很好的被分离,而且使用纯粹的XHTML模板;

③ 当前和Sakai集成的很一般,但是仍在快速发展中。

5)Velocity

① 有很好的文档,开发者可以很容易的入门;

② 代码分离程度一般,UI设计者使用其工作不是很容易;

③ 当前已经很好的集成到Sakai中;

④ 这是当前Sakai中使用最多的表现层技术。

2.5 Sakai的国际化与本地化

国际化指的是设计和编写应用程序以便可以在全球或多国环境中使用的过程。国际化程序能够支持不同的语言以及不同格式的日期、时间、货币和其它值,而无须软件修改。通常,我们将国际化(internationalization)简写为 I18N,原因是 internationalization 一词开始的I和最后的N之间有18个字母。

Sakai的国际化利用了Java语言提供的基于unicode的国际化支持。通过Locale对象定义地区、语言、操作系统等信息,调用ResourceBundle的getBundle方法实现资源文件的数据绑定,轻松本地化不同的语言版本。

这样,在对Sakai进行本地化(汉化)时,主要的工作就是编写属于自己语言的资源文件了。通常,Sakai中的资源文件位于bundles目录下,且按照如下规则命名:文件名+国家地区编码+.properties。

到目前为止,Sakai支持的语言与地区包括:English (US & UK), Japanese, Korean, Dutch, Simplified Chinese, Spanish, French (France & Canada), Catalan, Swedish, Arabic, Russian, Portuguese (Portugal & Brazil)[5]。

2.6 Sakai的工具(tools)

Sakai的工具指的是那些用来生成用户界面(发送到浏览器的html或者可以通过浏览器下载的任意媒体类型的字节流)。Sakai的工具可以被多种导航系统调用,通常作为站点的一个功能模块呈现给用户,另外,一个工具还可以作为“帮助者(helper)”被其它的工具调用。通常,任何基于Servlets或者JSP或者JSF技术的web应用都可以经过少量的修改成为一个Sakai工具。这主要包括两个步骤:

1)编写工具注册配置文件

这个工具注册配置文件是一个xml文档,主要包括:工具的id(用于引用该工具,必须在系统中是唯一的);工具的默认配置信息和其它一些会被工具调用者使用到的元数据信息。假如现在有一个名为TaskList的web应用,那么该文件必须被放置在TaskList/tools目录下,通常采用和工具id相同的名称来命名。下面是一个典型的工具注册配置文件的内容:

accessSecurity="tool">

其中,tool元素的id属性的值就是该工具在Sakai中的唯一id;category元素用于将工具分类,指明其可使用的站点类型,在上面的例子中,该工具将在course和project类型的站点内使用;configuration元素用于配置一些额外的信息。

2) 修改web.xml配置文件

任何Sakai工具都必须包含ToolListener(Sakai用来发现并处理注册配置文件的监听器类),具体的操作只需要将如下代码添加了web.xml配置文件里即可。其中org.sakaiproject.util.ToolListener是tool-registration模块提供的。该类将在Sakai工具启动时被调用,负责工具的注册以及一些参数的初始化工作。

(in file /WEB-INF/web.xml in webapp TaskList.war)

org.sakaiproject.util.ToolListener

通过以上工作,一个web应用就被成为Sakai系统的工具了。

3 结束语

Sakai是一个复杂的、功能强大的、开源的教学管理平台。它是由许多的国外的著名大学共同开发的,充分的体现了开放、自由、协作的思想。通过对其使用的实现技术进行分析,我们可以从中学习到许多很好的教学平台设计思想和代码实现方法,而且,只有真正的理解了其实现技术,才能更好的促进Sakai平台的本地化,才能更好的用好这个平台。本文正是基于这样一种想法,对Sakai的部分实现技术进行了一些介绍,还有许多未能涉及的地方与不足之处,还需要进一步的研究。

参考文献:

[1] Development Environment Setup Walkthrough[EB/OL]./display/BOOT/Development+Environment+Setup+Walkthrough.

[2] Using Maven 2.x to build and deploy Sakai[EB/OL]./display/BOOT/Using+Maven+2.x+to+build+and+deploy+Sakai.

[3] Database Documentation[EB/OL]./display/DOC/Database+Documentation.

[4] Comparing Sakai Display Technologies[EB/OL]./display/BOOT/Comparing+Sakai+Display+Technologies.

[5] Internationalization (I18N) & Localization (L10N)[EB/OL]./display/I18N/Home.

上一篇:基于PCI9054的数据采集卡的设计与实现 下一篇:多功能数字转速表设计及实现