Java 客户端的债券定价工具
此示例展示了一个通过简单公式计算债券价格的应用程序。
通过在简单的图形界面中输入以下已知值来运行此示例:
优惠券支付 -
C支付次数 -
N利率 -
i债券或期权到期价值 -
M
该应用程序根据以下公式计算价格(P):
P = C * ( (1 - (1 + i)^-N) / i ) + M * (1 + i)^-N
目标
债券定价工具体现了 MATLAB® Production Server™ 的以下特点:
部署一个具有固定数量输入和一个输出的简单 MATLAB 函数
部署一个带有简单 GUI 前端的 MATLAB 函数用于数据输入
使用
dispose()释放系统资源
步骤 1:编写 MATLAB 代码
通过编写以下代码实现 MATLAB 中的债券定价工具。将代码命名为 pricecalc.m。
示例代码可在 中找到。MPS_INSTALL\client\java\examples\BondPricingTool\MATLAB
function price = pricecalc(value_at_maturity, coupon_payment,...
interest_rate, num_payments)
C = coupon_payment;
N = num_payments;
i = interest_rate;
M = value_at_maturity;
price = C * ( (1 - (1 + i)^-N) / i ) + M * (1 + i)^-N;
end步骤 2:使用 Production Server 存档编译器创建可部署存档
要为此示例创建可部署存档:
从 MATLAB 中,选择“Production Server 存档编译器”。
在 Exported Functions 字段中,添加
pricecalc.m。pricecalc.m位于。MPS_INSTALL\client\java\examples\BondPricingTool\MATLAB将存档名称改为
BondTools。点击打包。
生成的可部署存档 BondTools.ctf 位于工程文件夹下的输出文件夹中。
步骤 3:在服务器上共享可部署存档
如果需要,请从 https://www.mathworks.com/products/compiler/mcr 下载 MATLAB Runtime。有关详细信息,请参阅MATLAB Production Server 支持的 MATLAB Runtime 版本。
使用
mps-new创建服务器。有关详细信息,请参阅使用命令行创建服务器实例。如果您尚未这样做,请通过编辑服务器配置文件
main_config并指定--mcr-root的路径来将 MATLAB Runtime 的位置指定到服务器。有关详细信息,请参阅 Server Configuration 属性。将
BondTools.ctf文件复制到服务器上的auto_deploy文件夹进行托管。
步骤 4:创建 Java 客户端代码
使用本节中的指南,创建兼容的客户端接口并定义 Java® 中的方法以匹配 MATLAB 函数 pricecalc.m,由服务器托管为 BondTools.ctf。
还包括独立应用程序典型的附加 Java 文件。您可以在 中找到示例文件。MPS_INSTALL\client\java\examples\BondPricingTool\Java
| 此 Java 代码... | 提供此功能... |
|---|---|
BondPricingTool.java | 运行计算器应用程序。定价函数的变量值在这个类中声明。 |
BondTools.java | 定义 pricecalc 方法接口,稍后用于连接服务器调用 pricecalc.m |
BondToolsFactory.java | 创建 BondTools 新实例的工厂 |
BondToolsStub.java | 实现虚拟 |
BondToolsStubFactory.java | 返回 BondToolsStub 新实例的工厂 |
RequestSpeedMeter.java | 显示 GUI 界面并使用 Java Swing 类接受输入 |
ServerBondToolsFactory.java | 工厂创建 MWHttpClient 的新实例并创建代理,该代理提供 BondTools 接口的实现并允许访问由服务器托管的 pricecalc.m |
在开发 Java 代码时,请注意以下部分中描述的以下基本任务。有关客户端编码基础和最佳实践的更多信息,请参阅Java 客户端编码最佳实践。
该文档引用了客户端代码的特定部分。您可以在 中找到完整的 Java 客户端代码。MPS_INSTALL\client\java\examples\BondPricingTool\Java
声明与您部署的 Java 函数兼容的 MATLAB 方法签名
要使用在 步骤 1:编写 MATLAB 代码 中定义的 MATLAB 函数,请在接口 BondTools.java 中声明相应的 Java 方法签名:
interface BondTools {
double pricecalc (double faceValue,
double couponYield,
double interestRate,
double numPayments)
throws IOException, MATLABException;
}该接口创建原始 double 类型的数组,对应于 Double 中的 MATLAB 原始类型(MATLAB 中的 pricecalc.m,除非明确声明)。MATLAB 函数和 Java 接口中的输入参量之间存在一对一映射。接口指定兼容类型 double。MATLAB 和 Java 签名之间的兼容性证明了 Java 客户端编码最佳实践 中列出的准则。
实例化 MWClient、创建代理并指定可部署存档
在 ServerBondToolsFactory 类中,执行典型的 MATLAB Production Server 客户端设置:
使用
MWClient的实例来实例化MWHttpClient:... private final MWClient client = new MWHttpClient();在新的客户端实例上调用
createProxy。指定服务器在9910文件夹中托管的端口号(BondTools)和可部署存档名称(auto_deploy):... public BondTools newInstance () throws Exception { mpsUrl = new URL("http://user1.dhcp.mathworks.com:9910/BondTools"); return client.createProxy(mpsUrl, BondTools.class); } ...
持续使用 dispose() 释放系统资源
该应用程序利用工厂模式来封装几种类型对象的创建。
任何时候创建对象(并因此分配资源),请确保使用 dispose() 释放这些资源。
例如,请注意,在 ServerBondToolsFactory.java 中,当不再需要 实例化 MWClient、创建代理并指定可部署存档 中创建的 MWHttpClient 实例时,您会将其销毁。
此外,请注意 dispose() 调用清理 BondToolsStubFactory.java 和 BondTools.java 中的工厂。
步骤 5:构建客户端代码并运行示例
在尝试构建和运行客户端代码之前,请确保已完成以下操作:
将
mps_client.jar() 添加到您的 Java$MPS_INSTALL\client\javaCLASSPATH和 Build Path。将可部署存档复制到服务器的
auto_deploy文件夹。修改了服务器的
main_config文件以指向 MATLAB Runtime 的安装位置。
运行计算器应用程序时,您应该看到以下输出:
