CN100365568C - Java小应用程序下插件功能的实现方法 - Google Patents
Java小应用程序下插件功能的实现方法 Download PDFInfo
- Publication number
- CN100365568C CN100365568C CNB2004100012791A CN200410001279A CN100365568C CN 100365568 C CN100365568 C CN 100365568C CN B2004100012791 A CNB2004100012791 A CN B2004100012791A CN 200410001279 A CN200410001279 A CN 200410001279A CN 100365568 C CN100365568 C CN 100365568C
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- java
- menu
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
一种Java小应用程序下插件功能的实现方法,首先指定一插件目录存放插件模块,然后系统类加载器在初始化时搜寻插件配置文件,解析插件属性并在系统菜单中构建该插件菜单项,当捕捉到使用者点选该菜单项的事件时,类加载器根据插件的类型响应使用者点选事件,本发明利用Java的动态加载类的功能特性,通过类加载器动态的加载了插件模块,为系统设计带来很大的可扩展性。
Description
技术领域
本发明涉及一种插件功能的实现方法,特别是关于一种在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小应用程序下插件功能的实现方法,用以在Java小程序下动态加载插件模块来扩展系统功能,该方法首先是指定一特定的插件目录用于存放所有的插件模块;然后系统类加载器在初始化时遍历该插件目录以搜寻插件配置文件;根据该配置文件解析该插件属性并在系统菜单中构建该插件菜单项;捕捉使用者点选该菜单项的事件;该类加载器根据该插件的属性获得该插件的类型;根据该插件的类型响应使用者点选事件,其中该插件的类型为应用程序或页面。
本发明利用Java的动态加载类的功能特性,通过类加载器动态加载插件模块,使应用一网络系统人员可以按照格式编写自己的插件模块,并整合到Java小程序中,而无需因为功能上的某些局部改进而重新升级系统,可以为系统设计带来很大的可扩展性。
附图说明
第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函数时,由该方法呼叫该插件模块
步骤40 查找存于插件目录下的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)。
以上所述,仅为本发明其中的较佳实施例,并非用来限定本发明的实施范围;凡依本发明申请专利范围在不脱离本发明的精神和范围内所作的均等变化与修饰,均应属于本发明专利权利要求书所要求保护的范围内。
Claims (5)
1.一种Java小应用程序下插件功能的实现方法,用以在Java小程序下动态加载插件模块来扩展系统功能,该方法包括如下步骤:
指定一特定的插件目录用于存放所有的插件模块;
系统类加载器初始化时遍历该插件目录以搜寻插件配置文件;
根据该配置文件解析该插件属性并在系统菜单中构建该插件菜单项;
捕捉使用者点选该菜单项的事件;
该类加载器根据该插件的属性获得该插件的类型;及
根据该插件的类型响应使用者点选事件,其中该插件的类型为应用程序或页面。
2.如权利要求1所述的Java小应用程序下插件功能的实现方法,其中该插件属性包括在系统菜单中的位置、状态以及名称。
3.如权利要求1所述的Java小应用程序下插件功能的实现方法,其中该在系统菜单中构建插件菜单项的步骤,是根据该插件的属性在系统菜单中加入该菜单项。
4.如权利要求1所述的Java小应用程序下插件功能的实现方法,其中该插件类型为应用程序时,该响应步骤更包括如下步骤:
在插件目录中查找相对应的类;
根据该类构造该类的一个实例;及
呼叫该实例的初始化方法启动该应用程序。
5.如权利要求1所述的Java小应用程序下插件功能的实现方法,其中该指定的插件目录位于服务器端时,更包括一将该配置文件中的参数传递到客户端的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100012791A CN100365568C (zh) | 2004-01-06 | 2004-01-06 | Java小应用程序下插件功能的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100012791A CN100365568C (zh) | 2004-01-06 | 2004-01-06 | Java小应用程序下插件功能的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1641569A CN1641569A (zh) | 2005-07-20 |
CN100365568C true CN100365568C (zh) | 2008-01-30 |
Family
ID=34867088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100012791A Expired - Fee Related CN100365568C (zh) | 2004-01-06 | 2004-01-06 | Java小应用程序下插件功能的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100365568C (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162424B (zh) * | 2006-10-13 | 2010-09-29 | 北京书生国际信息技术有限公司 | 一种加载界面元素的系统及方法 |
CN100571156C (zh) * | 2006-11-09 | 2009-12-16 | 中兴通讯股份有限公司 | 一种在上级网管中集成下级网管功能的方法 |
CN101661392B (zh) * | 2008-08-29 | 2012-07-25 | 中国移动通信集团公司 | 在移动终端上运行专用界面工具的方法、装置及设备 |
CN101727448B (zh) * | 2008-10-10 | 2011-11-02 | 英业达股份有限公司 | 遍历电子装置目录的方法及其装置 |
CN101938376A (zh) * | 2010-09-08 | 2011-01-05 | 中兴通讯股份有限公司 | 一种实现网管客户端功能使用的方法和系统 |
CN102479077A (zh) * | 2010-11-26 | 2012-05-30 | 金蝶软件(中国)有限公司 | 一种动态构建功能操作的方法、装置及应用系统 |
CN102289378B (zh) * | 2011-09-30 | 2014-12-03 | 互动在线(北京)科技有限公司 | 自动生成应用程序的方法 |
CN105094889B (zh) * | 2012-03-29 | 2018-12-04 | 北京奇虎科技有限公司 | 一种应用程序插件加载方法及装置 |
CN103902265B (zh) * | 2012-12-26 | 2018-01-09 | 腾讯科技(深圳)有限公司 | 一种应用实现方法及相关装置 |
CN104021024B (zh) * | 2014-06-25 | 2017-06-06 | 广州市久邦数码科技有限公司 | 一种桌面系统功能屏幕的加载方法及其系统 |
CN104679572B (zh) * | 2015-03-26 | 2017-09-22 | 北京神舟航天软件技术有限公司 | 基于预加载机制的插件支持方法 |
CN106406834A (zh) * | 2015-07-30 | 2017-02-15 | 中兴通讯股份有限公司 | 一种管理应用系统的方法、装置和系统 |
CN105740660B (zh) * | 2016-01-20 | 2019-02-15 | 广州优视网络科技有限公司 | 一种应用安全性的检测方法及装置 |
CN105930181A (zh) * | 2016-04-12 | 2016-09-07 | 重庆金美通信有限责任公司 | 基于插件机制的运行时界面集成方法 |
CN106096032A (zh) * | 2016-06-28 | 2016-11-09 | 天津海量信息技术股份有限公司 | 一种数据挖掘系统 |
CN109032691B (zh) * | 2018-06-25 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 一种小程序运行方法、装置及存储介质 |
CN110908738B (zh) * | 2019-11-29 | 2021-03-23 | 百度在线网络技术(北京)有限公司 | 用于运行小程序的方法和装置 |
CN111475193B (zh) * | 2020-06-04 | 2021-03-30 | 成都安易迅科技有限公司 | 一种插件的动态更新方法、装置,电子设备及存储介质 |
CN113282291B (zh) * | 2021-06-10 | 2024-07-26 | 豆盟(北京)科技股份有限公司 | 小程序的生成方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1265489A (zh) * | 1999-03-01 | 2000-09-06 | 惠普公司 | 用于嵌入设备的java应用程序管理程序 |
WO2002097610A1 (en) * | 2001-05-30 | 2002-12-05 | Bea Systems, Inc. | System and method for software component plug-in framework |
WO2003027840A1 (en) * | 2001-09-25 | 2003-04-03 | Landis+Gyr Inc. | Utility meter having computer network access for receiving an interpretive language program to implement new meter functionality |
-
2004
- 2004-01-06 CN CNB2004100012791A patent/CN100365568C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1265489A (zh) * | 1999-03-01 | 2000-09-06 | 惠普公司 | 用于嵌入设备的java应用程序管理程序 |
WO2002097610A1 (en) * | 2001-05-30 | 2002-12-05 | Bea Systems, Inc. | System and method for software component plug-in framework |
WO2003027840A1 (en) * | 2001-09-25 | 2003-04-03 | Landis+Gyr Inc. | Utility meter having computer network access for receiving an interpretive language program to implement new meter functionality |
Also Published As
Publication number | Publication date |
---|---|
CN1641569A (zh) | 2005-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100365568C (zh) | Java小应用程序下插件功能的实现方法 | |
US7707563B2 (en) | System and method for network-based computing | |
US7032011B2 (en) | Server based extraction, transfer, storage and processing of remote settings, files and data | |
US8448163B2 (en) | Deploying J2EE web applications in an OSGI environment | |
US7849437B2 (en) | Object oriented web application framework | |
US7246351B2 (en) | System and method for deploying and implementing software applications over a distributed network | |
US8578333B2 (en) | Method and system for client-side user interface enhancement to enable application integration and portalisation | |
US8447832B2 (en) | System and method for providing a web-based operating system | |
CA2275460C (en) | Data navigator interface | |
US8924845B2 (en) | Web application code decoupling and user interaction performance | |
CN101266542B (zh) | 一种在容器中装载组件的方法及装置 | |
CN100380318C (zh) | 在客户机-服务器通信中处理增量数据的方法和计算机系统 | |
US7739691B2 (en) | Framework for declarative expression of data processing | |
US8132152B2 (en) | Extending a scripting language to provide an object hierarchy | |
US20080189679A1 (en) | Method and system for creating, deploying, and utilizing a service | |
CN101127038A (zh) | 下载网站静态网页的系统及方法 | |
CN102073525A (zh) | 基于Java平台的Web业务系统的动态升级方法及装置 | |
AU2004298636A1 (en) | Method and system for creating and providing a multi-tier networked service | |
US20090063661A1 (en) | Method, system and apparatus for presenting forms and publishing form data | |
US8612996B2 (en) | Technique for integrating a distributed object system component with a service oriented architecture application | |
WO2001052055A2 (en) | System and method for implementing a flexible data-driven target object model | |
CN114662022A (zh) | 一种应用隔离方法及装置 | |
Cisco | About This Guide | |
Bai | Developing Java Web Services to Access Databases | |
TWI227857B (en) | Method for realizing plug-in functions using Java applets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080130 Termination date: 20110106 |