公开/公告号CN1641569A
专利类型发明专利
公开/公告日2005-07-20
原文格式PDF
申请/专利权人 英业达股份有限公司;
申请/专利号CN200410001279.1
申请日2004-01-06
分类号G06F9/44;
代理机构72003 隆天国际知识产权代理有限公司;
代理人陈晨;郭凤麟
地址 台湾省台北市
入库时间 2023-12-17 16:21:02
法律状态公告日
法律状态信息
法律状态
2012-03-14
未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20080130 终止日期:20110106 申请日:20040106
专利权的终止
2008-01-30
授权
授权
2005-09-14
实质审查的生效
实质审查的生效
2005-07-20
公开
公开
技术领域
本发明涉及一种插件功能的实现方法,特别是关于一种在Java小应用程序下实现插件功能的方法。
背景技术
插件(Plug-in),英文的原意是指电源插头,在软件领域中,特别是在浏览器中,是指一些扩展小程序。严格的插件(Plug-In)大家都可以看得到,比如和浏览器相关的各种各样的插件,用来显示不同格式的文件和播放不同的多媒体。又如PhotoShop中的各种各样的插件,显然也是用来实现一些辅助的功能。插件(Plug-In)目前最流行的作用就是能使应用比较灵活,可以自由的为应用增加新的插件或者是卸载现有的插件,而应用程序不需要重新编译和连接。
Java语言可以编写两种类型的程序:应用程序(Application)和小应用程序(Applet)。应用程序是可以独立运行的程序,而Applet不能独立运行,需要嵌入HTML(Hypertext Markup Language,超文字标记语言)文件,遵循一套约定,在支持Java的浏览器(如:Netscape Navigator 2.02版本以上,HotJava,Microsoft Internet Explorer 3.0版本以上)运行,是Java一个重要的应用分支,也是当时Java最令人感兴趣的地方(它一改网页呆板的接口),就是在WWW网页(Home Page/Pages)设计中加入动画、影像、音乐等,而要达到这些效果,使用最多的是Java Applet和Java Script。
JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文字标记语言、与Web客户交互作用,从而可以开发客户端的应用程序等。它是通过嵌入或文件引用在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择,具有基于对象、简单、安全、动态、跨平台性等特性。
如同Applet执行于浏览器而延伸了浏览器的功能一样,HTTP Servlet也执行于具有Java功能的Web服务器,而延伸了Web服务器的功能。Servlet是利用Java Servlet应用程序设计接口(API)的Java程序。它们以ServletName.class的方式存在,也可能并入JAR(Java保存文件)文件中。
Java是一种极具有动态性的语言,类似Windows的动态链接库(DLL),Java应用程序总是被编译成若干个单独的类(Class)文件,程序执行时根据需要由Java虚拟机动态加载相应的类。术语“类加载”指的就是找出一个给定类名的字节所在的位置并且将这些字节转换成Java类实例的过程。Java虚拟机(JVM)中所有的java.lang.Class实例都作为一个数组开始,该数组被组织成由JVM规范定义的类文件格式。
类加载是由JVM在启动过程中执行的,紧接着由java.lang.ClassLoader类中的子类执行。这些类加载器提供一种抽象概念,使JVM不需要知道类字节的具体位置就可以将其加载,能够进行本地和远程存储,以及实现动态类生成。
简而言之,classloader是java.lang.ClassLoader类的子类,负责类的加载。在Java应用程序中,有很多使用不同机制加载类的不同类加载器。每一个类加载器,都是为了与一个或者多个代码源(Codesource)协同工作而设计的。代码源是一个根位置,从这个位置,类加载器去寻找类。代码源被定义用来表示二进制类文件、必须先被编译的Java源代码或者实时生成的类的物理存储地址。
正是由于Java语言的强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象的特点,其已在网络编程语言中占据了无可比拟的优势。
而另一方面,随着经济和高科技的发展,企业开始大量应用网络程序来管理生产、经营等工作。由于企业在不断的发展与进步,按企业早期经营模式设计的系统有可能已经不能满足现在或将来的应用,需要将系统升级,系统升级最常用的办法是增加功能模块或是重新改写。但是重新改写成本太高,除非系统结构需要改变,比较经济的办法是根据企业的新需求增加一个新模块,这样对企业和开发者来说都有利。这就要求在开发阶段需要合理设计系统,以便在将来能增加模块。
一种可行的办法是加入插件(Plug-in)功能,系统设计完成投入使用后,用户可根据需要将一些额外的功能以插件(Plug-in)的形式加入系统,系统将把插件(Plug-in)模块当作自己的一个功能模块进行调度。而在网络应用系统中,Java的Applet被大量应用,如能在Applet中实现插件(Plug-in)功能,将会给设计带来很大的方便,因此,如何能在Java Applet下实现插件(Plug-in)功能,已经成为急待解决的问题。
发明内容
本发明为解决上述问题而提供一种Java小应用程序下插件功能的实现方法,用以在Java Applet下呼叫插件模块。
本发明提供一种Java小应用程序下插件功能的实现方法,用以在Applet下动态加载插件模块来扩展系统功能,该方法首先是指定一特定的插件目录用于存放所有的插件模块;然后系统类加载器在初始化时遍历该插件目录以搜寻插件配置文件;根据该配置文件解析该插件属性并在系统菜单中构建该插件菜单项;捕捉使用者点选该菜单项的事件;该类加载器根据该插件的属性获得该插件的类型;根据该插件的类型响应使用者点选事件。
本发明利用Java的动态加载类的功能特性,通过类加载器动态加载插件模块,使应用一网络系统人员可以按照格式编写自己的插件模块,并整合到Applet中,而无需因为功能上的某些局部改进而重新升级系统,可以为系统设计带来很大的可扩展性。
附图说明
图1为本发明在Java小应用程序中插件功能的实现方法流程图;
图2为本发明所提供的在插件为应用程序时响应使用者点选事件的实施例流程图;
图3为本发明所提供的在插件为页面时响应使用者点选事件的实施例流程图;
图4为本发明的应用环境整体流程图;
图5为本发明所提供的构建菜单项的流程图;及
图6为本发明所提供的动态加载类的实施例流程图。
其中,附图标记说明如下:
步骤101指定一特定的插件目录用于存放所有的插件模块
步骤102系统类加载器初始化时遍历该插件目录以搜寻插件配置文件
步骤103根据该配置文件解析该插件属性并在系统菜单中构建该插件菜单项
步骤104捕捉使用者点选该菜单项的事件
步骤105该类加载器根据该插件的属性获得该插件的类型
步骤106根据该插件的类型响应使用者点选事件
步骤201插件目录中查找相对应的类
步骤202根据该类构造该类的一个实例
步骤203呼叫该实例的初始化方法启动该应用程序
步骤301呼叫Applet的Jsp文件中加入一个呼叫另一个页面的JavaScript函数
步骤302将插件作为参数传递给该JavaScript函数
步骤303在Applet呼叫该JavaScript函数时,由该方法呼叫该插件模块
步骤401查找存于插件目录下的Plug-in配置文件Config.xml
步骤402、403将配置文件中的参数传递到客户端
步骤405、406 以页面形式实现功能的动态插入
步骤404直接插入程序
步骤501系统初始化
步骤502搜索Plug-in目录
步骤503是否有Plug-in配置文件
步骤504获得该Plug-in在系统菜单中的多项属性
步骤505在系统菜单上加入该项菜单
步骤601若Plug-in类型为应用程序
步骤602搜索对应的类
步骤603、604找到该类后构造该类的一个实例
步骤605呼叫该实例的初始化方法
步骤606若Plug-in为一个Jsp页面
步骤607加载该页面
具体实施方式
请参阅图1,为本发明Java小应用程序下插件功能的实现方法流程图。该方法首先指定一特定的插件目录用于存放所有的插件模块(步骤101);然后系统类加载器初始化时遍历该插件目录以搜寻插件配置文件(步骤102);根据该配置文件解析该插件属性并在系统菜单中构建该插件菜单项(步骤103);捕捉使用者点选该菜单项的事件(步骤104);该类加载器根据该插件的属性获得该插件的类型(步骤105);根据该插件的类型响应使用者点选事件(步骤106)。
其中,该插件类型为应用程序时,该响应步骤(步骤106)请参阅图2,其首先在插件目录中查找相对应的类(步骤201);然后根据该类构造该类的一个实例(步骤202);最后呼叫该实例的初始化方法启动该应用程序(步骤203)。
而当该插件类型为页面时,该响应步骤(步骤106)请参阅图3,其首先在呼叫Applet的Jsp(Java Server Pages)文件中加入一个呼叫另一个页面的JavaScript函数(步骤301);然后将插件作为参数传递给该JavaScript函数(步骤302);最后在Applet呼叫该JavaScript函数时,由该方法呼叫该插件模块(步骤303)。
本发明主要是利用了Java的动态加载类的功能特性,在一个网络环境中,如果上述的插件目录位于服务器端时,还包括一将该配置文件中的参数传递到客户端的步骤,其整体结构流程图如图4所示,首先查找保存于插件目录下的Plug-in配置文件Config.xml(步骤401);如果这个插件目录位于服务器端,则需要将配置文件中的参数传递到客户端(步骤402、403);由于Plug-in对系统来说是一个单独的模块,可以是一个应用程序,也可以是一个页面,因此可以对这两种类型分别处理,如果Plug-in是一个页面,我们可以在调用Applet的Jsp文件中加入一个调用另外一个页面的JavaScript函数,将Plug-in作为参数传给这个JavaScript函数,当Applet调用这个方法时,由这个方法调用Plug-in模块,以页面形式实现功能的动态插入(步骤405、406);另一种情况是Plug-in是一个独立的应用程序,则应用Java的动态加载机制直接插入程序(步骤404)。
如图5所示,为本发明所提供的构建菜单步骤的实施例流程图。首先系统可以提供一个类装载模块,该模块在初始化(步骤501)时会搜索Plug-in目录(步骤502),寻找Plug-in目录下是否有Plug-in配置文件(步骤503),如果有配置文件,则说明有一个Plug-in模块需要加载系统,系统解析该配置文件,取得该Plug-in在系统菜单中的位置、状态、名称等属性(步骤504),根据这些属性在系统菜单上加入该项菜单(步骤505),以便用户在选中此菜单时启动Plug-in模块。
请参阅图6,为本发明所提供的响应使用者点选事件,动态加载类的实施例流程图。Plug-in菜单构造完成后,可以响应用户点击事件,用户点击该项菜单时,类装载模块根据Plug-in的class type属性判断出该plug-in为何种类型,若Plug-in类型为应用程序(步骤601),则在Plug-in目录中寻找对应的类(步骤602),找到该类后构造该类的一个实例(步骤603、604),然后呼叫该实例的初始化方法启动应用程序(步骤605);若Plug-in为一个Jsp页面(步骤606),则利用动态加载模块加载该页面(步骤607)。
以上所述,仅为本发明其中的较佳实施例,并非用来限定本发明的实施范围;凡依本发明申请专利范围在不脱离本发明的精神和范围内所作的均等变化与修饰,均应属于本发明专利权利要求书所要求保护的范围内。
机译: 软件生成设备,软件生成支持设备,软件生成方法,Java代码实现设备,软件以及Java Lyee计算方法(商标)语言的实现方法
机译: 通过使用Java符号在完成状态下实现机器的方法
机译: 在存在库功能的情况下,根据微控制器界面的控制和实现的实现,在存在一组服务功能时自动接收协议实现的方法