Java程序执行方法和装置的制造方法_2

文档序号:8282111阅读:来源:国知局
>[0059] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。
[0060] 实施例一
[0061] 本发明实施例提供了一种Java程序执行方法,参见图1,该方法包括:
[0062] 步骤101 :加载DLL (Dynamic Link Library,动态链接库)文件,该DLL文件包 括:用于创建Powershell脚本执行环境池的第一 Native (本地)方法的实现、以及用于执 行Powershell脚本第二Native方法的实现。
[0063] 该DLL文件用于执行Java程序中的Powershell脚本。
[0064] 步骤102 :调用第一 Native方法,创建Powershell脚本执行环境池,Powershell 脚本执行环境池包括多个Powershell脚本执行环境。
[0065] 步骤103 :调用第二Native方法,在Powershell脚本执行环境中执行Java程序 中的Powershell脚本。
[0066] 步骤104 :返回Powershell脚本执行结果。
[0067] 本发明实施例通过加载DLL文件,并调用该DLL中的第一 Native方法,创建 Powershell脚本执行环境池,Powershell脚本执行环境池包括多个Powershell脚本执行 环境,调用DLL中的第二Native方法,执行Java程序中的Powershell脚本;一方面,由于 采用了 Native方法来执行Powershell脚本,因此不会在执行Powershell脚本时创建新的 进程,同时,在Powershell脚本执行环境池中包括多个Powershell脚本执行环境,使得可 以同时执行多个Powershell脚本,避免了每执行一个Powershell脚本就会创建一个独立 的进程,造成的资源浪费的问题。
[0068] 实施例二
[0069] 本发明实施例提供了一种Java程序执行方法,参见图2,该方法包括:
[0070] 步骤201 :获取Java文件,该Java文件中包括所调用的DLL的名称的声明,以及 第一 Native方法、第二Native方法和第三Native方法的声明。
[0071 ] Java文件是由Java代码编译而来的。其中,第一 Native方法用于创建 Powershell脚本执行环境池,池内包括若干脚本执行环境,脚本执行环境的数量可以在代 码中指定。第三Native方法用于在上述脚本执行环境中预先加载Powershell脚本依赖类 库,供脚本执行时使用。第二Native方法用于当需要执行Powershell脚本时,从脚本执行 环境池中获取空闲的脚本执行环境,进而执行Powershell脚本。其中,脚本执行环境池是 指多个C#类库中提供对象的集合,该对象就可以当做是一个Powershell脚本执行器,即每 个对象可以作为一个Powershell脚本执行环境。Java程序需要执行Powershell脚本时只 需要获取空闲的脚本执行环境,执行完后再重释放该脚本执行环境,这样就可以重复利用 脚本执行环境,构成一个脚本执行环境池。
[0072] 优选地,第三Native方法所加载的脚本依赖类库包括:该Java程序中包含的所有 Powershell脚本执行时所需要类库。
[0073] 下面对步骤201中的Java文件进行举例说明:
[0074]
【主权项】
1. 一种化va程序执行方法,其特征在于,所述方法包括: 加载动态链接库文件,所述动态链接库文件包括:用于创建化wershell脚本执行环境 池的第一本地方法的实现、W及用于执行化wershell脚本的第二本地方法的实现; 调用所述第一本地方法,创建化wershell脚本执行环境池,所述化wershell脚本执行 环境池包括多个化wershell脚本执行环境; 调用所述第二本地方法,在所述化wershell脚本执行环境中执行所述化va程序中的 化wer she 11脚本; 返回化wer she 11脚本执行结果。
2. 根据权利要求1所述的方法,其特征在于,所述动态链接库文件还包括用于预先加 载化wershell脚本依赖类库的第H本地方法的实现,所述方法还包括: 在调用所述第二本地方法前,调用所述第H本地方法,在每个所述化wershell脚本执 行环境中预先加载化wershell脚本依赖类库。
3. 根据权利要求2所述的方法,其特征在于,所述加载动态链接库文件,包括: 装载用于执行化wershell脚本的class文件,所述class文件包括所调用的动态链 接库的名称的声明,W及所述第一本地方法、所述第二本地方法和所述第H本地方法的声 明; 根据所述class文件声明的动态链接库的名称,加载所述动态链接库文件。
4. 根据权利要求3所述的方法,其特征在于,所述方法还包括: 生成所述动态链接库文件和所述class文件。
5. 根据权利要求4所述的方法,其特征在于,所述生成所述动态链接库文件和所述 class文件,包括: 获取化va文件,所述化va文件中包括所调用的动态链接库的名称的声明,W及所述第 一本地方法、所述第二本地方法和所述第H本地方法的声明; 编译所述化va文件,获得所述class文件; 根据所述class文件生成化va本地接口头文件; 获取并编译C#代码,生成CS文件,所述C#代码包括所述化va本地接口头文件的引入, W及所述头文件中声明的所述第一本地方法、所述第二本地方法和所述第H本地方法的实 现; 将所述CS文件编译为所述动态链接库文件。
6. 根据权利要求4所述的方法,其特征在于,所述生成所述动态链接库文件和所述 class文件,包括: 获取并编译C#代码,生成CS文件,所述C#代码包括所述第一本地方法、所述第二本地 方法和所述第H本地方法的实现; 将所述CS文件编译为所述动态链接库文件; 使用JNI4NET编译工具编译所述动态链接库文件,得到所述class文件。
7. -种化va程序执行装置,其特征在于,所述装置包括: 输入模块,用于加载动态链接库文件,所述第一动态链接库文件包括:用于创建 化wershell脚本执行环境池的第一本地方法的实现、W及用于执行化wershell脚本的第 二本地方法的实现; 第一处理模块,用于调用所述第一本地方法,创建化wershell脚本执行环境池,所述 化wershell脚本执行环境池包括多个Powershell脚本执行环境; 第二处理模块,用于调用所述第二本地方法,在所述化wershell脚本执行环境中执行 所述化va程序中的化wershe 11脚本; 输出模块,用于返回化wer she 11脚本执行结果。
8. 根据权利要求7所述的装置,其特征在于,所述动态链接库文件还包括用于预先加 载化wershell脚本依赖类库的第H本地方法的实现,所述装置还包括: 第H处理模块,用于在调用所述第二本地方法前,调用所述第H本地方法,在每个所述 化wershell脚本执行环境中预先加载化wershell脚本依赖类库。
9. 根据权利要求8所述的装置,其特征在于,所述输入模块,包括: 加载单元,用于装载用于执行化wershell脚本的class文件,所述class文件包括所 调用的动态链接库的名称的声明,W及所述第一本地方法、所述第二本地方法和所述第H 本地方法的声明; 执行单元,用于根据所述class文件声明的动态链接库的名称,加载所述动态链接库 文件。
10. 根据权利要求9所述的装置,其特征在于,所述装置还包括: 生成模块,用于生成所述动态链接库文件和所述class文件。
11. 根据权利要求10所述的装置,其特征在于,所述生成模块,包括: 获取单元,用于获取化va文件,所述化va文件包括所调用的动态链接库的名称的声 明,W及所述第一本地方法、所述第二本地方法和所述第H本地方法的声明; 第一编译单元,用于编译所述化va文件,获得所述class文件; 第二编译单元,用于根据所述class文件生成化va本地接口头文件; 第H编译单元,用于获取并编译C#代码,生成CS文件,所述C#代码包括所述化va本 地接口头文件的引入,W及所述头文件中声明的所述第一本地方法、所述第二本地方法和 所述第H本地方法的实现; 第四编译单元,用于将所述CS文件编译为所述动态链接库文件。
12. 根据权利要求10所述的装置,其特征在于,所述生成模块,包括: 第五编译单元,用于获取并编译C#代码,生成CS文件,所述C#代码包括所述第一本地 方法、所述第二本地方法和所述第H本地方法的实现; 第六编译单元,用于将所述CS文件编译为所述动态链接库文件; 第走编译单元,用于使用JNI4NET编译工具编译所述动态链接库文件,得到所述class 文件。
【专利摘要】本发明公开了一种Java程序执行方法和装置,属于计算机领域。所述方法包括:加载动态链接库文件,所述动态链接库文件包括:用于创建Powershell脚本执行环境池的第一本地方法的实现、以及用于执行Powershell脚本的第二本地方法的实现;调用所述第一本地方法,创建Powershell脚本执行环境池,所述Powershell脚本执行环境池包括多个Powershell脚本执行环境;调用所述第二本地方法,在所述Powershell脚本执行环境中执行所述Java程序中的Powershell脚本;返回Powershell脚本执行结果。降低了Java程序中Powershell脚本执行时的开销。
【IPC分类】G06F9-45
【公开号】CN104598288
【申请号】CN201310529091
【发明人】石林灵
【申请人】华为技术有限公司
【公开日】2015年5月6日
【申请日】2013年10月30日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1