本人最近要用java用一个客户端软件,要求这个软件以后可以在线升级,我想问一下都有什么办法可以升级啊?目前我的思路有两个:一个是把软件中的每个组件打包成jar文件,这样当组件的功能改变的时候只要在客户端替换掉相应的jar文件就可以了,但是这样有个缺点就是一点点的小改动都得重新下载整个jar文件;第二个思路是只更新有改动组件的class文件,这样每次更新只要覆盖客户端相应的class文件就可以了,但是这个方法有个问题就是一个java文件有可能编译出来好几个class文件,每次更新的时候怎么设置应该覆盖客户端哪些class文件?不知道有没有其他的方法,谢谢大家:)

解决方案 »

  1.   

    这个看你的打包的JAR文件的大小了,如果小的话则第一种方案最好,无论是实现还是对于class混淆都方便,如果大的话,则一般采用第二种方案。
    但是C/S端在线升级不是很简单的,要做到用户友好性是不容易的,其实Eclipse的在线升级功能比较好,但是无法剥离出来单独使用。
    常见做法是在程序的启动外壳程序(如exe)和主程序中加入通信机制,进行启动检测或实时检测,这个看需求而定。
      

  2.   

    Java   Web   Start我看了一下,好像没有权限方面的控制啊?我想让一些服务只有会员可以更新下载,目前我的做法就是把每个服务都打包成jar文件和相应的xml配置文件,每次更新的话就下载整个jar文件然后根据xml配置文件下载所需要的资源,感觉这样比较容易控制