【问题标题】:How to deliver a Java program locally through a browser如何通过浏览器本地下发Java程序
【发布时间】:2009-03-14 10:51:20
【问题描述】:

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

我在想,使用网络浏览器作为这个应用程序的平台是个好主意,这样我就不必乱搞很多 UI 东西——我可以很快地把网页拼凑在一起,然后利用 CSS 在整个应用程序中获得一致的样式。

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

我知道我可以使用小程序来执行此操作,但这样做的缺点是我希望用户能够将文件保存到本地计算机 - 我已经读过小程序在沙箱中运行,这会阻止它们获得对本地计算机的任何访问权限。

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

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

任何想法都非常感谢..

【问题讨论】:

  • 如果它只是一个个人项目并且你有时间,我建议学习 Java GUI 的东西。还要指出,php5及以上可以做面向对象的设计。

标签: java mysql jdbc browser language-features


【解决方案1】:

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

Web Start Wikipedia Page

Sun FAQ on Web Start

【讨论】:

    【解决方案2】:

    Grails 可能是一个有用的起点。它将为您提供一个独立的 Web 服务器解决方案,它会通过动态生成的网页来处理 JDBC 要求和 CRUD(创建-读取-更新-删除)功能。通过网页提供数据库接口的应用程序应该花费最少的精力。

    (仅供参考。Grails 是 Rails 的 Java 等价物)

    【讨论】:

    • 这听起来很有趣。我的一位同事总是对 Rails 评价很高,所以如果有类似的东西,我相信它会很好。感谢您的回答。
    【解决方案3】:

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

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

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

    【讨论】:

    • Jetty / Tomcat 的另一个替代品是 Winstone - 一个非常简单的 servlet 容器 winstone.sourceforge.net
    • 谢谢,我会看看这个。我有使用 JBoss 应用服务器的经验,Tomcat 和 Jetty 有类似的东西吗?
    • Tomcat 和 Jetty 是纯 servlet 容器,但根据您的描述,这很可能是您所需要的。如果您需要“真正的”企业功能而不使用成熟的 JEE 容器,您不妨看看 Spring Framework。
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      正如有人已经建议的那样,您可以在您的应用程序中使用嵌入式码头服务器,并让您的用户使用某种 shell 脚本或批处理脚本来启动它。您只需要向 Java Web 应用程序和您的应用程序投诉您的布局目录。即:

      我的应用程序 应用程序/ WEB-INF/ 库/ 班级/ web.xml 开始.bat | start.cmd - 取决于您的客户端操作系统 开始.sh |

      那么您只需要在开始时启动 Jetty。[bat|cmd|sh] 使用您的 app 作为您的 webaplication 上下文,然后您就完成了!

      【讨论】:

        【解决方案6】:

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

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

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

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

        【讨论】:

        • 是的,我听说 PHP 中有一些这样的功能。我也同意您可以使用 PHP 快速将页面拼凑在一起——我正在这样做,因为我们正在做一个小原型。另一张海报也推荐了 Grails,我将不得不对其进行研究。非常感谢您的回答:)
        【解决方案7】:

        你可以试试 GWT + Google Gears

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

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

        【讨论】:

          【解决方案8】:

          如果您对一些实验感兴趣,比如新东西,并且想重用过多的 Java 库(包括 JDBC),那么您可能会对基于 Scalalift web framework 感兴趣。

          【讨论】:

            【解决方案9】:

            如果你想把它作为一个小程序来做,你可以。签署小程序并授予它对本地网络的权限(以这种方式连接到 MYSQL 服务器)......这应该是可能的。 Here is a tutorial on it.

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-02-07
              • 2013-07-20
              • 2011-09-01
              • 1970-01-01
              • 2016-05-18
              • 2010-12-16
              • 1970-01-01
              相关资源
              最近更新 更多