让Cocoa应用程序在Windows上运行有多难?

时间:2009-04-26 14:26:33

标签: windows cocoa macos

wikipedia article on Cocoa中说:

  

还有Cocoa框架主要部分的开源实现,允许跨平台(包括Microsoft Windows)Cocoa应用程序开发,例如GNUstepCappuccinoCocotron

然而,当我查看Mac应用程序Tweetie是否可用于Windows时,开发人员有ruled it out

  

Windows没有Cocoa,Tweetie的编程环境,因此,它看起来很可能。

我想得到一个答案,指出Tweetie开发人员(以及作为其他可可开发人员的资源)会告诉他们:

  • 哪种实现最适合在Windows上运行cocoa应用程序?
  • 在Windows下运行应用程序可能需要多少工作?
  • 维护Mac和Windows的通用代码库有多容易/多难?
  • (我错过了任何其他考虑因素?)

当然,如果这项工作太多,我也会在建议之前知道这一点,并且可能会让其他人无法进行无用的搜索。

3 个答案:

答案 0 :(得分:12)

不要忘记:

  1. “Cocoa框架的主要部分”与“整个Cocoa框架”不同。 Tweetie可能正在使用缺少的东西。
  2. Tweetie可能(很可能是)使用来自非Cocoa框架的API,例如Core Foundation,Core Services,Core Graphics和Core Animation。单独一个Cocoa框架的端口将不包含任何这些API,甚至更完整的Mac-API仿真框架也不会包含所有这些API。
  3. 这些框架永远追逐Apple。即使它们赶上了,它们也将在下一个Mac OS X版本中再次落后。 Mac开发人员在等待用户升级到这些新版本时,已经推迟在新Mac OS X版本中使用新API;现在你要求atebits 等待其他框架开发人员再次赶上Apple。
  4. 现有API的任何第二个实现都会有第一个实现没有的错误,反之亦然。这些差异将导致开发和支持问题。
  5. 您要求atebits将第三个平台添加到已存在于两个平台上的应用程序中。支持一个平台需要做很多工作。支持两个平台是一项很多工作。支持三个?现在你进入大公司领域。
  6. 所以,即使使用类似Cocoa的框架,答案仍然是:Hard。

答案 1 :(得分:4)

在GNUstep,Cappuccino和Cocotron中,Cocotron只是将Mac应用程序移植到Windows的可能选择。 Cappuccino用于web,GNUstep只运行在cygwin或mingw之上,这意味着GUI看起来不像本机windows应用程序。

理论上可以使用Cocotron构建cocoa windows应用程序。然而,现实情况是它仍然非常难以使用,并且它在Cocoa API中仍然非常有限。

因此,有两种可能的解决方案:

  • 尽量删除原始代码库中Cocotron不支持的代码并进行交叉编译。保持共同的代码库将是痛苦的。
  • 根本没有开始新的GUI,没有通用的代码库。这里有两个选择
    • 使用交叉应用程序框架(如Qt或Java)启动跨平台项目。
    • 启动仅限Windows的项目。这里有很多选择,.Net WinForm应用程序,MFC等。

答案 2 :(得分:1)

Windows compilers for Objective-C(用于编写可可应用程序的编程语言)。但是,Cocoa包含用于呈现GUI的框架。这些可视化框架特定于Mac OS X,因为它们仅使用OS X窗口和其他控件。所以有人需要在Cocoa中重新实现控件以使用Windows控件。

另外,我相当肯定Tweetie只使用Mac OS X这样的技术,比如Core Animation。这在Windows上不存在,因此应用程序中存在的漂亮动画效果必须以完全不同的方式实现。