2

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

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

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

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

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

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

任何想法都非常感谢..

4

9 回答 9

6

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

Web Start 维基百科页面

Sun Web Start 上的常见问题解答

于 2009-03-14T13:52:28.717 回答
2

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

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

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

于 2009-03-14T11:04:50.513 回答
2

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

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

于 2009-03-14T12:39:26.643 回答
1

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

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

于 2009-03-14T12:25:20.157 回答
0

使用 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。

于 2009-03-14T13:07:07.920 回答
0

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

于 2009-03-14T13:33:17.437 回答
0

你可以试试 GWT + Google Gears

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

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

于 2009-03-14T14:54:30.627 回答
0

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

于 2009-03-14T15:21:07.253 回答
0

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

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

然后,您只需要在 start.[bat|cmd|sh] 中启动 Jetty,并将您的应用程序作为您的 webaplication 上下文,然后您就完成了!

于 2009-03-14T13:59:20.477 回答