`
ywg2008
  • 浏览: 45421 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

把一个java web应用包装成桌面应用的简单做法(网摘)

阅读更多

昨天玩h2的时候想起来的, 这年头把在线应用报装成桌面应用是越来越流行了,几年前做过类似的事情,简单介绍一下。

1. 选择一个嵌入的web 服务器和 数据库。
web服务器我选择的是jetty,虽然tomcat也有类似的嵌入版本,但是体积和性能都还是有点差距。 如果你的应用使用了大量的ajax效果,建议选择6的版本,对并发支持更好。
数据库方面我原来用的是hsql,现在可以选择h2. 两者的sql 兼容性都比较好,扩展功能也比较强。如果原来的应用在mysql上进行开发,则基本不用做修改, h2现在有mysql兼容模式,如果原来应用使用的是db2或者oracle,则你可能需要把一些函数和过程改用java实现,h2提供了这方面的支持。数据问题方面也不用担心,h2目前比较成熟了,而且最大可以提供256g的文件支持。我做过一些测试,关机,死机,都还可以恢复的比较好。

h2的一个特性是支持只读数据库,所以你也可以选择将数据库备份成zip文件以后,以光盘的方式发布应用,很适合做大量分发的演示光盘,比较酷吧。

jetty+h2的组合占用系统资源非常少,而且速度极快, 在我成功移植以后,我的一个同事吃惊的发现速度要比原来的online版本提高了很多。一般用户几乎感觉不到在线操作的那种停顿。

java6自带的那个java数据库就不要考虑了,速度慢,体积大,兼容问题多多。

2. 使用JDIC或者java6提供的一些native特性和桌面进行整合

主要使用诸如系统托盘来提供一些控制操作和辅助功能, 打开浏览器或者将浏览器嵌入到swing应用等等。我的做法是将浏览器嵌入到swing应用中,并做了一些小手脚,保证用户不能使用浏览器直接访问,这样看起来更安全,更象桌面应用。

java6在这些方面有比较好的支持,6以前的版本可以使用JDIC,反正都是一回事。 另外可以选择jgoodie之类的扩展包,让你的桌面看起来更骚包一些。

当然,使用6的话启动要快一些,特别是重复启动的时候,java6还有的一个特性是splash的支持, 这样在启动的时候可以自然一些。

3. 对配置文件进行适当精简,使用混淆工具编译关键包

发布到桌面以后就意味着受攻击指数增加了,增加适当的防范也是必要的,此处如果不怕麻烦,可以使用gcj来编译。

4. 将执行包编译成exe文件, 使用安装工具打包

把java启动类编译成可执行文件的工具很多,我经过比较,使用的是launch4j,主要是支持的特性多一些,对linux也提供支持。
然后再把jre和应用整理规划好目录,使用安装工具打包, 我选择的是nsis, 也是免费的东西, nisi如果不想深入研究的话,建议找supertoy开发的一个脚本生成向导工具,很好用。

5. 其他

* 需要考虑数据的备份和交换操作, 我一般使用dbunit来干这个事, 因为导出导入都可以是完整的xml文件,比较方便。
* 如果要制作光盘版本,再配置一个auto run 就可以自动启动了。
* 要防止应用多次启动, 实现思路有2种,一个是使用一个端口来检测, 另外一个就是使用文件锁。 我使用的是后者,盗用了hsql的部分代码。

基本思路很简单,工作量也不大, 呵呵,反正当初用户是看不出来这是java 做得,还误以为我们是用delphi之类重新开发的。

分享到:
评论
3 楼 john2007 2008-12-03  
再仔细看看,其实也挺详细的了哈
2 楼 john2007 2008-12-03  
mj20030608 写道

楼主,能把详细过程说说吗?


是呀
1 楼 mj20030608 2008-11-19  
楼主,能把详细过程说说吗?

相关推荐

    Java 网摘 经典的总结

    Java 网摘 Java 网摘 经典的总结 Java 网摘 经典的总结

    网摘集合网摘集合网摘集合网摘集合

    网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合网摘集合...

    PHP免费网摘程序

    1、把文件上穿上去以后,在phpmyadmin里边 建立一个数据库。假设是 pictop。 然后把sql文件mmei8.sql导进去。 2、修改数据库配置文件,conn.php.修改网摘配置文件 include/setup.php。 3、后台路径admin/default...

    网摘精灵软件包1.5

    网摘精灵就是这样一个工具,填写好标题和地址,网摘精灵自动将您的网站提交到数百个网摘站。提交过程不用您操心,软件自动完成。 现在是网络时代,速度就是一切。 尝试一下,迎来网站宣传的新天地。把节约下来的...

    天空网摘 v120606

    网摘建站具有技术自主容易、运营维护简单等性价比的优势,并能高效快捷的整合网络诸如论坛、博客、资讯、图片、视频、下载等各类资源来。当然,网摘应用也具有内容原创性不强,互动交流性不够的特点,这就需要在网站...

    博客、相册、文件、网摘、迷你博客、论坛、活动、圈子

    用户通过相互提问和解答可以实现互助、学习、解惑的目的,同时也容易形成一个组织良好的知识库, 增加用户粘度和参与度。 注:扩展应用模块不与SpaceBuilder一起发布,而且也不提供免费使用版本。 使用中有任何问题...

    天空网摘 V120606.rar

    其他事项 请把数据库后缀名MDB改为ASP防下载,同时修改两个Conn.asp(其中一个在Admin目录里)文件中对应的数据库文件名。 网站参数在根目录的“Config.asp”文件里设置,首页内容刷新是通过“Re.asp”文件实现的。...

    PHP免费网摘程序(源代码)

    1、把文件上穿上去以后,在phpmyadmin里边 建立一个数据库。假设是 pictop。 然后把sql文件mmei8.sql导进去。 2、修改数据库配置文件,conn.php.修改网摘配置文件 include/setup.php。 3、后台路径admin/default....

    天空网摘 v20110624.rar

    其他事项请把数据库后缀名MDB改为ASP防下载,同时修改两个Conn.asp(其中一个在Admin目录里)文件中对应的数据库文件名。 网站参数在根目录的“Config.asp”文件里设置,首页内容刷新是通过“Re.asp”文件实现的。 ...

    JAVA面试陷阱(网摘)

    JAVA面试陷阱是本人从网上摘得,为了换点资源分

    ASP.NET 2.0+SQL SERVER热门网络应用开发详解 光盘

    7个精选的网络应用系统包括新闻网站发布、B2C电子商务网站\企业信息门户(EIP)、基于B/S构架的管理信息系统、基于Web的办公自动化系统、应用Ajax.NET框架的在线相册、结合NHibernate框架的网摘+RSS等。 本书适用于...

    Java学习必得(网摘)

    此为一份word文档的资料,是关于Java学习范围的总结。

    百亿网摘完整无错版

    百亿网摘整站 后台功能 --------------------- 基本信息 管理站点的基本信息 栏目管理 栏目分类 网摘管理 已推荐网摘 推荐网摘 首页生成 重新生成页面 审核网摘 管理网摘 模版管理 模版管理 用户管理 管理员修改 ...

    麦布简易网摘源码asp版v1.1

    麦布简易网摘是专门为个人站长制作的一个网摘程序,前台主要是分类显示功能,后台有手工添加、修改、删除以及分类的管理,功能比较简单,非常适合二次开发,本系统秉承麦布程序的一贯风格,特点速度快、占用服务器...

    23个收藏到网摘的16x16图标及代码

    23个收藏到网摘的16x16图标及代码

    一款基于asp.net技术业内领先的Web2.0社区平台

    帮助站长“搭建商务互助社区”,是我们当前的一个重要尝试,因此在v2.1发布之际我们也同步推出了两个新的扩展应用模块:招贴、招聘。招贴是一个帮助用户了解朋友的供求信息,并基于“供求”实现朋友互助的应用模块。...

    咖啡屋网摘联盟程序 v6.0 终极无错误版

    大家盼望已久的功能终于推出了,带有注册的功能,相当于一个完整的网摘,此次改动较大,加入了大家强烈要求的注册互动功能,成为了一个不仅仅能,而且能摘网摘.

Global site tag (gtag.js) - Google Analytics