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

时间:2012-10-12 06:20:36

标签: cross-platform

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

  1. 用户界面并不复杂。大多数用户操作是配置和监视软件的状态
  2. 需要与系统通信以检索系统的性能,例如CPU的利用率,网络带宽利用率等。
  3. 尽可能少地使用系统资源(CPU,内存,IO)
  4. 所以我的问题是我应该使用哪种语言,框架。语言/框架应该:   1.核心代码应该可以在代码级别的Windows和Mac OSX上重用。代码级意味着代码可以在跨平台上运行,但我不介意在每个OS平台上重新编译代码

    1. 核心代码层可以非常容易地与OS特定代码集成,例如Mac OS的cocoa objective-c代码或windows的C ++代码。原因是我想用OS特定语言编写两个不同的UI视图层。
    2. 如果代码可以编译为本机指令而不是Java之类的解释性指令,那将会更好。这是性能考虑。
    3. 再次,尽可能快,尽可能小。
    4. 我更喜欢LISP家庭,但没有必要。

2 个答案:

答案 0 :(得分:0)

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

我认为使用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开发它(如果你对其中一个很好)。

您可以在单独的函数/类中编写OS特定代码。然后编写泛型类/函数来进行抽象。

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

我认为这是唯一的方法,如果您需要为MacOS创建跨平台和非常小的应用程序。取胜。

<强>已更新

关于LISP。首先,它需要一台LISP机器。即使您将Windows编译为EXE文件,它也不会“尽可能少地使用系统资源”。

如果它与Dropbox客户端类似,它应该作为服务/守护进程运行 - 我认为使用LISP进行此类任务不是一个好的选择。

答案 1 :(得分:0)

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

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

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