- 浏览: 96485 次
- 性别:
- 来自: 南京
文章分类
最新评论
摘自:http://java.csdn.net/page/ca441801-5423-4eed-8bb9-681757c2ee4d
昨天玩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之类重新开发的。
发表评论
-
规范的模板化项目架构管理
2012-05-03 23:31 733总在寻找项目开发简单化、标准化、统一化的开发管理方法,在项目 ... -
Java的ftp上传下载工具
2012-04-05 22:17 1603自己写的利用apache的net包写的ftp的上传、下 ... -
SmartGWT学习注意事项(一)
2012-03-31 20:42 1446首先表明,我 ... -
J2ME程序开发全方位基础讲解汇总
2007-08-03 14:19 553一、J2ME中需要的Java基础知识现在有大部分人,都是从零开 ... -
使用J2ME技术开发RPG游戏
2007-08-03 14:24 516RPG(角色扮演游戏)是手机游戏中的一类主要类型,也是相对来说 ... -
移动视频: QuickTime for Java API 入门
2007-08-05 12:45 565在 Java 平台上创建 iPod 视频内容 ... -
技术交流:QuickTime流媒体和Java(图)
2007-08-05 12:46 589这并不是即将问世的Quic ... -
JMF下载安装与支持格式
2007-08-05 12:47 824JMF开发进度不是很快,所以目前还是比较薄弱。 JMF,全名 ... -
搭建J2ME开发环境
2007-08-05 12:48 534由于WTK并没有提供代码编辑的功能,因此本文讲述如何使用Ecl ... -
JMF系统介绍
2007-08-09 15:18 619一.简介 1.1JMF 体系结构 ... -
Experiments in Streaming Content in Java ME(一)
2007-08-13 13:43 553Since my book on Mobile Media A ... -
Experiments in Streaming Content in Java ME(二)----Creating an RTSP Protocol Handler
2007-08-13 13:44 1409Recall that RTSP is the actual ... -
Experiments in Streaming Content in Java ME(三)-----Back to RTPSourceStream and StreamingDataSource
2007-08-13 13:46 995With the protocol handler in pl ... -
java中文件操作大全
2007-08-22 15:40 532一.获得控制台用户输入的信息 /***//**获得控 ... -
Pocket PC、Pocket PC Phone、Smartphone的区别
2007-08-23 16:59 607首先说明几个概念: 1、什么是Pocket PC?Pocket ... -
Struts配置文件详解(来自csdn)
2007-11-30 08:35 470Struts应用采用两个基于X ... -
jBPM开发入门指南(5)
2007-11-30 08:45 457jBPM开发入门指南(5) 前篇说起要讲在JBPM中实现用 ... -
jBPM开发入门指南(4)
2007-11-30 08:48 533jBPM开发入门指南(4) 7 jBPM 的客户端 ... -
jBPM开发入门指南(3)
2007-11-30 08:51 5545 安装 jBPM 的 Eclipse 开发插件 有 ... -
jBPM开发入门指南(2)
2007-11-30 08:52 5464 数据库初始化 jBPM 需要数据库支持, jBPM ...
相关推荐
把java web应用包装成桌面应用的简单做法 把java web应用包装成桌面应用的简单做法 把java web应用包装成桌面应用的简单做法 把java web应用包装成桌面应用的简单做法
宣告变量名称的同时,加上“final”关键词来限定,这个变量一但指定了值,就不可以再改变它的值 如:final int n1= 10; n1=20; 这就会报错 输出命令: System.out.println() 会自动换行的打印 System.out....
这提供了一种非常简单的方法来实现任何基于 Java 的应用程序中的 HTTP 侦听器,无论是桌面应用程序还是应用程序像Tomcat这样的服务器。 结合 JSON 编码器/解码器,它可以成为一个强大的解决方案为您的应用程序提供...
Kotlin Spotify Web API 实现,支持Kotlin / JS,Kotlin / Android,Kotlin / JVM和Kotlin / ... 创建一个新的API实例 SpotifyAppApi SpotifyClientApi PKCE 非PKCE SpotifyImplicitGrantApi SpotifyApiBuilder块
是一个服务器应用程序,用于存储、共享和处理人文学科的主要来源和数据。 它由 at 开发,并由 和 支持。 Knora 是,根据 . 特征 将人文数据存储为行业标准图形,以及二进制数据文件,例如数字化的主要来源。 旨在与...
这是可以在cljfx / java堆栈之上构建的桌面应用程序的示例。 它用: 用于UI和行为; 的样式; 用于包装。 您可以在下载最新版本。 语境 与Web相比,以前打包基于Java的应用程序进行分发是痛苦的问题之一:一个...
也有分析认为,谷歌并不想做一个简单的手机终端制造商或者软件平台开发商,而意在一统传统互联网和 移 动互联网。----------------------------------- Android 编程基础 4 Android Android Android Android 手机新...
Photino是用于构建本机, 具有Web UI技术的跨平台桌面应用程序。 Photino使开发人员能够使用快速的本机编译语言,例如C#,C ++,Java等。 使用您喜欢的.NET 5开发框架,并使用Web UI框架(如Blazor,React,...
是一项使用 JavaScript运行时启用桌面应用程序的技术。 该存储库试图将打包为Electron应用程序,以便可以与JavaScript用户界面元素结合使用,最终可能的目标是在JavaScript中重铸核心ImageJ UI。 为什么选择电子 ...
:locked: Universal Tox客户端 该项目是我愿意开发的新Tox客户端的全新开始。... 我将需要为Java中的Android创建包装器(我大多数人都知道这种语言,所以应该不要太难),而对于Obj-C / Swift中的iOS