如何通过浏览器在本地提供Java程序

时间:2009-03-14 10:51:20

标签: java mysql jdbc browser language-features

我想在一台机器上编写一个完全本地运行的应用程序 - 无需连接到互联网或任何外部机器。

我当时认为使用Web浏览器作为此应用程序的平台是一个好主意,这样我就不必乱用很多UI内容 - 我可以很快地将网页拼凑起来利用CSS在整个应用程序中获得一致的样式。

但是,我想与相关机器上的MYSQL数据库进行交互。考虑到这一点,我想我可以某种方式使用Java来处理用户从应用程序输入的信息,并通过JDBC将其传递给数据库。

我知道我可以使用applet来做到这一点,但缺点是我希望用户能够将文件保存到本地机器 - 我已经读过applet在沙箱中运行,这会阻止它们获得对本地机器的任何访问权。

我也知道我可以使用PHP,但我想利用Java非常适合的面向对象设计。

有没有人对教程/网页有任何想法,建议或链接,这可以帮助我决定如何最好地解决这个问题。

非常感谢任何想法。

9 个答案:

答案 0 :(得分:6)

我知道你说你不想乱用java中的GUI东西,但你有没有看过java web start?它几乎完全符合您的需求;用户通过Web浏览器单击链接,并且您的应用程序部署在他们的计算机上,甚至会检查以确保使用正确的JVM。因为它是一个完整的应用程序而不是applet,你的应用程序不会被沙盒化,你的程序中没有任何访问限制(除了普通的java东西......),例如,它会很容易做你提到的并与mySQL DB交谈。唯一的缺点是我之前提到过,你必须在java中设计一个UI。

Web Start Wikipedia Page

Sun FAQ on Web Start

答案 1 :(得分:2)

如果您对基于Java EE的Web开发感到满意,可以将应用程序与Tomcat或Jetty捆绑在一起。

如果您不想仅为一个应用程序运行独立的servlet容器,您还可以将Jetty嵌入到可运行的Java应用程序中(请参阅文档here)。

无论哪种方式,您都可以利用现有的Java EE框架(Spring JDBC,Hibernate,所有这些Web框架)来抽象出技术复杂性,尽管使用嵌入式Jetty,您可能需要为Web应用程序编写某种集成层你选择的框架。

答案 2 :(得分:2)

Grails可能是一个有用的起点。它将为您提供独立的Web服务器解决方案,它将通过动态生成的网页来管理JDBC要求和CRUD(创建 - 读取 - 更新 - 删除)功能。只需要很少的努力就可以将通过网页提供数据库接口的应用程序组合在一起。

(fyi。Grails是Java的等同于Rails

答案 3 :(得分:1)

我认为你应该试试Restlet,一个轻量级的休息框架。本教程向您展示如何启动本地Web服务器,并在几分钟内通过浏览器提供“Hello World”(不开玩笑!),并且有足够的扩展可满足任何需求。

结合Java Web Start,您可以将应用程序部署并启动到本地主机,这应该是您所需要的。

答案 4 :(得分:0)

使用JDBC并不意味着您必须编写applet,您可以在任何类型的应用程序中使用JDBC:桌面应用程序,Web应用程序,EJB,MDB等。

您想在服务器端使用浏览器和Java吗?然后去使用它并使用Servlets / JSP。考虑使用表示框架(Wicket,Struts2,Spring MVC,...),Hibernate进行数据访问,使用Spring进行其他设施和布线。 Grails也是一个好主意。

顺便说一句,我不是PHP专家,但PHP具有面向对象的功能(在PHP4中引入,在PHP5中得到增强),所以如果选择PHP,你不会牺牲一切。

所以这真的取决于你想做什么。如果您想编写一些Java(webapp或桌面应用程序):选择Java。如果您想快速放置几个网页并拥有一个apache服务器,请选择PHP。如果您寻求真正的高生产力,请选择RoR或Grails。

答案 5 :(得分:0)

如果您想将其作为applet来实现。签署applet并赋予它对本地网络的权限(以这种方式连接到MYSQL服务器)......这应该是可能的。 Here is a tutorial on it

答案 6 :(得分:0)

正如有人建议你已经可以在你的应用程序上使用embbeded jetty服务器,让你的用户使用一些shell脚本或批处理脚本来启动它。您只需要使用Java Web应用程序和您的应用程序来投诉您的layour目录。即:

MyApplication
   app/
      WEB-INF/
         lib/
         classes/
         web.xml
   start.bat    |
   start.cmd     -  depends on your client OS
   start.sh     |

然后你应该只需要在开始时启动Jetty。[bat | cmd | sh]用您的应用程序作为您的webaplication上下文并完成!

答案 7 :(得分:0)

您可以尝试使用GWT + Google Gears

GWT是一个类似于浏览器的Swing的GUI工具包。 Google Gears是一个浏览器端数据库。您的应用程序完全使用单个HTML文件中的Javascript并且跨浏览器兼容。

GWT应用程序可以使服务器调用和Gears可以与服务器数据库同步。因此,您无需将应用数据完全限制在本地桌面上。

答案 8 :(得分:0)

如果您对某些实验感兴趣,比如新东西,并希望重用过多的Java库(包括JDBC),那么您可能会对lift web framework感兴趣,这是Scala - 基于