栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何编写可以在运行时进行自我更新的Java应用程序?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何编写可以在运行时进行自我更新的Java应用程序?

解决方案的基本结构如下:

  • 有一个主循环负责重复加载应用程序的最新版本(如果需要)并启动它。

  • 该应用程序会执行其操作,但会定期检查下载URL。如果检测到新版本,它将返回启动器。

你可以通过多种方法来实现此目的。例如:

  • 启动器可以是包装脚本或二进制应用程序,它可以启动新的JVM,以从被替换的JAR文件中运行该应用程序。

  • 启动器可以是Java应用程序,它为新的JAR创建类加载器,加载入口点类并在其上调用一些方法。如果以这种方式这样做,则必须注意类加载器存储泄漏,但这并不困难。(你只需要确保重新启动后,无法访问带有从JAR加载的类的对象即可。)

外部包装方法的优点是:

  • 你只需要一个JAR,
  • 你可以替换整个Java应用程序,
  • 应用程序等创建的所有辅助线程将消失,而无需特殊的关闭逻辑,并且
  • 你还可以处理从应用程序崩溃等中恢复。

第二种方法需要两个JAR,但具有以下优点:

  • 该解决方案是纯Java且可移植的,
  • 转换将更快,并且
  • 你可以更轻松地在重新启动期间保留状态(模泄漏问题)。

“最佳”方式取决于你的特定要求。

还应注意:

  • 自动更新存在安全风险。通常,如果提供更新的服务器受到威胁,或者提供更新的机制容易受到攻击,则自动更新可能会导致客户机的损害。

  • 向客户推送导致损坏客户的更新可能会带来法律风险,也可能会损害你的企业声誉。

如果你能找到避免重新发明轮子的方法,那将是很好的。请参阅其他答案以获取建议。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号