【问题标题】:What language / platform would you use for a shareware / freeware desktop application?您会为共享软件/免费软件桌面应用程序使用什么语言/平台?
【发布时间】:2010-10-19 22:50:17
【问题描述】:

我有一个 DVD 编目应用程序,它是几年前用 MFC 编写的。记录保存在 sqlite 数据库中,所以基本上它是一个 CRUD 应用程序。在 UI 方面,它在左侧有一个树视图,在右上方有一个列表视图(网格),在右下方有一个 HTML 视图(嵌入式 IE)。没什么特别的。

我想用更多功能更新应用程序,但过去几年我一直在使用 Java EE,我意识到使用 MFC 根本没有效率。所以我在想也许我应该用别的东西来提高我的工作效率。跨平台将是一个很大的好处,但不是绝对必需的。

以下是根据我的研究得出的选项:

  • Java / Swing:我可以利用我的Java知识;优秀的第三方库(例如用于 IoC 的 Spring 和用于 ORM 的 Hibernate);跨平台。缺点是,用户需要 JRE; Swing 似乎处于“维护”模式,并没有得到 Sun 的太多关注。
  • C++ / Qt:本机应用程序; 跨平台。但我是 Qt 的新手,所以 我得先学。
  • C#/WPF:WPF 似乎是未来 Windows GUI 开发和我 一些 WPF 示例应用程序给我们留下了深刻的印象。一世 有一些 C# 经验,但我 需要学习WPF。缺点是,Windows 只要;需要 .NET 3.5 运行时。

如果你是我的情况,你会用什么?提前感谢您的任何建议。

【问题讨论】:

    标签: java c++ wpf qt desktop-application


    【解决方案1】:

    如果您想在开发此应用程序时学习一些新技能,那么 C#/WPF 和 C# 3.0 中的 LINQ 如果您在 Java 中没有它,那真的很棒。

    如果您只是想加快速度,那么您已经回答了自己的问题,Java / Swing。这是你擅长的。

    【讨论】:

      【解决方案2】:

      我实际上是 C# 的忠实粉丝,但既然你说跨平台将是一个巨大的好处,我认为 Qt 实际上可能会更好。 C# 可以通过 Mono 跨平台,但在这方面我使用Qt 获得了更好的结果。他们还在 QtAssistant 中提供了非常好的文档来帮助您入门。

      【讨论】:

        【解决方案3】:

        如果您的生产力是一个大问题,也可以考虑使用 PyQt + Python。当我说 Qt 的学习曲线非常值得时相信我,而且并不像一开始看起来那么难。

        Python 标准库和 Qt 中的 QSql 模块都支持 SQLite,如果您更喜欢使用的话。

        PyQt + Python 也是一个跨平台选项,因为 Python 可用于许多平台,并且 Qt 的跨平台开始。

        您提到您在应用程序中使用的控件在 Qt 中都可用。

        【讨论】:

          【解决方案4】:

          除了原始 C++ 之外,唯一的其他工具是 Delphi。期间。

          使用其他工具,您将在部署中遇到问题。

          使用 Delphi,您将生成独立的本地 exe。此外,数据库连接性很好。

          您永远不会因缺少控件或 3d 派对工具而感到失望,其中很多是源代码和免费/商业工具集。

          而且编译时间是这个星系中最快的;)

          因此,如果您认真为您的客户提供无障碍应用程序,并且客户不像开发人员那样以技术为导向,那么可能会感到困惑,因为安装了 4 个 .NET 运行时中的哪一个,需要最少的支持,易于下载, click-click-install-go, 像 Skype, TopStyle (用 Delphi 制作) 和 others 等即时工作的应用程序, 那么 Delphi/C++ 是你唯一的选择。严重地。唯一的选项。


          如果你想要一个跨平台的解决方案,如果你的 GUI 是极简主义的,那么 FreePascal/Lazarus 可以工作。

          【讨论】:

            【解决方案5】:

            在大多数情况下,只要项目范围相当小,计算需求适中,我倾向于使用TCL/Tk。我还没有学习到比 tk 更有效率的 gui api(并不是说没有,只是我尝试了几个,发现它们更慢)。可以肯定的是,TCL 并不是最出色的编程语言,尽管有许多插件可以提供很大帮助,特别是 [incr tcl]tcllib

            我之所以选择这个而不是其他系统,例如,我更喜欢用 python 编码,是因为使用 tcl/tk 进行部署几乎是无与伦比的。使用Starkit,您最终会得到一个无需安装程序且可轻松移植的单文件双击应用程序。

            【讨论】:

            • 我同意,尽管我们可能不同意“相当小”的定义。我认为如果设计得当,Tcl 可以很好地扩展到数万或数十万行代码。并不是说你需要那么多。我目前在我的 U 盘上完成了 90% 的 CRUD 应用程序,现在只有 2000 行代码。
            【解决方案6】:

            如果您真的想要一个类平台类型的应用程序,我会将其转换为 Web 应用程序并托管它。这样,如果一个用户上传 dvd 信息或 dvd 封面图片,另一个用户可以利用已经输入系统的信息。

            如果您要为桌面开发,请尝试通过使用 OS UI 工具,让它感觉像是为该平台制作的应用程序。对于 Windows,请选择您的第三个选项 C# /WPF。

            【讨论】:

            • 您无需成为网络应用程序即可上网。 WebStart 管理得很好。如果您需要任何 Windows 集成(或与非 Windows 桌面集成),那么我相信您可以找到合适的特定于平台的 Java 库。
            【解决方案7】:

            如果您想重用 MFC 应用程序中的一些非 UI 代码,请考虑使用 QT。否则,请选择您喜欢学习的任何内容。

            【讨论】:

              【解决方案8】:

              您可以看看 Silverlight,而不是 C#/WPF。您的应用程序看起来很简单,启动和运行不需要太多时间。类似于在会议上展示的演示。

              一旦您掌握了基础知识,就可以很容易地添加一些很酷的功能,例如动画、电影剪辑、专辑封面、类似界面的封面流等。

              您将能够使用 Moonlight 面向 Windows/Mac 用户和可能的 Linux 用户。但是我在过去的 8 年里没有研究过 Linux,所以我真的不能说太多。

              【讨论】:

                【解决方案9】:

                使用 Eclipse RCP,您可以获得 Java、跨平台开发(参见 Delta Pack)、本机外观(通过 SWT)和用于桌面开发的出色框架集合(声明式 UI、插件管理等)。你一定要试一试。

                【讨论】:

                  【解决方案10】:

                  几个月前,当遇到几乎完全相同的场景(使用 SQLite 数据库升级应用程序)时,我选择了 C++/wxWidgets(但你可以使用 Qt)路线。 wxWidgets 相当容易上手,拥有我需要的一切,而且比 MFC 容易得多。最好的部分是我在 CodeProject 上为 SQLite 找到了一个很好的 C++ 包装器(例如,CPPSQLite),并且很快就让整个事情运行起来了……这个项目在 wxWidgetss 上卖给了我,以防你不知道。

                  【讨论】:

                    【解决方案11】:

                    实际上,我会非常仔细地观察 adobe air 之类的东西。它是跨平台的,并且可以基于 html/javascript,所以除了一两个 javascript 库之外,您可能没有太多要学习的东西。它能够与本地数据存储或通过互联网与 Web 服务或 RESTFUL 服务进行通信。 aptana 可以免费开发。看看里面写的一些东西:

                    http://www.adobe.com/products/air/showcase/

                    【讨论】:

                      猜你喜欢
                      • 2010-09-06
                      • 2010-10-13
                      • 2010-11-03
                      • 2010-11-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-06-20
                      • 1970-01-01
                      • 2018-09-10
                      相关资源
                      最近更新 更多