可执行文件集成:构建单一应用程序

可执行文件集成是一种将多个不同的可执行文件(通常用不同的编程语言编写)集成到一个单一应用程序中的概念。这个概念既适用于初学者也适用于专业人士,因为它易于实现,即使是在小型项目中,也能显著加快并简化大型项目的开发。

可执行文件集成具有多个优势:

  • 增加复用性,因为二进制软件部分可以被不同编程语言的项目使用,二进制向后兼容性通常比编译器兼容性更持久(例如,Windows 7 可以运行 DOS 和 Win9x 的二进制文件,但最近的编译器无法创建它们)。
  • 提高稳定性,由于每个部分的独立性和隔离性增加(没有共享内存或系统资源,组件的运行时间更短)。
  • 简化测试,由于标准化的粘合机制,可以在其他语言中编写单元测试。
  • 高代码内聚性,因为耦合通常为 0。
  • 由于上述原因,加快开发时间。
  • 由于减少了开发工作量,以及现成部件的选择更多、平均成本更低,从而降低了成本。

在这个例子中,将使用几个原生的、免费用于商业用途的工具:

  • 随 Microsoft Windows 提供的 ping 实用程序
  • ConfigEditor 作为设置对话框
  • PADUpdater 用于检查新版本和自动更新
  • InfoBrowser 作为帮助系统

将它们集成到一个用 Java 编写的单一应用程序中。

创建主要应用程序

这个例子中的主要应用程序是一个基于 GUI 的网络 ping 工具。它应该包含以下功能的代码:

  • 创建主窗口 GUI,包含用户操作的菜单和一个显示 ping 结果的文本框
  • 处理程序功能,即从 GUI 接收用户操作并调用相应的任务,并将结果返回到 GUI
  • 执行外部工具(例如,当用户选择 "设置..." 菜单项时,启动 ConfigEditor)并获取它们的输出(例如,ping.exe 工具的输出)
  • 从 *.properties 文件中读取程序设置

为此,相应地创建了 4 个类:mainFrame、MainFunctionality、ProcessKit 和 PropertiesReader:

用户界面代码是由开发环境(在这种情况下是 NetBeans)根据视觉编辑的设计自动生成的。用户操作函数调用 MainFunctionality 类来执行实际的程序功能。

这个类为每个 GUI 动作都有一个函数,并根据需要调用 ProcessKit 和 PropertiesReader。大多数函数只是调用一个外部进程,例如 "设置..." 动作:

public boolean SettingsScreen() { try { // 打开 "config editor free" 程序 ProcessKit.ExecApp(AppPath + "\\ConfigEditor\\ConfigEditorFREE.exe", null); // 从属性文件中读取设置 settingsfile.Reload(); UpdateColor(); return true; } catch (Exception ex) { Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex); } return false; }

为此,创建了一个名为 ProcessKit 的类,它有几个用于启动和控制进程的函数。它最重要的函数是 ExecApp(),它基于 Java 内置的执行函数 Runtime.exec()。

当用户点击设置菜单时,它用于运行配置编辑器工具:

这个类读取 ConfigEditor 目录中的 settings.properties 文件,并用于从中检索值(例如目标网站等)。

可以看到,例子中开发者代码非常少,而且由于代码行之间的差异很小,以及调用外部软件子部分的统一方法,代码本身比通常更简单。

只用 2 小时就完成了(不包括之前在制作 ProcessKit 和 PropertiesReader 类上投入的努力)。

让一个初级 Java 开发人员从头开始制作这个示例应用程序,她用了 6 小时(这个代码的 WMFP 指标是 11 小时,所以她比平均开发者快了 45%)。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485