65.9K
CodeProject 正在变化。 阅读更多。
Home

可执行集成示例:外部设置和更新

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2012年6月1日

CPOL

3分钟阅读

viewsIcon

18516

downloadIcon

109

用于演示可执行集成的 Java 源代码,该概念是将几个不同的可执行文件集成以创建单个应用程序

引言

本文将演示可执行集成,这是一个将多个独立的应用程序(通常用不同的编程语言编写)集成在一起以创建单个应用程序的概念。

这是一个简单易懂的概念,对初学者和专业人士都很有吸引力,因为它即使在小型项目上也很容易实现,并且可以极大地加快和简化大型项目的开发。

可执行集成具有以下优点:

  • 增加代码重用性,因为二进制软件组件可以被不同编程语言的项目使用,并且二进制向后兼容性通常比编译器兼容性更长久(Win7 可以运行 DOS 和 Win9x 的二进制文件,但没有现代编译器可以生成它们)。
  • 提高稳定性,因为每个组件的独立性和隔离性增加(没有共享内存或系统资源,组件的进程运行时间更短)。
  • 简化测试,因为有标准化的粘合机制,单元测试可以用其他语言编写。
  • 高代码内聚性,因为耦合度通常为 0。
  • 出于上述原因,可以缩短开发时间。
  • 通过减少开发工作量,以及增加现有组件的选择范围和降低平均成本,从而降低成本。

在此示例中,我们将使用几个免费供商业使用的原生实用程序。

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

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

创建我们的主应用程序

主应用程序在此示例中是一个基于 GUI 的网络 ping。它应包含以下功能的代码:

  • 创建具有用户操作菜单和用于显示 ping 结果的文本框的主窗口 GUI。
  • 处理程序功能,例如从 GUI 接收用户操作并调用相应的任务,然后将结果返回给 GUI。
  • 执行外部工具(例如,当用户选择“设置..”菜单项时启动 ConfigEditor)并获取其输出(例如,ping.exe 工具的输出)。
  • *.properties 文件读取程序设置。

为此,我们创建了 4 个类:mainFrameMainFunctionalityProcessKitPropertiesReader

GUI(mainFrame 类)

用户界面代码由我们的开发环境(在本例中为 NetBeans)根据视觉编辑的设计自动生成。用户操作函数调用 MainFunctionality 类来执行实际的程序功能。

程序功能(MainFunctionality 类)

此类包含每个 GUI 操作的一个函数,并根据需要调用 ProcessKitPropertiesReader
大多数函数只是调用一个外部进程,例如“设置...”操作。

public boolean SettingsScreen(){
        try {
            //open the "config editor free" program
            ProcessKit.ExecApp(AppPath + "\\ConfigEditor\\ConfigEditorFREE.exe", null);
            //read settings from the properties file
            settingsfile.Reload();
            UpdateColor();
            return true;
        } catch (Exception ex) {
            Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
}

启动外部工具(ProcessKit 类)

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

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

读取设置文件(PropertiesReader 类)

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

结论

我们可以看到,我们的示例中只有很少的开发人员代码,并且代码本身比通常的更简单,因为代码行之间的差异很小,并且调用外部软件子部分的方​​法统一。

我只花了 2 个小时就完成了(不包括之前在创建 ProcessKitPropertiesReader 类上投入的精力)。

我让一名初级 Java 开发人员重新创建这个示例应用程序,她花了 6 个小时完成(该代码的 WMFP 指标为 11 小时,因此她比平均开发人员快 45%)。

此示例代码可以用作功能齐全的应用程序骨架,我们可以看到这项任务可以在很短的时间内完成,并且使用了熟悉且免费的组件。

历史

  • 这是本文的第一个版本。
© . All rights reserved.