Mac OSX和windows上的跨平台软件应该使用哪种语言/框架



我正在尝试编写一个在windows和Mac OS X上运行的软件。这个软件与Dropbox的客户端非常相似。以下是特征:

  1. UI并不复杂。大多数用户操作是配置和监视软件的状态
  2. 需要与系统对话以检索系统的性能,例如CPU的利用率、网络带宽利用率等
  3. 使用尽可能少的系统资源(CPU、内存、IO)

所以我的问题是我应该使用哪种语言、框架。语言/框架应:1.核心代码在代码级别上应该可以在windows和Mac OSX上重用。代码级别意味着代码可以在跨平台上运行,但我不介意在每个操作系统平台上重新编译代码

  1. 核心代码层可以很容易地与操作系统特定的代码集成,例如Mac操作系统的cocoa objective-c代码或windows的c++代码。原因是我想用操作系统特定的语言编写两个不同的UI视图层
  2. 如果代码可以编译为本机指令,而不是像Java那样的解释性指令,那就更好了。这是性能考虑
  3. 同样,尽可能快,尽可能小
  4. 我更喜欢LISP家族,但不是必须的

我认为没有简单且"正确的方式"的解决方案。

我认为使用C++/C:是很好的

- you will have to use OS-specific API and code to 'talk to system'
- you would use QT, but you want to use 'as less as possible resources' - this is not about QT

这似乎不是一个大项目。所以,我认为更好的方法是使用C++甚至纯C(如果你擅长其中一种)来开发它。

您可以在单独的函数/类中编写特定于操作系统的代码。然后编写通用类/函数以进行抽象。

您可以使用#define和#ifdef使其跨平台(当然,您必须为每个平台重新编译它)。

如果你需要为MacOS&赢

更新

在LISP上。首先,它需要一个LISP机器。即使你要把它编译成EXE文件,它也不会像你想要的那样"使用尽可能少的系统资源"。

如果它类似于Dropbox客户端,那么它应该作为服务/守护进程运行——我认为使用LISP执行这样的任务不是一个好选择。

如果你想要小型和交叉编译,那么C/C++是你最好的朋友,因为很少有其他语言能如此高效和快速。对于一个简单的UI,你可以使用C++/Tk,我认为Tk有一些特定于平台的项目,比如Tk Cocoa等。

但是,如果您想编写跨平台的语言(即,编写一次并在任何地方运行),请寻找基于Java虚拟机的语言。请注意,JVM一旦启动并运行,就会快速高效。

JVM有几种类似Lisp的语言,包括JScheme和Clojure。

最新更新