问候,
我想在其中编写一个带有GUI的小型跨平台实用程序。我应该坚持哪种语言/ GUI库?有可能吗?
这将是一个小程序,所以我不想让人们下载JVM或.NET Framework。是否有可能在本地开发它?
更新1。
“本机”我的意思是最终结果将是没有中间层的本机代码,如Java虚拟机或.NET公共语言运行时
更新2。
优选免费解决方案;)
答案 0 :(得分:15)
如果您了解C或C ++,我能想到的第一个跨平台GUI框架是:
如果您了解Pascal,可以尝试freepascal + Lazarus。但我从未使用它。
答案 1 :(得分:6)
问题是:如果您不想拥有GUI,但又不想让用户下载永久的API,框架或虚拟机来运行它,无论是TCL / TK,Java还是QT等那么你很快就迷路了。
原因是:您必须重建所有(GUI)功能,这些API,框架和虚拟机为您提供独立于平台的功能。这需要做很多工作......
另一方面:Java虚拟机几乎可以从头开始安装在任何操作系统上,为什么不试一试呢?
答案 2 :(得分:5)
您想本地开发跨平台程序吗?呃......我认为这不会起作用,主要是因为这句话是一个悖论。如果你编写本机代码,它本质上只会在你编程的平台上运行。 ;-)这就是框架的全部内容。
所以你应该做的是使用一个非常纤薄的框架,如果你的程序太小了。 itmatt对Qt的看法是可能的。
答案 3 :(得分:4)
的wxWindows?哦,它现在被称为WxWidgets:http://www.wxwidgets.org/
答案 4 :(得分:4)
wxWidgets绑定了各种语言 - 例如python,如果你的应用程序足够小的话。
答案 5 :(得分:4)
拉撒路很棒。 Linux上的GTK2,Windows上的win32 / 64,euh上的WINCE,Wince。它甚至在Mac上使用Carbon(在COCOA上工作)。也很容易卖给你的老板(代码是Delphi兼容的)
答案 6 :(得分:3)
Python如何使用Qt或Wx然后使用PythonToExe制作'可分发'
我们必须考虑开发,以确保不使用本机功能(即注册表等)。文本文件中的换行符也会有不同的转义字符,因此需要处理
答案 7 :(得分:3)
当你说跨平台时,你有什么操作系统?
正如Epaga正确指出的那样,原生和跨平台是相互排斥的。您可以编写在多个平台上本机运行的多个版本,也可以使用某些跨平台框架。
对于跨平台框架方法,总是需要额外的安装。例如,许多人建议使用Python及其框架之一。这将需要指示人们首先安装python - 可能还有框架 -
如果您的目标是Windows和OS X(如果需要支持该操作系统,我们准备尝试使用Linux的alpha版本代码),我强烈建议您查看使用Adobe AIR进行交叉操作平台GUI应用程序。
答案 8 :(得分:3)
我同意Georgi,Java是要走的路。通过一些工作,您可以使您的桌面应用程序也可以作为Java小程序工作(这样用户根本不需要主动下载任何内容)。请参阅http://www.geogebra.org,作为跨平台Java应用程序平稳运行的应用程序示例,并且具有到Web小程序的简单端口。
使用Java的另外两个好处是:
一个缺点:
答案 9 :(得分:3)
试试RealBasic。类似Visual Basic的语法,目标是Win32,OS X和Linux。我不知道有关目标Linux的任何细节,但对于我在Win32和OS X之间进行的任何跨平台开发,它都是一个梦想。
编辑:生成本机可执行文件。费用很低--100美元。
答案 10 :(得分:2)
你看过Qt吗?
答案 11 :(得分:2)
闪光?它几乎无处不在。
答案 12 :(得分:1)
如果它“HAS”是桌面使用Qt。现在没什么比这更好的了。
然而,我个人放弃了桌面,我所做的任何基于UI的项目通常都是基于浏览器/服务器的。您可以轻松编写一个侦听某个端口的小型自定义服务器,以便程序可以在本地运行,而无需用户安装Apache或访问网络。我有一个用于此目的的小型Lua,Python和C ++框架(想要为V8后端添加Javascript:)
答案 13 :(得分:1)
如果您要查看Qt和WxWidgets,请不要忘记查看GTK+!
答案 14 :(得分:1)
我同意David Wees和Georgi,
Java是卓越的跨平台。你真的写了一次,到处跑。无需为每个目标操作系统或位数编译代码,也不用担心链接任何内容等等。
正如您所指出的那样,唯一的问题是必须安装JRE,但即使对于新手最终用户也是如此(这是在安装程序中单击“下一步>”的问题)。
使用Java Web Start部署变得更加容易:用户只需单击网页上的启动按钮并运行应用程序(如果根据JNLP描述符中指定的内容安装了正确的JVM),或者用户被重定向到Java下载页面(如果找不到合适的JVM)。