使用 Java 是开发基于 GUI 的会计应用程序的适当语言/平台吗?

Posted

技术标签:

【中文标题】使用 Java 是开发基于 GUI 的会计应用程序的适当语言/平台吗?【英文标题】:Is using Java the proper language/platform for developing a GUI based accounting app? 【发布时间】:2010-02-05 18:17:30 【问题描述】:

我知道这部分是主观的,但希望有足够的细节我能得到一个好的答案。

我希望开发一款针对特定细分市场的会计应用程序(想想 Quickbooks,但经过调整)。大多数应用程序都是可编辑的表格,与数据库数据和一些基本的报告和图形功能相关联。

它必须是跨平台的(OS X 和 Windows)。

它将与本地数据库交互。 (SQLite 或 Derby 或其他)

速度不是一个“大”问题。它需要合理响应(与 C/C++ 相比,我不熟悉 Java 速度)。

我将其范围缩小到 C++ 与 QT 和 Java 之间。我只知道很少的 Java,但经常使用 C++。然而,到目前为止,Java 似乎是最好的整体解决方案,而且书籍/文档的数量巨大,这是一个加分项。

    与 Java GUI 和 DB 的集成有多容易? NetBeans 是否让这个过程变得简单,还是我应该使用 Eclipse?我正在寻找类似于 C# 与 Visual Studio 的体验。 Java 中的整个“大十进制”舍入问题是一个主要问题还是很容易解决? (对不起,如果我在这个话题上没有受过教育,但我真的不熟悉 Java) 是否有任何我可能没有想到的 Java 真正的成功因素,或者我应该使用带有 QT 的 C++ 的任何真正强有力的理由? 如果我最终想将其部分或全部移植到网络上,桌面上的 Java 是否会使以后的移植更容易?

【问题讨论】:

【参考方案1】:

首先我要说的是“这里没有正确的答案”。

Java 可以完全满足您的需求。 GUI工具包,经过多年的改造,非常先进。还有很多工具、框架和扩展可以用来让 GUI 看起来非常高级。

Java 还有一个很棒的数据库连接框架。使用对象关系映射 (ORM) 工具(Hibernate 和其他工具)很容易从数据库中获取数据,将其放入对象中,对其进行操作,然后将其放回数据库中。 ORM 工具还可以轻松地将数据对象直接连接到 GUI,并使用这些对象中的规则来保护数据免受损坏。

跨平台支持会给你很大帮助。唯一的大症结是在机器上有一个用于文件的 Java 运行时。有办法解决这个问题(最好是让安装程序把它放在那里)。

【讨论】:

【参考方案2】:

显然没有一种解决方案,但两种解决方案各有利弊,甚至还有第三种解决方案:Java 和 Qt。

首先,我在 C++ 和 Qt 方面的经验已经有几年了,所以可能不是那么准确,而且我对 Java GUI 开发的兴趣在一两年前就已经结束了,当时我看到了这些开发工具。我通常使用 Java,但不使用 Swing。

也就是说,Java 和 C++ 之间的主要区别似乎在于部署。 Java 总是依赖于安装的 java 环境,而 C++ 则更加独立。如果您可以在两个平台上管理部署,我会稍微偏爱 C++。

对于 GUI 开发,Qt 工具非常好,而且只会变得更好。该框架还与 GUI 流程非常匹配,非常适合此类工作。 Swing 似乎有点低级,并且需要相当多的样板代码。虽然我听说过 mantisse 的好东西,但我自己也知道没有真正好的开发工具。

如果您认为 Java 是用于部署或后端逻辑的方法,但 Qt 的 GUI 工具实在是太好了,不容忽视,请查看有关 Java Swing or Java Qt 的 *** 问题。值得一读。

在您的特殊情况下,我会使用 C++/Qt,因为您有使用 C++ 的经验,而且正确构建 Java Swing 应用程序并不是那么简单。

【讨论】:

【参考方案3】:
    我对 Netbeans 不熟悉,但我做过几个具有数据库访问权限的 Java 应用程序。即使我使用的是 gvim 而不是 IDE,我也觉得这很容易。 您在说什么“大十进制”问题?所有计算机语言都存在二进制和十进制之间的映射问题,但是如果您知道自己在做什么,则无论使用哪种语言都可以处理它。见鬼,我在 FORTRAN-H 中做过工程应用。 除了您更了解 C++,没有理由不使用 Java。它非常符合您的要求。 编写一些内容以便最终将其移植到 Web 更多的是确保您使用模型-视图-控制器模式并记住您的视图最终可能会完全不同。这是一种设计理念,而不是语言要求。

【讨论】:

至于#2,我所指的实际上只是我读到的一个双重问题。 - javaranch.com/journal/2003/07/MoneyInJava.html 每种语言在浮点数方面都有同样的问题。 BigDecimal 是一个解决方案,而不是一个问题。【参考方案4】:
    我会避免标题中包含 bean 的任何内容,但 java 与 DB 和 GUI 配合得很好。 我不确定您的意思,但您可能想创建自己的理财课程。几乎不像是很多工作,然后它会完全按照您的喜好进行。 在 Java 中实际正常工作的可能性比在 C++ 中要大得多,但如果您有一个非常复杂的 GUI,Java GUI 的东西在某些方面比大多数 C++ 应用程序更容易使用,但在其他方面则更难。 并非如此。

【讨论】:

NetBeans 与 JavaBeans 无关。它是最好的 Java IDE 之一。【参考方案5】:

没有并发?它只在本地数据库上?我发现对于一个新的软件项目来说,这令人惊讶地受到限制。令我惊讶的是,您没有考虑带有 Web 服务后端的 AJAX 浏览器 GUI。

编辑:速度不是问题,您认为您可能需要将其移植到网络上?从网络开始,省去很多麻烦。

【讨论】:

+1,Web 应用程序在复杂性方面与 Swing 应用程序没有显着差异。两者都没有意义。 你说的绝对有道理。我开始考虑使用 php/javascript/mysql 解决方案,但 Web 世界离我的知识领域仅一步之遥,尤其是 AJAX 和 Web 服务后端。安全性不是我熟悉的东西,从开发的角度来看,我现在更容易在桌面版本上工作(当前的工作和时间情况)。不过我会考虑更多。 我完成的最后两个“Swing”应用程序被设计为混合:Swing 客户端与 SOA/服务器后端对话。使移植到网络变得更加容易。即使您不编写“网络”用户界面,也请务必将其计划到您的架构中。【参考方案6】:

我建议使用 Groovy 而不是 Java。它有点像 Java++,因为 Java 中的几乎所有内容也在 Groovy 中,但 Groovy 在此之上提供了许多好处。 Groovy 语言提供了许多辅助方法。默认情况下数学是否正确(没有双重数学问题)。

就网页与桌面而言,您可以选择网页版 Grails 和桌面版 Griffon。同样,基于 Groovy。

对于 IDE,如果您选择 Groovy,则可以选择 IntelliJ(虽然做 web,但价格昂贵),或者 SpringSource Tool Suite,它是 Eclipse 的衍生产品。基本上是带有许多插件的 Eclipse,包括 Groovy。

【讨论】:

问题似乎集中在 GUI 开发上。 groovy 在 Java GUI 上有优势吗? 没有。相同,因为 Groovy 可以使用所有相同的库。 Griffon 框架看起来很有趣,因为我相信它是 SWT 的包装器,所以这可能是一个优势。我只是想如果你要学习一门新语言,为什么不学习一门更强大、更高效的语言…… Griffon 主要是 Swing 的包装器,因为它默认支持该工具包。但是,如果您安装了相应的插件,也支持 SWT 和 JavaFX。【参考方案7】:

我正在使用 NetBeans 用 Ja​​va 开发一个 GUI 工具,到目前为止没有任何问题。不要完全依赖 NetBeans GUI 编辑器,我只用它来设计我的对话框和面板。我体验过,如果您采用 MVC 方式,使用 NetBeans GUI 编辑器会容易得多。然后,您可以完全将设计部分留给 NetBeans。查看新的SwingSet3 demo,并确定Java Swing 控件是否足以满足您的需求(就外观和可用的GUI 控件而言)。另外,看看SwingX components,其中一些真的很棒而且看起来很漂亮,比如ShadowBorder、TitlePanel 等。我肯定会建议你使用JXTable 而不是JTable。鉴于 Java 的流行,我认为 BigDecimal 问题尚未得到解决。关于 DB,Java 捆绑了它自己的完整功能 JavaDB,它的大小非常小 - 只有 2.5 MB。如果您不想安装重量级的 DBMS,例如 MySQL,这将派上用场。恕我直言,这也将是另一个抽象级别 - 您的客户几乎看不到任何正在使用的外部数据库。永远不要误以为可移植意味着您的 Java 软件将自动在不同的平台上运行。它肯定需要更多的努力,但是如果你在你的初始设计上工作,并构建你的软件,保持不同的平台(不仅是操作系统,还有桌面/网络等)在你的脑后,它会很容易调整一点让它完全便携。采用 MVC 方式,它不会受到伤害。我的 2 美分。

【讨论】:

【参考方案8】:

如果您需要跨平台 Java 是一个不错的选择。

请记住,出于会计目的,请使用适合金额的数据类型。 Double/Reals/Floats 等基本上都表示数字,例如二进制分数乘以指数,从而导致舍入错误。据报道,对于 Java,BigDecimal 运行良好。

【讨论】:

【参考方案9】:

您可能对此感兴趣

Ajaxswing

虽然我希望其他人说从头开始将其开发为 Web 应用程序。

【讨论】:

【参考方案10】:

好吧,如果您熟悉 C++,那么这是使用它的第一大理由。 QT 是一个非常好的工具包,使用它你会比使用 Java 更有效率(正如你对 C++ 非常了解)。此外,由于这种体验,您制作更好应用的机会也更大。

所以,除非您迫切希望获得 Java 经验(现在这不像过去那么重要),否则请坚持使用 C++/QT 并培养一些跨平台技能。

就我个人而言,如果我要从头开始开发一个新应用,并且我想学习一些新东西,那么它会是一个带有一些新 HTML5/js 好东西的 web 应用。花哨的网络功能更有可能成为厚桌面客户端应用程序的未来(并且在更多移动平台上更友好)。

【讨论】:

【参考方案11】:

我绝对推荐使用 C++ 和 Qt。特别是如果您使用 Qt Creator 或 Qt Designer 进行 UI 布局。

如果您需要或真的只想使用 Java(或 JVM 语言),我会使用 Qt Jambi。无论哪种方式,Qt 都是(恕我直言)一个非常优越的平台,无论使用什么语言。如果您之前没有做过任何 Swing 或 SWT 开发,我会给您大约两个小时的时间,然后您才会想吃子弹。

【讨论】:

【参考方案12】:

为了解决问题 2,Java 在处理浮点数方面可能会有些麻烦,但从 1.5 和 1.6 版本开始,它变得更好了。如果您确实选择了 Java 路径,请确保为您提供可用的最新版本。

本文对所涉及的问题进行了很好的解释:http://www.ibm.com/developerworks/java/library/j-math2.html。

【讨论】:

【参考方案13】:

正如其他一些人指出的那样,webapp 可能工作正常。我认为 RubyOnRails 非常高效,您可以在两个平台上的 JRuby 或任何本机 Ruby 上运行它。您必须考虑安全性,但这应该不是什么大问题。

如果您不懂 Java,也可以查看 Mono。您可以使用它创建 WindowsForms 应用程序并在 Mac 和 Windows 上运行,或者如果您走网络路线并在 Mono 上使用 ASP.NET。我仍然认为 RubyOnRails 会给你比 ASP.NET 更短的开发时间,但它是一种选择。

【讨论】:

以上是关于使用 Java 是开发基于 GUI 的会计应用程序的适当语言/平台吗?的主要内容,如果未能解决你的问题,请参考以下文章

开发者眼中最好的 22 款 GUI 测试工具

Java基于GUI的网络通信程序设计

Java学习笔记8.2.1 JDBC实战 - 基于JDBC的GUI用户登录

Java学习笔记8.2.1 JDBC实战 - 基于JDBC的GUI用户登录

Java使用IntelliJ IDEA创建一个基于Swing的GUI图形化程序,打包发布为jar

为啥oracle ebs中发票要创建会计科目