更新应用程序(Java)

时间:2011-05-19 18:58:48

标签: java

  

可能重复:
  How can I write a Java application that can update itself at runtime?

大家好,我希望能够在我的应用程序上运行实时更新。所以当有更新时,它会通知用户,然后在允许的情况下,它会再次下载必要的文件,而不是整个应用程序。我只需要详细分析我需要做些什么才能实现这一目标。

3 个答案:

答案 0 :(得分:1)

考虑在NetBeans平台(基于Swing的RCP)之上构建应用程序。 在许多有用的东西中,它附带了更新中心/自动更新服务: http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-autoupdate-services/overview-summary.html

答案 1 :(得分:1)

我建议您查看JRebel。它可以在运行时执行类的更新。这是一个功能列表(来自他们的主页):

  
      
  • 对方法主体的更改
  •   
  • 添加/删除方法
  •   
  • 添加/删除构造函数
  •   
  • 添加/删除字段
  •   
  • 添加/删除课程
  •   
  • 添加/删除注释
  •   
  • 更改静态字段值
  •   
  • 添加/删除枚举值
  •   
  • 更改界面
  •   
  • 更换超类
  •   

答案 2 :(得分:0)

这里有不同的部分需要考虑。我看到三个不同的问题。

  1. 您的应用程序需要分解为可以“可插拔”替换的单独部分。虽然原则上你可以替换单个类,但实际上一个类需要改变的机会很小,所以你需要一些更高的模块粒度。两种可能的方法是Eclipse中使用的Java EE模块(EAR,WAR)和OSGi。在每种情况下,都有一组明确定义的加载和卸载模块的功能。虽然你可以使用Java的类加载器功能来构建这样的东西,但是它需要做很多工作,重新发明OSGi或其他类似的东西似乎是一种耻辱。但这预示着您的应用程序设计精良,采用模块化设计。改造这种模块化将是非常有趣的。
  2. 您需要一个能够检测和获取新版本模块并部署它们的基础架构。正如我所说,这些方面有一些开源功能 - 看看Eclipse如何管理其OSGi更新。
  3. 如何管理此类模块化应用程序的大型分布式区域,其中不同的实例需要进行通信。我认为这很<非常非常棘手,我很想知道解决这个问题的方法。