【问题标题】:How can I build an application like Thunderbird? Which language should I select? [closed]如何构建像 Thunderbird 这样的应用程序?我应该选择哪种语言? [关闭]
【发布时间】:2010-02-13 17:30:58
【问题描述】:

我不想构建 Thunderbird 功能。我只是想构建一个具有插件功能,跨平台,易于安装的项目。是否有任何文档指出 Firefox 或 Thunderbird 的开发?

我知道 Thunderbird 是用 C++ 构建的,那么我怎样才能获得这些图形和所有其他功能。

请帮帮我。

【问题讨论】:

  • 如果您不想让观点产生偏见,则不应将其标记为 C++。此外,如果你不得不问,你可能还有很长的路要走可以
  • @Clifford 不一定。我非常有信心我可以做到以上几点,但我仍然会在这里询问,只是为了了解我没有的技术/经验。集体智慧等
  • @Ninefingers - 你是想说你可以自己编写 Firefox 或 Thunderbird 吗?
  • @Manual 哈哈好吧,我想我可以做梦。不,我的意思是用 C/C++ 构建一个跨平台的应用程序。 Firefox/Thunderbird 的规模是一个人无法完成的。

标签: c++ programming-languages project-management cross-platform mozilla


【解决方案1】:

本着其他答案的精神,我不得不指出 Mozilla 提供了他们用来构建应用程序的平台,包括 Firefox 和 Thunderbird,——请参阅 XULRunner

使用 XULRunner

  • 用 XUL(Firefox 和 Thunderbird 使用的跨平台 UI 描述语言)甚至 HTML 开发界面,
  • 用 JavaScript 开发程序逻辑,或者,如果你真的需要的话,用 C++(或者甚至 Python,像 Komodo 那样)开发程序逻辑,
  • 支持与使用的 Firefox/Thunderbird 相同的扩展机制

以下是基于 XULRunner 构建的应用程序的部分列表:XULRunner Hall of Fame


为了回答您最初的问题,Mozilla 平台通过指定一组跨平台 API(例如(过度简化)用于接口定义的 XUL)并在每个平台上实现每个 API,在许多平台上提供了丰富的功能。

从头开始实现这样一个跨平台层是很多的工作,所以不要尝试查看和复制 Thunderbird 的实现,而应该选择答案中提到的跨平台解决方案之一这里(Mozilla、Eclipse、QT、wxWidgets 等)

每个都有其优点和缺点,如果不了解您当前的专业知识和要求,就不可能为您挑选一个。

【讨论】:

  • 是的。如果您想要 Thunderbird 的外观和感觉,请在 XUL 中进行。如果您不想用 C++ 编写代码,还有其他选择,即使使用相同的接口。
  • 很少有人知道 XULRunner 作为应用程序开发平台的存在。
【解决方案2】:

您可以在这里浏览Firefox的源代码:

http://mxr.mozilla.org/firefox/source/

还有雷鸟:

http://mxr.mozilla.org/seamonkey/source/

无论如何,如果您想使用插件构建便携式应用程序,我建议您忘记尝试复制 Mozilla 并改为学习 Qt 或 wxWidgets。

【讨论】:

    【解决方案3】:

    Eclipse RCP 可以成为构建具有插件功能的丰富跨平台客户端应用程序的良好解决方案。 Eclipse RCP 基于 Java 和 SWT 技术。

    Here 是使用 Eclipse RCP 构建的应用程序列表。使用 RCP 构建的演示邮件客户端也可用here。另一个使用 RCP 构建的出色软件是 RSSOwl,一个提要阅读器。

    【讨论】:

      【解决方案4】:

      在选择开发语言/平台时,我认为需要考虑以下几点:

      1. 对正在寻找的功能的开发支持。
      2. 可维护性 - 就平台/语言的支持而言,对维护的支持程度。
      3. 与意向平台的兼容性(跨平台等)
      4. 语言/平台的未来可扩展性

      C++ 简直就是一门很棒的语言。剩下的(利用丰富的图形等)是学习......

      【讨论】:

        【解决方案5】:

        许多选项和其他选项已经提出了好主意。 Java 将使您的生活(相当)轻松,但 C/C++ 以需要抽象 API 为代价为您提供更多功能。

        我应该补充一点 - 一旦您致力于一组技术并在不重新编写的情况下进行了一些认真的开发,就可能很难对您的应用进行更改。例如,如果您选择了 C 和 Apache Portable Runtime,您可能很难转换为其他东西。同样,如果您在 Swing 中编写 UI,转换为 SWT/Eclipse 将意味着 UI 重写。我不想让你气馁,只是添加一个警告,我认为 x 平台应用程序需要非常仔细的规划。

        一些注意事项Mozilla 树也是如此。 Thunderbird/Firefox 等基本上是从相同的源代码树构建的,只是使用不同的组件。 Mozilla 构建系统相当复杂,在我看来比 Linux 内核更复杂。因此,Manuel 关于忘记 Mozilla 的建议是一个很好的建议,除非他们的路线能有所收获。

        【讨论】:

          【解决方案6】:

          Mozilla 的类别管理器可以很容易地为您的应用程序添加插件支持,但就像其他海报所说的那样,在您到达那里之前,您需要攀登一座美丽的小山。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-11-05
            • 2011-06-14
            • 2010-10-08
            • 1970-01-01
            • 2016-11-23
            • 1970-01-01
            • 2021-08-18
            相关资源
            最近更新 更多