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

时间:2010-02-05 18:17:31

标签: java c++ user-interface qt cross-platform

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

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

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

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

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

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

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

13 个答案:

答案 0 :(得分:10)

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

Java可以完全按照您的意愿行事。经过多年的改造,GUI工具包非常先进。您还可以使用许多工具,框架和扩展来使GUI看起来非常先进。

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

跨平台支持将为您提供很多帮助。唯一的大问题是在机器上为文件提供Java运行时。有办法解决这个问题(最好的是安装人员把它放在那里)。

答案 1 :(得分:7)

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

首先,我对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的stackoverflow问题。值得一读。

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

答案 2 :(得分:5)

  1. 我不熟悉Netbeans,但我已经完成了几个具有数据库访问权限的Java应用程序。即使我使用gvim而不是IDE,我也觉得很容易。
  2. 你在谈论什么“大十进制”问题?所有计算机语言都存在二进制和十进制之间映射的问题,但如果你知道你正在做什么,你可以处理它,无论语言如何。见鬼,我在FORTRAN-H做了工程应用。
  3. 除了你更了解C ++之外,没有理由不使用Java。它很符合您的要求。
  4. 写一些东西以便最终可以移植到网络上更多的是确保你使用模型 - 视图 - 控制器模式,并记住你的视图可能最终会变成完全不同的东西。这是一种设计理念,而不是语言要求。

答案 3 :(得分:2)

  1. 我会避免使用标题中包含bean的任何内容,但java可以很好地处理数据库和GUI。
  2. 我不确定你的意思,但你可能想自己上钱。几乎不需要做很多工作,然后它会完全按你喜欢的方式进行。
  3. 在Java中实际工作比C ++更有可能但是如果你有一个非常复杂的GUI,Java GUI的东西比大多数C ++应用程序更容易使用,但对其他东西来说更难。
  4. 不是。

答案 4 :(得分:2)

没有并发?它只在本地数据库上?我发现这令人惊讶地限制了一个新的软件项目。我很惊讶你没有考虑使用web服务后端的AJAX浏览器GUI。

编辑:速度不是问题,你认为你可能需要将它移植到网络上?从网络上开始,给自己留下很多麻烦。

答案 5 :(得分:2)

我建议使用Groovy而不是Java。这是Java ++,几乎Java中的所有东西都在Groovy中,但Groovy提供了许多好处。 Groovy语言提供了许多辅助方法。默认情况下数学是否正确(没有双重数学问题)。

就网络与桌面而言,您可以使用Grails进行网络访问,使用Griffon进行桌面访问。再一次,基于Groovy。

对于IDE,如果你选择Groovy,那么IntelliJ(虽然做网络,价格昂贵)或SpringSource Tool Suite,它是Eclipse的衍生产品。基本上Eclipse带有许多插件,包括Groovy。

答案 6 :(得分:2)

我正在使用NetBeans在Java中开发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美分。

答案 7 :(得分:1)

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

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

答案 8 :(得分:1)

这可能对你很感兴趣

Ajaxswing

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

答案 9 :(得分:1)

好吧,如果你对C ++有所了解,那么这就是使用C ++的首要原因。 QT是一个非常好的工具包,你会比使用Java更有效率(因为你熟悉C ++)。此外,由于这种体验,您制作更好的应用程序的可能性更大。

所以,除非你非常渴望获得Java的经验(现在这并不像以前那么大),坚持使用C ++ / QT并建立一些跨平台技能。

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

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

为了解决问题2,Java在使用浮点数时可能会有点痛苦,但是从版本1.5和1.6开始,它已经变得更好了。如果您沿着Java路径前进,请确保使用最新版本。

本文详细解释了所涉及的问题:http://www.ibm.com/developerworks/java/library/j-math2.html

答案 12 :(得分:0)

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

如果您不了解Java,也可以查看Mono。您可以使用它创建WindowsForms应用程序并在Mac和Windows上运行,或者如果您使用Web路由并在Mono上使用ASP.NET。我仍然认为RubyOnRails将比ASP.NET提供更短的开发时间,但它是一个选项。