- 浏览: 103558 次
- 性别:
- 来自: 南京
文章分类
最新评论
摘自: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 848总在寻找项目开发简单化、标准化、统一化的开发管理方法,在项目 ... -
Java的ftp上传下载工具
2012-04-05 22:17 1720自己写的利用apache的net包写的ftp的上传、下 ... -
SmartGWT学习注意事项(一)
2012-03-31 20:42 1535首先表明,我 ... -
J2ME程序开发全方位基础讲解汇总
2007-08-03 14:19 620一、J2ME中需要的Java基础知识现在有大部分人,都是从零开 ... -
使用J2ME技术开发RPG游戏
2007-08-03 14:24 550RPG(角色扮演游戏)是手机游戏中的一类主要类型,也是相对来说 ... -
移动视频: QuickTime for Java API 入门
2007-08-05 12:45 620在 Java 平台上创建 iPod 视频内容 ... -
技术交流:QuickTime流媒体和Java(图)
2007-08-05 12:46 631这并不是即将问世的Quic ... -
JMF下载安装与支持格式
2007-08-05 12:47 853JMF开发进度不是很快,所以目前还是比较薄弱。 JMF,全名 ... -
搭建J2ME开发环境
2007-08-05 12:48 566由于WTK并没有提供代码编辑的功能,因此本文讲述如何使用Ecl ... -
JMF系统介绍
2007-08-09 15:18 699一.简介 1.1JMF 体系结构 ... -
Experiments in Streaming Content in Java ME(一)
2007-08-13 13:43 578Since my book on Mobile Media A ... -
Experiments in Streaming Content in Java ME(二)----Creating an RTSP Protocol Handler
2007-08-13 13:44 1446Recall that RTSP is the actual ... -
Experiments in Streaming Content in Java ME(三)-----Back to RTPSourceStream and StreamingDataSource
2007-08-13 13:46 1029With the protocol handler in pl ... -
java中文件操作大全
2007-08-22 15:40 554一.获得控制台用户输入的信息 /***//**获得控 ... -
Pocket PC、Pocket PC Phone、Smartphone的区别
2007-08-23 16:59 653首先说明几个概念: 1、什么是Pocket PC?Pocket ... -
Struts配置文件详解(来自csdn)
2007-11-30 08:35 497Struts应用采用两个基于X ... -
jBPM开发入门指南(5)
2007-11-30 08:45 510jBPM开发入门指南(5) 前篇说起要讲在JBPM中实现用 ... -
jBPM开发入门指南(4)
2007-11-30 08:48 587jBPM开发入门指南(4) 7 jBPM 的客户端 ... -
jBPM开发入门指南(3)
2007-11-30 08:51 6135 安装 jBPM 的 Eclipse 开发插件 有 ... -
jBPM开发入门指南(2)
2007-11-30 08:52 6234 数据库初始化 jBPM 需要数据库支持, jBPM ...
相关推荐
把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`: `...