我知道这部分是主观的,但希望有足够的细节,我可以得到一个好的答案。
我希望开发针对特定细分市场的会计应用程序(想想Quickbooks,但经过调整)。大多数应用程序都是可编辑的表格,这些表格与数据库数据以及一些基本的报告和图形功能相关联。
它必须是跨平台的(OS X和Windows)。
它将与本地数据库连接。 (SQLite或Derby或其他)
速度不是一个“巨大”的问题。它需要具有合理的响应性(与C / C ++相比,我不熟悉Java速度)。
我把它缩小到C ++与QT和Java之间。我只知道很少量的Java,但是经常使用C ++。但是,到目前为止,Java似乎是最好的整体解决方案,书籍/文档的数量是巨大的,这是一个加号。
答案 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)
答案 3 :(得分:2)
答案 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)
答案 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提供更短的开发时间,但它是一个选项。