在一些应用场合,我们需要分发一个web application到客户的PC上 --- 这个意思是说,我们需要在客户的PC上开启一个web server来运行我们的web application。
经常地,我们把所有需要的资源和代码都打包存储在一个对客户只读的USB设备里,我们希望客户在需要时在PC上外接该USB设备,自启动或者点击我们的启动程序图标即可自动开启webserver并使用用户的默认浏览器打开诸如http://localhost:8080这样的地址。
这样的场景,我见过有些开发团队使用php来构建的,也是在USB里打包好php(on windows)和某种php的轻量server,然后写一个.bat脚本来自动化这些工作。那么使用Java怎么做?
我第一次遇到时,确实有些迷茫;第一想法是,写一个.bat来启动tomcat,之后打开http://localhost:8080之类的地址;之后觉得这样的有些累赘,也许可以自己精简下tomcat?到这里,自然想到也许tomcat有轻量版本? 那还不如直接用Jetty好了。。。 就这样一路想起来,总结出这篇小文,遂分享出来,希望对各位有帮助。
1 首先我们分解下这个案例:
(1 核心是写一个web application,肯定是动态的了,我想数据层的存储也肯定是文件或者sqlite之类的;
(2 接下来是选择一个web server来运行这个application;常见的比较轻量的就是tomcat,jetty之类的了;
(3 使用用户的默认浏览器或者我们提供的浏览器来作为客户端访问web application;
(4 以上3步的串连/自动化及其间的细节问题等。
2 第一步写web application不在本文的讨论范围,就忽略了;唯一可以提一下的是,数据层的选择:文件还是sqlite等?看自己的业务数据特点了;第2步选择server,常见的java轻量嵌入式server是jetty等,另外JDK6里面也有SUN提供的httpserver(com.sun.net.httpserver.HttpServer),但这个一般只用于测试,而且我个人在实际项目中几乎很少见到使用。另外,现在tomcat有了tomcat embed,也许你可以考虑哦。
3 浏览器的选择: 最好是选择用户的默认浏览器了,比如使用start等命令来启动;但有些时候,我们希望这个USB里的程序显得更像是我们自己的,那你就可以使用诸如SWT和jdesktop这样的组件,定制一个自己的“浏览器”。
4 至于自动化问题,一般都是.bat脚本来执行了;或者,你可以使用java程序来启动server等 --- 这完全是可行的,很多应用都这么做。
5 一些细节问题: 比如操作系统兼容性,你最好清楚你的客户都是什么OS;如果需要,你最好多写几个启动脚本以适应不同的操作系统;而且,如果我们所选择的第三方程序无法兼容32位和64位的系统,那么你可能会更麻烦。。。
总结:
本文所提到的场景,并不经常出现;但这仍然代表着一小部分问题的解决方案,如果你遇到了,希望对你有用。不足之处,敬请指正。【你可以在yangzt.com和我联系】
分享到:
相关推荐
Java中的Jetty是一个轻量级、高性能且可嵌入式的Web服务器和Servlet容器,它以其简单易用和高效性在开发社区中广受欢迎。本文将深入探讨Jetty的基本概念、特性以及如何在Java项目中使用它。 1. **Jetty简介** - ...
Java嵌入式开发中的J2ME(Java 2 Micro Edition)是Java技术在移动设备、嵌入式系统和消费电子设备上的应用平台。这个技术框架为开发者提供了在资源有限的设备上开发和部署应用程序的能力,如手机、智能卡、家用电器...
在Java Web开发领域,"轻量级"一词通常指的是不依赖大型、重量级的服务器端框架,而是采用更加灵活、高效和小巧的工具集来构建应用程序。这样的开发方式有助于提高开发效率,减少资源消耗,并易于维护。本主题聚焦于...
【标题】"jsp.rar_Java嵌入式_嵌入式jsp"所指的是一份关于使用Java技术在嵌入式环境中实现JSP(JavaServer Pages)应用的教程或项目资源。JSP是Java平台上的一个重要组成部分,它允许开发者创建动态网页和Web应用...
### 嵌入式数据库SQLite与Java:技术特点与接口应用 #### 一、嵌入式数据库概述 在探讨SQLite之前,我们先简要了解一下嵌入式数据库的基本概念及其应用场景。传统的数据库管理系统如Oracle、SQL Server和MySQL等,...
`Android-Couchbase Lite`就是这样一款针对Android平台设计的轻量级、可同步的NoSQL数据库引擎。它允许开发者在本地设备上高效地存储和管理数据,并通过Couchbase Server实现多设备间的同步,极大地提升了应用的性能...
它们通常运行在资源有限的硬件平台上,如微控制器或小型嵌入式计算机,因此需要高效、轻量级的设计。 嵌入式WebServer的系统特点主要体现在以下几个方面:首先,它们具有小巧的体积和低功耗,适应于资源受限的环境...
传统的数据库管理系统如Oracle、SQL Server、MySQL等,虽然功能强大,但在一些特定场景下,尤其是对于资源受限的环境或轻量级应用而言,可能显得过于庞大和复杂。此时,嵌入式数据库便展现出其独特的优势。其中,...
Apache FtpServer是一个开源项目,它提供了一个轻量级且可嵌入的FTP服务器,允许开发者在Java应用程序中直接启动和管理FTP服务。 首先,我们需要了解FTP(File Transfer Protocol)的基本概念。FTP是一种用于在网络...
在Java领域,Jetty是一个轻量级、高性能的嵌入式HTTP服务器,它也提供了对WebSocket的强大支持。 在"Java_嵌入式Jetty WebSocket示例.zip"这个压缩包中,我们有两个主要的文件:说明.txt和embedded-jetty-websocket...
轻量级HttpServer,正如其名,是一种资源占用少、启动快速、可扩展性强的服务器软件,特别适合于小型项目或开发测试环境。本文将深入探讨轻量级HttpServer的原理、实现方式以及如何运用到实际项目中。 一、HTTP...
Jetty是一款轻量级、高性能的开源HTTP服务器和Servlet容器,它被广泛应用于各种Java Web应用的部署。作为一款嵌入式服务器,Jetty可以直接在应用程序中运行,无需单独的Web服务器进程,这使得它在分布式系统、微服务...
Tomcat是Apache软件基金会的一个开源项目,它是一个实现了Java Servlet和JavaServer Pages(JSP)规范的轻量级Web应用服务器。Tomcat以其小巧、高效和易用性而受到广大开发者的喜爱。 嵌入式Tomcat的核心思想是将...
SQLite数据库是一种轻量级的关系数据库管理系统,易于移植和使用。它支持多种编程语言,包括C、C++、Java、Python等。SQLite数据库可以存储大量的数据,支持事务处理和并发控制。 四、CGI技术的应用 CGI(Common ...
### Java嵌入式数据库H2学习大全 #### H2数据库简介与特性 H2是一款功能强大的开源嵌入式数据库系统,完全用Java语言编写。...对于需要一款轻量级且高效数据库的应用场景而言,H2无疑是一个非常好的选择。
Couchbase Lite Android 是一个专为Android平台设计的轻量级、嵌入式的NoSQL数据库引擎,它允许开发者在应用程序中本地存储数据,同时支持数据同步功能。这款数据库引擎基于Couchbase Server,是Couchbase公司为移动...
- GOAHEAD Web Server 是一款专为嵌入式设备设计的轻量级 Web 服务器,具有以下特点: - **开源**:允许开发者自由地获取源代码并根据需要进行修改。 - **特性丰富**:支持活动服务页面、Java 描述语言、in-...
7. **游戏开发**:虽然不是首选,但Java也可用于开发2D和轻量级3D游戏,例如LWJGL( Lightweight Java Game Library)提供了一些游戏开发工具。 8. **物联网(IoT)**:Java ME(Micro Edition)针对嵌入式设备和资源...
在本系统中,JSP页面可能包含HTML、CSS、JavaScript以及嵌入式的Java代码,负责展示用户界面和处理一些轻量级的前端逻辑。 3. **SQL Server数据库**:作为后台数据存储,SQL Server提供了高效的数据库管理功能。...
- **Java**:尽管Java的运行时相对较大,但其丰富的库支持使得用Java编写的轻量级Web服务器具备高度的可扩展性和可靠性。 #### 四、具体实例介绍 1. **Athana** - Athana是一款用Python编写的轻量级Web服务器,...