`
ywg2008
  • 浏览: 46621 次
  • 性别: 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 网摘中提到的核心知识点主要集中在Socket编程上,这是Java进行网络通信的基础。Socket,又称“套接字”,是计算机网络中进程间通信的一种方式,它允许两个网络应用程序之间进行双向通信...

    Java学习必得(网摘)

    Java学习是成为一个专业Java开发者的基石,而"Java学习必得(网摘)"这份文档则是对Java学习路径的一个全面概述。以下将详细讲解其中提到的关键知识点: 1. **语法理解**:Java语法是编程的基础,熟悉并能理解错误...

    php网摘程序

    网摘程序的一个关键特性是所有网摘全部生成静态页面。这意味着当用户收藏一个网页时,程序会抓取原始网页的内容,并将其转换成HTML静态文件。这样做有几大优点:首先,静态页面加载速度快,因为它们不需要经过服务器...

    ASP源码—麦布简易网摘源码.zip

    此外,还可以了解如何设计和实现一个简单但实用的Web应用,提升Web开发技能。 在实际使用或二次开发时,需要注意以下几点: 1. **安全性**:确保用户输入的合法性,防止SQL注入等攻击。 2. **性能优化**:合理设计...

    PHP免费网摘程序

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

    网摘精灵软件包1.5

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

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

    标题中的“23个收藏到网摘的16x16图标及代码”指的是一个包含23个16像素乘16像素大小的图标(图标通常用于网站、软件或操作系统中,作为各种功能或操作的视觉表示)以及与这些图标相关的编程代码资源。这种尺寸的...

    JAVA面试陷阱(网摘)

    - `final`:这是一个修饰符,用于声明常量、类或方法不可变。当用于类时,表示该类不能有子类;用于变量时,表示变量一旦赋值后不可改变;用于方法时,表示该方法不能被重写。 - `finally`:在异常处理中,`...

    天空网摘 v120606

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

    jsp网摘系统源代码

    【JSP网摘系统源代码】是一个基于Java技术开发的Web应用程序,主要使用JSP(JavaServer Pages)作为视图层技术,为用户提供一个在线收藏、管理和分享网络资源的平台。这种系统通常包括用户注册、登录、添加摘录、...

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

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

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

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

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

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

    基于ASP的麦布简易网摘源码.zip

    “麦布简易网摘”可能是一个轻量级的网络书签应用,用户可以通过这个平台保存网址、添加描述、分类管理他们的书签。核心功能可能包括: 1. **登录注册**:用户需要一个账户来保存和管理他们的书签。 2. **添加书签**...

    天空网摘 V120606.rar

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

    企业Mashup应用指南1

    Mashup是糅合,是当今网络上新出现的一种网络现象,将两种以上使用公共或者私有数据库的web应用,加在一起,形成一个整合应用。Mashup在geek群体和互联网玩家之中获得了极大的欢迎,Mashup未必需要很高的编程技能,...

    加入网摘插件 v1.0 通用版

    【加入网摘插件 v1.0 通用版】是一个旨在帮助网站所有者提升其在线可见性和用户参与度的工具。这款插件的核心功能是使用户能够方便地将网站内容添加到他们的网络收藏夹或网摘站点,从而促进网站的宣传和推广。尤其...

    天空网摘 v20110624.rar

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

    web1.0和web2.0和web3.0

    Web2.0的出现标志着互联网进入了一个全新的发展阶段,这一阶段始于2000年代初期。Web2.0的核心特征是强调用户生成内容(User-Generated Content, UGC)和用户参与度的提高。在这个阶段,互联网变得更加互动和协作,...

Global site tag (gtag.js) - Google Analytics