CN116860487B - 基于RMI技术的Matlab集成调度的方法 - Google Patents

基于RMI技术的Matlab集成调度的方法 Download PDF

Info

Publication number
CN116860487B
CN116860487B CN202311126502.4A CN202311126502A CN116860487B CN 116860487 B CN116860487 B CN 116860487B CN 202311126502 A CN202311126502 A CN 202311126502A CN 116860487 B CN116860487 B CN 116860487B
Authority
CN
China
Prior art keywords
matlab
driver
calling
function
interface
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.)
Active
Application number
CN202311126502.4A
Other languages
English (en)
Other versions
CN116860487A (zh
Inventor
余洋
余翔
陈超
刘锴
刘若琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Guorui Xinwei Software Co ltd
Original Assignee
Nanjing Guorui Xinwei Software Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Guorui Xinwei Software Co ltd filed Critical Nanjing Guorui Xinwei Software Co ltd
Priority to CN202311126502.4A priority Critical patent/CN116860487B/zh
Publication of CN116860487A publication Critical patent/CN116860487A/zh
Application granted granted Critical
Publication of CN116860487B publication Critical patent/CN116860487B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于RMI技术的Matlab集成调度的方法,属于软件集成的技术领域,包括:编写及编译Matlab驱动程序,提供MatlabEngine.jar;构造需要在程序中执行的Matlab功能函数;调用驱动程序提供的执行Matlab函数的接口,实现与Matlab软件的集成调用。本发明利用RMI技术实现了与Matlab集成的通用接口驱动程序,使开发人员在调用Matlab时,直接面向接口驱动程序提供的通用接口进行开发,屏蔽了基于RMI技术调用Matlab的技术细节,降低了学习成本。

Description

基于RMI技术的Matlab集成调度的方法
技术领域
本发明涉及一种基于RMI技术的Matlab集成调度的方法,属于软件集成的技术领域。
背景技术
Matlab是一款商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术语言和交互式环境,主要应用于工程计算、控制设计、信号处理与通讯、图像处理等领域。在实际设计使用过程中,存在与其它建模、设计、仿真工具的集成调度应用场景。Matlab本身提供了COM接口的支持,这些接口允许从外部应用程序进行远程通信,但JAVA本身并不支持COM。故本发明采用另外一种远程通信技术RMI与Matlab建立连接,RMI支持在不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用,但这也提高了不同工具基于RMI 方式与Matlab之间数据交互及集成调度所带来的开发复杂度和学习成本。
发明内容
为了解决上述技术问题,本发明提供了一种基于RMI技术的Matlab集成调度的方法,其具体技术方案如下:
一种基于RMI技术的Matlab集成调度的方法,包括以下步骤:
步骤一:编写Matlab驱动程序:
1.1)基于JAVA语言编写通过RMI技术调用Matlab驱动程序的连接程序;
1.2)定义调用Matlab驱动程序核心功能的函数接口、出参及入参;
1.3)封装步骤1.1)和步骤1.2),实现具体调用Matlab驱动程序功能的逻辑;
步骤二:编译Matlab驱动程序:
编译上述步骤一中的程序代码,提供MatlabEngine.jar驱动程序;
步骤三:调用Matlab驱动程序:
3.1)在第三方程序中引用MatlabEngine.jar驱动程序;
3.2)构造需要在第三方程序中执行的Matlab驱动程序的功能函数;
3.3)调用MatlabEngine.jar驱动程序提供的连接接口,初始化Matlab驱动程序的连接引擎,启动Matlab驱动程序;
3.4)调用MatlabEngine.jar驱动程序提供的执行Matlab驱动程序函数的接口,实现与Matlab驱动程序的集成调用。
进一步的,所述步骤一中1.1)、基于JAVA语言编写通过RMI技术调用Matlab驱动程序的连接程序的具体过程为:
步骤1.11:根据指定的端口,启动RMI Registry服务;
步骤1.12:构建提供服务的实现类,通过注册中心接口registry提供的bind方法,将实现类注册到RMI Registry上并对外暴露一个名称;
步骤1.13:构建Matlab进程启动命令,利用JAVA提供的ProcessBuilder类的start方法启动Matlab驱动程序进程,进程启动命令中包含RMI Registry暴露的名称和绑定的端口,Matlab驱动程序进程启动时,读取到对应的参数,将自己提供服务的实现类注册到RMIRegistry服务上;
步骤1.14:Matlab驱动程序提供了RMI相关的类或接口;
步骤1.15:指定ip或端口获取相关类的远程对象,通过远程对象连接或操作Matlab驱动程序。
进一步的,所述步骤一中1.2)、定义调用Matlab驱动程序的核心功能的函数接口及出参入参的具体过程为:
在MatlabEngine.jar驱动程序程序里MaltabProxy对象中,定义调用Matlab驱动程序核心功能的函数接口。
进一步的,所述步骤一中1.3)、封装上述方法,实现具体调用Matlab驱动程序功能的逻辑:将上述连接Matlab驱动程序或者调用Matlab驱动程序核心函数的方法都统一对外暴露接口,使用者只需要调用接口就行,不用关心内部具体是怎么实现的;
步骤1.31: 创建RMIMatlabInstance对象,提供构造方法,构造方法里封装连接Matlab驱动程序的具体逻辑,对外暴漏连接Matlab驱动程序的接口;
步骤1.32:将MatlabProxy里定义的核心函数封装在MatlabProxy类中,统一对外提供调用Matlab驱动程序核心函数的接口。
进一步的,所述步骤二中编译Matlab驱动程序的具体过程为:
步骤2.1:使用Eclipse工具导入Matlab驱动程序的源码;
步骤2.2:配置JAVA编译环境;
步骤2.3:通过IDE工具进行编译生成MatlabEngine.jar驱动程序。
进一步的,所述步骤三中调用Matlab驱动程序具体过程为:
3.1)在程序中引用MatlabEngine.jar驱动程序;
3.2)构造需要在程序中执行的Matlab驱动程序的功能函数;
3.3)创建RMIMatlabInstance实例,初始化Matlab驱动程序连接引擎,启动Matlab驱动程序;
3.4)调用RMIMatlabInstance提供的执行Matlab驱动程序函数的接口,实现与Matlab驱动程序的集成调用。
进一步的,所述MatlabProxy里定义的核心函数包括:
RMIMatlabInstance:构造函数,定义连接Matlab驱动程序的具体逻辑;
connect:连接Matlab驱动程序;
disconnect:断开与Matlab驱动程序的连接;
isConnect:判断Matlab驱动程序是否连接;
executeCommand:执行Matlab驱动程序函数;
executeCommandForResult:执行Matlab驱动程序函数,并获取返回值;
getVariable:获取工作空间指定的参数值;
setVariable:设置参数值;
getVariableNames:获取工作空间所有的参数名;
eval:在Matlab驱动程序里执行命令;
feval:调用Matlab驱动程序的函数,并传参;
getVariable:获得Matlab驱动程序里名为variableName变量的值;
setVariable:给Matlab驱动程序里名为variableName变量设置值;
returningEval:在Matlab驱动程序里执行命令并返回结果;
returingFeval:调用Matlab驱动程序的functionName函数,并传参,获取Object类型的返回值。
本发明的有益效果是:
1. 本发明通过JAVA语言,基于RMI方式调用Matlab驱动程序远程对象,与Matlab驱动程序创建连接,实现了与Matlab驱动程序集成的通用驱动程序,使开发人员在调用Matlab驱动程序时,无需关心程序如何与Matlab驱动程序创建连接,直接面向驱动程序提供的通用接口进行开发,屏蔽了基于RMI技术调用Matlab驱动程序的技术细节,降低了学习成本。
2. 由于是通过封装接口的方式提供能力,因此基于JAVA开发的程序可直接调用接口与Matlab驱动程序进行集成调度,这极大降低了JAVA程序与Matlab驱动程序进行集成调度带来的开发难度与开发成本。
附图说明
图1是本发明整体流程图,
图2是本发明中驱动程序基于RMI方式连接Matlab流程示意图,
图3是本发明中其他软件通过驱动程序调用Matlab的流程示意图,
图4是本发明中软件集成调度方法的架构示意图。
实施方式
下面结合具体实施方式,进一步阐明本发明。应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
基于RMI技术的Matlab集成调度的方法,参见图1,包括以下操作步骤:
步骤一:参见图2,编写Matlab驱动程序:
1)基于JAVA语言编写通过RMI技术调用Matlab驱动程序的连接程序的具体步骤如下:
步骤1:根据指定的端口,启动RMI Registry服务:
private synchronized void initRegistry(boolean force) throwsMatlabConnectionException {
if (this._registry == null || force) {
try {
this._registry = LocalHostRMIHelper.createRegistry(this._options.getPort());
} catch (Exception arg4) {
try {
this._registry = LocalHostRMIHelper.getRegistry(this._options.getPort());
} catch (Exception arg3) {
throw new MatlabConnectionException("Could not create orconnect to the RMI registry", arg3);
}
}
}
};
步骤2: 构建提供服务的实现类,通过注册中心接口registry提供的bind方法,将实现类注册到RMI Registry上并对外暴露一个名称:
this._registry.bind(receiver.getReceiverID(), LocalHostRMIHelper.exportObject(receiver));
步骤3:构建Matlab进程启动命令,利用JAVA提供的ProcessBuilder类的start方法启动Matlab进程。进程启动命令中包含RMI Registry暴露的名称和绑定的端口,Matlab驱动程序进程启动时,读取到对应的参数,将自己提供服务的实现类注册到RMI Registry服务上。
private Process createProcess(RemoteMatlabProxyFactory.RemoteRequestReceiver receiver)
throws MatlabConnectionException {
ArrayList processArguments = new ArrayList();
if (this._options.getMatlabLocation()= null) {
processArguments.add(this._options.getMatlabLocation());
} else {
processArguments.add(Configuration.getMatlabLocation());
}
......
String runArg = "javaaddpath \'" + codeLocation + "\'; " + MatlabClassLoaderHelper.class.getName()
+ ".configureClassLoading(); " + "javarmpath \'" +codeLocation + "\'; "
+ MatlabConnector.class.getName() + ".connectFromMatlab(\'" + receiver.getReceiverID() + "\', "
+ this._options.getPort() + ");";
processArguments.add(runArg);
ProcessBuilder builder = new ProcessBuilder(processArguments);
builder.directory(this._options.getStartingDirectory());
try {
Process e = builder.start();
......
return e;
} catch (IOException arg7) {
}
}
整体实例方法如下:
public Request requestProxy(RequestCallback requestCallback) throwsMatlabConnectionException {
//创建RMI Registry 服务
......
this.initRegistry(false);
//构建提供服务的实现类
RemoteMatlabProxyFactory.RemoteRequestReceiver receiver = newRemoteMatlabProxyFactory.RemoteRequestReceiver(
requestCallback, proxyID, Configuration.getClassPathAsRMICodebase(),
Configuration.getClassPathAsCanonicalPaths());
//将服务类注册到RMI Registry上
this._registry.bind(receiver.getReceiverID(), LocalHostRMIHelper.exportObject(receiver));
......
//启动Matlab驱动程序进程
Process e = this.createProcess(receiver);
......
request = new RemoteMatlabProxyFactory.RemoteRequest(proxyID,e, receiver, maintainer);
return request;
}
2)定义调用Matlab驱动程序核心功能的函数接口及出参入参的具体步骤如下:
在上述步骤创建的MaltabProxy对象中,定义调用Matlab驱动程序核心功能的函数接口,具体参见表1.
表1
3)、封装上述方法,实现具体调用Matlab驱动程序功能的逻辑:这一步是指将上述连接Matlab驱动程序或者调用Matlab驱动程序核心函数的方法都统一对外暴露接口,使用者只需要调用接口就行,不用关心内部具体是怎么实现的。
步骤1: 创建RMIMatlabInstance对象,提供构造方法,构造方法里封装连接Matlab驱动程序的具体逻辑;
步骤2:将MatlabProxy里定义的核心函数封装在该类中,统一对外提供;
下面给出各个核心函数的对应入参、执行方法以及功能说明:
函数名称:RMIMatlabInstance,
入参:String MatlabPath,
执行方法:public RMIMatlabInstance(String MatlabPath){
try {
MatlabProxyFactoryCreations.Builder builder=new MatlabProxyFac toryCreations.Builder().
setPort(rmiPort).setProxyTimeout(proxyTimeout).setHidden (false);
if( !CommonUtil.isEmpty(MatlabPath)){
if(SystemOS.isLinux()){
MatlabPath = MatlabPath + File.separator+MatlabConstant. LINUX_MATLAB_NAME;
}else if(SystemOS.isWindows()){
MatlabPath = MatlabPath + File.separator+MatlabConstant. WIN_Matlab_NAME;
}
builder.setMatlabLocation(MatlabPath);
}
MatlabProxyFactoryOptions options = builder.build();
factory = new MatlabProxyFactory(options);
connect();
} catch (Exception e) {
e.printStackTrace();
}
}
功能说明:构造函数,定义连接Matlab驱动程序的具体逻辑。
函数名称:executeCommand,
入参:String command,
执行方法:public void executeCommand(String command) throws Exception {
connect()
proxy.eval(command+";");
}
功能说明:执行Matlab驱动程序函数。
函数名称:executeCommandForResult,
入参:String functionName
int outputArgsLength
Object[] inputArgs,
执行方法:Public Object[] executeCommandForResult(String functionName, int outputArgsLength, Object[] inputArgs) throws Exception {
connect();
return proxy.returningFeval(functionName, outputArgsLength, inputArgs);
}
功能说明:执行Matlab驱动程序函数,并获取返回值。
函数名称:getVariable,
入参:string variableName,
执行方法:public Object getVariable(String variableName) throws Exception {
connect();
return proxy.getVariable(variableName);
}
功能说明:获取工作空间指定的参数值。
函数名称:setVariable,
入参:String variableName,Object value,
执行方法:public void setVariable(String variableName, Object value) throws Exception {
connect();
proxy.setVariable(variableName, value);
}
功能说明:设置参数值。
函数名称:getVariableNames,
入参:无,
执行方法:public String[] getVariableNames() throws Exception {
connect();
Object[] results=proxy.returningEval("who", 1);
String[] vars=(String[]) results[0];
return vars;
}
功能说明:获取工作空间所有的参数名。
函数名称:connect,
入参:无,
执行方法:public void connect() throws Exception {
if (proxy == null || !proxy.isConnected()) {
proxy = factory.getProxy();
proxy.eval("clc");
proxy.addDisconnectionListener(new DisconnectionListener() {
@Override
public void proxyDisconnected(MatlabProxy proxy) {
proxy.disconnect();
rmiPort = rmiPort+1;
}
});
}
}
功能说明:连接Matlab驱动程序。
函数名称:disconnect,
入参:无,
执行方法:public void disconnect() throws Exception {
if (proxy.isConnected()) {
rmiPort = rmiPort+1;
proxy.disconnect();
}
}
功能说明:断开与Matlab驱动程序的连接。
函数名称:isConnect,
入参:
执行方法:public boolean isConnect() throws Exception {
return (proxy==null || proxy.isConnected());
}
功能说明:判断Matlab驱动程序是否连接。
步骤二:参见图3,编译Matlab驱动程序:
1)、编译Matlab驱动程序的具体过程为:
步骤1:使用Eclipse工具导入如上程序源码;
步骤2:配置JAVA编译环境;
步骤3:通过IDE工具进行编译生成MatlabEngine.jar驱动程序。
参见图3,是其他软件通过驱动程序调用Matlab的流程示意图。
步骤三:参见图4,调用Matlab驱动程序具体过程为:
1)在程序中引用MatlabEngine.jar驱动程序;
2)创建RMIMatlabInstance实例,初始化Matlab连接引擎,启动Matlab驱动程序;
3)构造需要在程序中执行的Matlab驱动程序功能函数;
4)调用RMIMatlabInstance提供的执行Matlab驱动程序函数的接口,实现与Matlab驱动程序的集成调用。
本发明方案所公开的技术手段不仅限于上述技术手段所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。

Claims (1)

1.一种基于RMI技术的Matlab集成调度的方法,其特征在于,包括以下步骤:
步骤一:编写Matlab驱动程序:
1.1)基于JAVA语言编写通过RMI技术调用Matlab驱动程序的连接程序:
步骤1.11:根据指定的端口,启动RMI Registry服务;
步骤1.12:构建提供服务的实现类,通过注册中心接口registry提供的bind方法,将实现类注册到RMI Registry上并对外暴露一个名称;
步骤1.13:构建Matlab驱动程序进程启动命令,利用JAVA提供的ProcessBuilder类的start方法启动Matlab驱动程序进程,进程启动命令中包含RMI Registry暴露的名称和绑定的端口,Matlab驱动程序进程启动时,读取到对应的参数,将自己提供服务的实现类注册到RMI Registry服务上;
步骤1.14:Matlab驱动程序提供了RMI相关的类或接口;
步骤1.15:指定ip或端口获取相关类的远程对象,通过远程对象连接或操作Matlab驱动程序;
1.2)定义调用Matlab驱动程序核心功能的函数接口、出参及入参,在MatlabEngine.jar驱动程序里MaltabProxy对象中,定义调用Matlab驱动程序核心功能的函数接口;
1.3)封装步骤1.1)和步骤1.2),实现具体调用Matlab功能的逻辑,将连接Matlab驱动程序或者调用Matlab驱动程序核心函数的方法都统一封装,对外暴露接口:
步骤1.31: 创建RMIMatlabInstance对象,提供构造方法,构造方法里封装连接Matlab驱动程序的具体逻辑,对外暴漏连接Matlab驱动程序的接口;
步骤1.32:将MatlabProxy里定义的核心函数封装在MatlabProxy类中,统一对外提供调用Matlab驱动程序核心函数的接口;
所述MatlabProxy里定义的核心函数包括:
RMIMatlabInstance:构造函数,定义连接Matlab驱动程序的具体逻辑;
connect:连接Matlab驱动程序;
disconnect:断开与Matlab驱动程序的连接;
isConnect:判断Matlab驱动程序是否连接;
executeCommand:执行Matlab驱动程序函数;
executeCommandForResult:执行Matlab驱动程序函数,并获取返回值;
getVariable:获取工作空间指定的参数值;
setVariable:设置参数值;
getVariableNames:获取工作空间所有的参数名;
eval:在Matlab驱动程序里执行命令;
feval:调用Matlab驱动程序的函数,并传参;
getVariable:获得Matlab驱动程序里名为variableName变量的值;
setVariable:给Matlab驱动程序里名为variableName变量设置值;
returningEval:在Matlab驱动程序里执行命令并返回结果;
returingFeval:调用Matlab驱动程序的functionName函数,并传参,获取Object类型的返回值;
步骤二:编译上述步骤一中Matlab驱动程序的程序代码,提供MatlabEngine.jar驱动程序:
步骤2.1:使用Eclipse工具导入Matlab驱动程序的源码;
步骤2.2:配置JAVA编译环境;
步骤2.3:通过IDE工具进行编译生成MatlabEngine.jar驱动程序;
步骤三:调用Matlab驱动程序:
3.1)在第三方程序中引用MatlabEngine.jar驱动程序;
3.2)构造需要在第三方程序中执行的Matlab功能函数;
3.3)创建RMIMatlabInstance实例,调用MatlabEngine.jar驱动程序提供的连接接口,初始化Matlab驱动程序连接引擎,启动Matlab驱动程序;
3.4)调用RMIMatlabInstance提供的执行Matlab驱动程序函数的接口,调用MatlabEngine.jar驱动程序提供的执行Matlab函数的接口,实现与Matlab驱动程序的集成调用。
CN202311126502.4A 2023-09-04 2023-09-04 基于RMI技术的Matlab集成调度的方法 Active CN116860487B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311126502.4A CN116860487B (zh) 2023-09-04 2023-09-04 基于RMI技术的Matlab集成调度的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311126502.4A CN116860487B (zh) 2023-09-04 2023-09-04 基于RMI技术的Matlab集成调度的方法

Publications (2)

Publication Number Publication Date
CN116860487A CN116860487A (zh) 2023-10-10
CN116860487B true CN116860487B (zh) 2024-03-15

Family

ID=88234496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311126502.4A Active CN116860487B (zh) 2023-09-04 2023-09-04 基于RMI技术的Matlab集成调度的方法

Country Status (1)

Country Link
CN (1) CN116860487B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923485A (zh) * 2009-06-17 2010-12-22 大唐软件技术股份有限公司 Corba系统中的java远程调用方法
CN107479875A (zh) * 2017-07-19 2017-12-15 广州慧睿思通信息科技有限公司 一种Java调用DLL的便捷方法
CN115658041A (zh) * 2022-12-27 2023-01-31 南京国睿信维软件有限公司 基于在线业务流程编排的低代码增强业务实现方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010052110A1 (en) * 2000-02-14 2001-12-13 Julian Orbanes System and method for graphically programming operators
US6789254B2 (en) * 2001-06-21 2004-09-07 International Business Machines Corp. Java classes comprising an application program interface for platform integration derived from a common codebase
US7908313B2 (en) * 2004-07-21 2011-03-15 The Mathworks, Inc. Instrument-based distributed computing systems
US7367032B2 (en) * 2005-01-07 2008-04-29 International Business Machines Corporation Partial dynamic implementation of JAVA interfaces
US7606833B2 (en) * 2005-04-08 2009-10-20 The Mathworks, Inc. System and method for using an RMI activation system daemon with non-JAVA applications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923485A (zh) * 2009-06-17 2010-12-22 大唐软件技术股份有限公司 Corba系统中的java远程调用方法
CN107479875A (zh) * 2017-07-19 2017-12-15 广州慧睿思通信息科技有限公司 一种Java调用DLL的便捷方法
CN115658041A (zh) * 2022-12-27 2023-01-31 南京国睿信维软件有限公司 基于在线业务流程编排的低代码增强业务实现方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ADAMS二次开发技术在分布式仿真中的应用;梁思率等;《系统仿真学报》;第21卷(第10期);第2940-2944页 *
MATLAB环境中HLA联邦成员开发技术研究;史璐莎;张斌;张涛;;计算机技术与发展(第10期);第16-20+24页 *
机械液压约束活塞发动机多学科协同优化设计支持环境研究;柳勋;《中国优秀硕士学位论文全文数据库 信息科技辑》(第6期);I138-1181 *

Also Published As

Publication number Publication date
CN116860487A (zh) 2023-10-10

Similar Documents

Publication Publication Date Title
Breu et al. Towards a formalization of the unified modeling language
Pino et al. Software synthesis for DSP using Ptolemy
Haber et al. Montiarc-architectural modeling of interactive distributed and cyber-physical systems
Zhang et al. Design, construction, and application of a generic visual language generation environment
JP2005510790A (ja) ソフトウェア・オブジェクトを作成する方法と装置
Hanus A functional logic programming approach to graphical user interfaces
WO2008011011A2 (en) System and method for providing and using meta-data in a dynamically typed array-based language
Xu et al. Adk: An agent development kit based on a formal design model for multi-agent systems
CN116860487B (zh) 基于RMI技术的Matlab集成调度的方法
Lumpe et al. Towards a formal composition language
Mannadiar et al. Domain-specific engineering of domain-specific languages
Butting et al. Architectural programming with montiarcautomaton
Bardaro et al. AADL for robotics: a general approach for system architecture modeling and code generation
Griss et al. Using UML state machine models for more precise and flexible JADE agent behaviors
Ubayashi et al. An AOP implementation framework for extending join point models
Wada et al. Leveraging metamodeling and attribute-oriented programming to build a model-driven framework for domain specific languages
Kozaczynski et al. Architecture specification support for component integration
CA2278582A1 (en) Virtual robot
Walker Essential software structure through implicit context
Schloegel et al. Composable code generation for model-based development
Seban An overview of object-oriented design and C++
Olarnsakul et al. A component coordination model for customization and composition of component-based system design
Sattler A Framework for Component-Oriented Tool Integration
Levendovszky et al. Tooling the Dynamic Behavior Models of Graphical DSLs
Mészáros et al. Code generation with the model transformation of visual behavior models

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant