您将使用什么语言/平台来共享软件/免费软件桌面应用程序?

时间:2009-04-16 19:28:03

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

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

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

以下是基于我的研究的选项:

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

那么如果你在我的情况下你会用什么?提前感谢任何建议。

11 个答案:

答案 0 :(得分:4)

如果你想在开发这个应用程序时学习一些新技能,那么C#/ WPF和C#3.0中的LINQ非常棒,如果你没有用Java编写它。

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

答案 1 :(得分:4)

我实际上是一个很大的C#粉丝,但是既然你说跨平台会是一个巨大的奖励,我认为Qt实际上可能会更好。 C#可以通过Mono跨平台,但在这方面Qt我的结果更好。他们在QtAssistant中也有很好的文档可以帮助你入门。

答案 2 :(得分:3)

如果您的生产力是一个大问题,请考虑使用PyQt + Python。相信我,当我说Qt的学习曲线是值得的,并不像最初看起来那么难。

如果您更喜欢使用,那么Sqlite支持在Qt的Python标准库和QSql模块中。

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

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

答案 3 :(得分:3)

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

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

使用Delphi,您将生成本地的exes,自包含。此外,数据库连接非常好。

你永远不会因缺乏控制或3D派对工具而失望,很多源代码和免费/商业工具集。

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

所以,如果你真的为你的客户提供no-hasle应用程序,并且客户不像开发人员那样面向技术,那么可能会因为4个.NET运行时中的哪一个安装,需要最少的支持,轻松下载而感到困惑,click-click-install-go,像Skype一样工作的应用程序,TopStyle(用Delphi制作)和others,然后Delphi / C ++是你唯一的选择。认真。唯一的选择。


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

答案 4 :(得分:3)

在大多数情况下,只要项目范围相当小,并且计算需求适中,我倾向于使用TCL/Tk。我还没有学过一个gui api,其中我比tk更有效率(不是说没有一个,只是我尝试了几个并且发现它们更慢)。尽管有许多附加组件可以提供很多帮助,但TCL并不是最精彩的编程语言,特别是[ incr tcl ]和{{3} }。

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

答案 5 :(得分:2)

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

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

答案 6 :(得分:1)

如果您希望重复使用MFC应用中的某些非UI代码,请考虑使用QT。否则选择你想学的东西。

答案 7 :(得分:1)

而不是C#/ WPF,你可以给Silverlight看一看。你的应用程序似乎很简单,启动和运行不会花费太多。与在会议上展示的演示类似。

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

您可以使用Moonlight定位Windows / Mac用户以及可能的Linux。但是我在过去的8年里没有看过Linux,所以我真的不能说太多。

答案 8 :(得分:1)

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

答案 9 :(得分:0)

我提出了几个月后几乎完全相同的情况(使用SQLite数据库升级应用程序)的C ++ / wxWidgets(但你可以做Qt)路由。 wxWidgets相当容易接受,拥有我需要的一切,并且比MFC更容易。最好的部分是我在CodeProject上为SQLite找到了一个很好的C ++包装器(例如,CPPSQLite),并且很快就完成了运行...该项目在wxWidgetss上卖给我,万一你不能告诉。

答案 10 :(得分:0)

我实际上会仔细观察像adobe air这样的东西。它是跨平台的,可以是基于html / javascript的,所以除了可能是一个或两个javascript库之外,你很可能没有太多需要学习的东西。它能够与本地数据存储区或通过interweb与Web服务或RESTFUL服务进行通信。 aptana开发是免费的。查看其中的一些内容:

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