如何编写跨平台程序?
你好,
我想编写一个带有GUI的跨平台实用程序。我应该坚持使用哪种语言/ GUI库?有可能吗?
这将是一个小程序,所以我不想让人们下载JVM或者.NET Framework。是否可以在本地进行开发?
更新1.
"本机"是指最终结果将是没有中间层(例如Java虚拟机或者.NET公共语言运行时)的本机代码。
更新2.
一个免费的解决方案是可取的;)
解决方案
我们想本地开发跨平台程序吗?呃...我认为这行不通,主要是因为该短语是一个悖论。如果我们编写本机代码,那么就其本质而言,它将仅在为其编程的平台上运行。 ;-)这就是框架的全部内容。
因此,如果程序太小,则应该使用非常苗条的框架。 itsmatt的Qt想法是有可能的。
你看过Qt了吗?
使用Qt或者Wx然后使用PythonToExe进行"可分发"的Python怎么样
必须考虑开发,以确保不使用任何本机功能(即注册表等)。此外,文本文件中的换行符等将具有不同的转义符,因此需要进行处理
如果我们知道C或者C ++,我可以想到的第一个跨平台GUI框架是:
- QT(C ++,专有,但具有LGPL许可免费)
- wxWidgets(C ++,最完整,最稳定,但也很庞大)
- FLTK(C ++)
- FOX(C ++)
- IUP(C,比上面的更简单,更干净)
如果我们知道Pascal,可以尝试freepascal + Lazarus。不过,我从未使用过它。
WxWindows?哦,现在叫WxWidgets:http://www.wxwidgets.org/
如果应用足够小,则wxWidgets可以绑定到各种语言python,例如。
问题是:如果我们不想拥有GUI,但又不想让用户下载永久性的API,框架或者虚拟机来运行它,例如TCL / TK,Java或者QT等,那么我们就可以了。很快就迷路了。
原因是:我们将必须重建API,框架和虚拟机提供的所有(GUI)功能,使其与平台无关。这是很多工作要做...。
另一方面:Java虚拟机几乎是从头安装在任何操作系统上的,为什么不试一试呢?
如果将其" HAS"设为桌面,请使用Qt。现在没有什么比这更胜一筹了。
但是我个人放弃了桌面,而我做的任何基于UI的项目通常都是基于Browser / Server的。我们可以轻松地编写一个侦听某个端口的小型自定义服务器,以便该程序可以在本地运行,而无需用户安装Apache或者访问网络。我有一个用于此目的的小型Lua,Python和C ++框架(想为V8的后端添加Javascript :)
说跨平台时,我们要牢记哪个操作系统?
正如Epaga正确指出的那样,本机和跨平台是互斥的。我们可以编写在多个平台上本机运行的多个版本,或者需要使用一些跨平台框架。
在跨平台框架方法的情况下,总是需要额外的安装。例如,此处许多建议使用Python及其框架之一。这将需要指导人们先安装python,然后可能还要先安装框架。
如果我们针对Windows和OS X(如果需要支持该操作系统,并且准备尝试Linux的Alpha版本代码),则强烈建议我们看看将Adobe AIR用于跨平台GUI应用程序。
如果我们要查看Qt和WxWidgets,请别忘了也查看GTK +!
闪光?它几乎安装在所有地方。
我同意Georgi的话,Java是必经之路。只需做一些工作,我们就可以使桌面应用程序也像Java applet一样工作(这样,用户根本不需要主动下载任何内容)。请参阅http://www.geogebra.org作为该应用程序的示例,该应用程序可以作为跨平台Java应用程序平稳运行,并且具有一个简单的Web小程序端口。
使用Java的其他两个优点是:
- 他们具有用于构建UI的大量库,包括UI组件构建器。
- Java运行时框架通常会为用户自动更新。
缺点之一:
- 最终用户计算机上安装的Java版本可能与应用程序不完全兼容,需要我们以最低的分母进行编码。
尝试使用RealBasic。类似于Visual Basic的语法,针对Win32,OS X和Linux。我不知道有关定位Linux的任何细节,但是对于在Win32和OS X之间进行的任何跨平台开发,这都是一个梦想。
http://www.realbasic.com
编辑:生成本机可执行文件。有一个小的费用$ 100。
拉撒路很棒。 Linux上的GTK2,Windows上的win32 / 64,euh上的WINCE,Wince。它甚至在Mac上使用Carbon(在COCOA上运行)。也很容易卖给老板(代码与Delphi兼容)