把一个java web应用包装成桌面应用的简单做法
来源:互联网 发布:网络超市赚钱吗 编辑:程序博客网 时间:2024/05/16 01:11
昨天玩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之类重新开发的。
- 把一个java web应用包装成桌面应用的简单做法(转)
- 把一个java web应用包装成桌面应用的简单做法
- 把一个java web应用包装成桌面应用的简单做法
- 把一个java web应用包装成桌面应用的简单做法
- 把一个java web应用包装成桌面应用的简单做法(网摘)
- 转:把一个java web应用包装成桌面应用的简单做法(个人比较喜欢,想有空研究一下,特意转载,以备后用)
- 一个简单的java桌面应用:单机版IFTTT
- 用node-webkit把web应用打包成桌面应用
- 用node-webkit把web应用打包成桌面应用
- 用node-webkit把web应用打包成桌面应用
- 用node-webkit把web应用打包成桌面应用
- 用node-webkit把web应用打包成桌面应用
- 用node-webkit把web应用打包成桌面应用
- 用node-webkit把web应用打包成桌面应用
- 部署于Openshift 上的一个简单java web应用
- Web 2.0更像一个桌面应用
- 一个简单的WEB应用 VS2005
- 创建一个简单的Web Service应用
- 异常:java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContex
- 删除数据库中所有表数据
- java中,如何将一个字节数组转换成字符串?
- 将分开的两个List合并成一个并保持其原来的顺序的两种方法
- FreeTextBox 问题锦集
- 把一个java web应用包装成桌面应用的简单做法
- java调用dll
- symbian开发环境的搭建问题
- 泛型的基类和接口
- 清晨锻炼和运动减肥
- linux 公共配置文件 profile .zshrc
- CSDN积分查询--清洁工2008版
- 手机电视国标博弈,第一回合结束
- 超级电脑