`
- 浏览:
1394009 次
- 性别:
- 来自:
北京
-
把一个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之类重新开发的。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
把java web应用包装成桌面应用的简单做法 把java web应用包装成桌面应用的简单做法 把java web应用包装成桌面应用的简单做法 把java web应用包装成桌面应用的简单做法
- 在将Java Web应用转化为桌面应用时,首先需要选择一个嵌入式的Web服务器。这里推荐使用Jetty,因为它的体积小、性能高,相较于Tomcat的嵌入版本,Jetty在处理并发请求时有更好的表现。对于使用大量AJAX效果的应用...
同时,提供了完备的应用服务器接口,使Java企业级开发、桌面应用的开发、部署、测试和可移植性变得高效。Dreamweaver是一个功能强大的Web开发工具,提供了强大的可视化界面设计和开发环境。 三、搭建Java Web开发...
4. 桌面组件:用于基本的桌面服务,如在正确的编辑器里打开一个文件,新建一封 Email,或者把一个 URL 发送到默认的 web 浏览器。 5. 桌面组件的使用:使用 desktop.open() 方法可以打开一个文件,使用 desktop.edit...
例如,Excelsior Jet是一个商业编译器,它可以将Java代码直接编译成机器码,而Launch4j则是一个免费工具,它创建的是一个轻量级的Windows可执行包装器,它会调用JRE来运行JAR文件。 3. **GNU Compiler for Java ...
Wrapper是一个轻量级的程序,它能够作为一个容器,将Java应用程序包装起来,使其能够在Windows环境下作为服务运行。Wrapper通常包含一个配置文件(如`wrapper.conf`)、一个动态链接库(`Wrapper.dll`)、一个可执行...
Java语言是一种面向对象的编程语言,广泛应用于各种领域,如Web开发、移动应用开发、桌面应用开发等。Java语言提供了许多有用的类库和框架,方便了开发者的开发工作。 Socket类 Socket类是Java语言中用于网络编程...
Java是一种面向对象的编程语言,它广泛应用于Android应用程序开发、Web应用程序开发、企业软件开发、嵌入式系统开发等领域。下面是Java基础知识点的总结: 架构 * B/S架构:浏览器/服务器程序 * C/S架构:客户端/...
1. **软件开发**:类定义是任何Java应用程序的基础,无论是桌面应用、Web应用还是移动应用。 2. **游戏开发**:在游戏中,类可以用来定义角色、场景、道具等各种游戏元素。 3. **系统设计**:在设计复杂的系统时,类...
C/S 架构即客户端/服务器架构,主要应用于桌面应用程序开发。 二、网络协议 Java 中常用的网络协议有: 1. HTTP:超文本传输协议 2. FTP:文件传输协议 3. SMTP:简单邮件协议 4. Telnet:远程终端协议 5. POP3:...
Java SE主要用于桌面应用和服务器端开发,Java EE则专为大型企业级应用提供服务,包括Web应用和分布式系统。Java ME适用于资源有限的嵌入式设备,如手机和智能家电。 Java的历史版本见证了其不断发展和改进的过程。...
* 显示转换:把一个大类型的数据强制赋值给小类型的数据 * 隐式转换:大范围的变量能够接受小范围的数据 十三、Char 类型的转换 * Char 类型可以隐式转成 int 类型,但是不能隐式转换成 string 类型 * Char 类型...
**Java桌面应用服务(Java Desktop Application Services)** 提供了用于集成Java应用程序到桌面环境的API,如启动图标、系统托盘等。 #### 16. **垃圾回收器改进** 包括并行垃圾收集器和并发标记清除垃圾收集器的...
VB6是Microsoft开发的一种面向对象的编程环境,主要用于Windows平台的桌面应用开发,以其直观的界面设计和强大的Windows API支持而受到欢迎。Java,另一方面,是一种跨平台的、面向对象的编程语言,具有“编写一次,...
3. Java Standard Edition (Java SE)、Java Enterprise Edition (Java EE) 和 Java Micro Edition (Java ME) 分别针对桌面应用、企业级应用和嵌入式设备。Java SE是最基础的版本,Java EE则扩展了用于Web服务和...
1. **java.awt**和**javax.swing**:图形用户界面库,用于创建桌面应用。 2. **java.sql**:与关系型数据库进行交互,如JDBC API。 3. **javax.xml**:处理XML文档,如DOM、SAX和StAX解析器。 三、第三方库 除了...
1. **第一单元项目案例**:开发一个基于AWT/Swing的桌面应用程序,例如资源管理器。 2. **第二单元项目案例**:使用JSP+Servlet+JavaBean技术栈实现一个Web应用,如E-BOOK网上书店。 3. **第三单元项目案例**:利用...
Java为每种基本数据类型都提供了一个包装类,例如: - `byte`: `Byte` - `short`: `Short` - `int`: `Integer` - `long`: `Long` - `float`: `Float` - `double`: `Double` - `char`: `Character` - `boolean`: `...