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