跨平台GUI开发最佳技术选用是什么?

3

我想开始一个新的(开源)项目,希望它可以跨平台运行在Windows和Mac OS X上(Linux也不错!)

我愿意为每个平台分别开发前端,但是核心逻辑应该是共享的。

我需要以下内容:

  • 最好是本地GUI小部件集
  • FTP连接(平台无关封装器)
  • TreeListView(同样最好是平台无关封装器)

我已经研究了很长时间,发现以下解决方案非常有吸引力:

  • Mono,在Windows上使用WinForms,在OS X上使用MonoMac
  • Lazarus(FreePascal)与LCL

Mono优点:

  • 使用C#,非常好用的语言
  • 有适用于OS X和Windows的小部件集

Mono缺点:

  • Mono Framework是我的应用程序的依赖项

Lazarus with FPC优点:

  • Pascal也是一种很好的语言,我知道如何使用Indy控件进行FTP操作。
  • 有VirtualTreeview,这是我见过的最好的树形列表视图控件!
  • 可以进行交叉编译
  • 也有适用于Windows和OS X的小部件集
  • 没有框架依赖!

Lazarus with FPC缺点:

  • 支持似乎正在减弱,但也许只是我这样认为。
  • VirtualTreeview似乎只有Windows版本。
  • 可执行文件可能会变得很大,但可以解决。

我还研究了Delphi XE2与FireMonkey,但它不使用本地控件,而且由于抗锯齿效果,看起来不太本地化。 :(

现在,我最大的担心是找不到一个在Windows和OS X上都可以工作的TreeListView!我真的需要一个带有列的树形视图。

技术应该具有跨平台的TreeListView,能够正常工作并得到支持。

感谢您的时间!


不,从网页浏览器连接到Web服务器,让网页浏览器执行FTP到FTP服务器并将结果传递给客户端。如果可以的话,结果可以被缓存以供其他客户端使用。 - Emond
@Erno 这不是有点hackish吗?而且为什么要这样做,既然Lazarus和Mono(大概)都有FTP客户端组件? - Jeff
@Erno 是的,我会为每个平台构建一个客户端,但我需要为每个平台都有一个TreeListView。而使用Web浏览器进行FTP连接...嗯,肯定有更好的选择。 - Jeff
我投票关闭了这个问题,因为不知道完整的情况无法回答。 - Emond
我决定选择Mono,因为我发现Cocoa的NSOutlineView具有我需要的功能,并且我可以在.NET中开发Windows应用程序,在Mono中开发Mac应用程序。Lazarus是否使用像NSOutlineView这样的Cocoa控件? - Jeff
显示剩余8条评论
2个回答

1

我强烈建议不要使用Pascal语言。
它是一门逐渐消亡的语言,而且随着时间的推移,支持也会减少。
使用更现代化的语言,你得到答案的机会会更大。

.NET/Mono是一个不错的选择。
.NET在WPF中有TreeView,但在Mono中没有实现,据我所知,它永远也不会实现。

另一个我建议你考虑的选项是Java(或者更好的选择是其他基于JVM的语言,比如Scala)。
它非常跨平台(可能是最跨平台的语言),支持很好,语言仍在发展(虽然曾经停滞了几年),语法和代码风格与C#非常相似(不包括对LINQ等的支持),这使得从一种语言转换到另一种语言非常简单。
JVM是先决条件,但这并不是真正的问题,因为它已经安装在大多数计算机上。


我曾考虑过Java,但据我所知,它正在被C#逐渐取代。我的老师告诉我,你只能找到Java=>C#的书籍,而不是反过来的。 - Jeff
我刚刚研究了一下使用SWT的Java,它看起来非常不错。然而,部署jar文件...难道不能部署.exe、.app和.elf文件吗? - Jeff
我自己不是Java程序员(虽然我在大学学过Java,但我是C#程序员),所以无法精确回答你的问题,但不,Java不会被C#取代。Java是一门活跃且不断发展的语言,尽管C#正在赢得市场份额。 - Svarog
1
至于.exe的问题:这里有一篇好文章: http://www.excelsior-usa.com/articles/java-to-exe.html 它相当长,但如果这对你来说是个严重的问题,那么值得你花时间去看。主要看一下“预编译器”部分。 - Svarog
谢谢!如果这里没有其他的选择,我会将您的答案标记为正确的。 :) - Jeff

0

多年前,我使用Qt和wxWindows/wxWidgets为Windows和各种*NIX变体提供单一代码库的UI。

坦白地说,我已经多年没有使用它们了,也不知道它们对Mac OS X的支持情况如何,但如果你愿意使用C++(它们都是C++库),它们可能值得一看。


抱歉,我不是C++的粉丝。 - Jeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接