用什么语言或技术来开发Spotify桌面应用程序?

有谁知道哪种语言或技术用于开发Spotify桌面应用程序? 它稳定,美观,轻巧。

以下是他们使用的第三方组件列表(当然是在C ++之上):

  • 促进
  • 外籍人士
  • FastDelegate
  • giflib
  • 的libjpeg
  • libogg
  • libvorbis
  • 梅森扭转者
  • zlib的
  • NSIS(仅限Windows)
  • Windows模板库(仅限Windows)
  • 咆哮(只限于Max OS X)
  • MATrackingArea(仅适用于Mac OS X)

从这里: http : //www.quora.com/What-is-the-technology-behind-the-Spotify-desktop-app
date:2014-09-09

5年Spotify员工Andreas Blixt:

我们所有客户的核心都是C ++,但是自从Rasmus的文章变得浓缩之后,这个核心就已经被分解成了模块。 随着Spotify在越来越多的平台上可用,以及获得更丰富的function集,我们需要确保“核心”不会成为“一切的一点点”。 这意味着将某些function(例如播放控制)分解到各自的独立模块中。 这些模块仍然是C ++,但是是足够自足的,它们的逻辑理论上可以在其他语言中实现。 我们把这个接口层称为这些模块“Cosmos”,它的工作方式与HTTP不太一样。 Cosmos允许客户端的任何部分使用任意path和有效载荷与模块进行通信,从而允许更灵活的架构。 一些明显的好处是版本化的接口(例如:GET SP:// player / v1 / main返回玩家状态)和JSON传递数据。 这对我们的桌面客户端的另一个变化很重要。

现在我们很多的桌面UI实际上都是使用Chromium Embedded Framework(CEF),这基本上意味着我们的视图是由JavaScript,HTML和CSS支持的。 对于我们所有的function团队来说,不用担心打破他人的观点,每个视图都会在自己的“浏览器”中进行沙盒处理(我想你可以把视图看作是Chrome中的标签,除了我们展示更多比一次一个)。 这带来了一个限制:视图之间共享数据变得更加困难。 这是Cosmos进来的地方,真正简化了核心(C ++)和JavaScript之间的通信:JS客户端可以进行任意请求,如果有绑定,则处理和响应该请求。 一个例子是“消息”端点,它允许任何视图将JSON数据推送到任何其他正在侦听的视图(有点像HTML5中的window.postMessage,除此之外也可以与C ++模块接口)。 这也是客户端的所有播放button如何知道曲目是否正在播放,或者是否可以离线播放(另一个Cosmos模块),或者是否已经保存了一首歌曲到您的音乐。

我们的技术栈的另一个重要变化是我们已经将一些逻辑进一步“回”到视图聚合服务中。 因此,我们以前会做几乎所有的客户端逻辑,只使用后端作为数据存储,现在我们在数据存储和客户端之间的逻辑层上做了更多的工作,暴露了与宇宙非常相似的端点(事实上,您可以使用与称为Cosmos模块完全相同的方式调用后端,因此在图层之间移动并不麻烦)。 其原因有两方面:一是它让我们能够更快地扩展到更多的平台,因为实现的客户端逻辑较less,二是它确实帮助我们保持客户端行为更加一致和最新,因为客户端更“愚蠢”。 为了缓解可能来自于此的任何放缓,我们确保所有数据都有caching规则,这样客户端仍然可以在本地保存数据,但它不会像以前那样负责尽可能多的业务逻辑。

据Spotifydevise师介绍:

http://twitter.com/#!/tobiasahlin/status/96483609799692288

“有些是用C ++编写的,有些是用蜘蛛的HTML-ish标记语言编写的”“它是专门用于Spotify中的”

Spotify现在使用Chromium Embedded Framework (CEF)在桌面应用程序中显示由HTML / CSS / JavaScript组成的Web界面。

从他们的网站 :

Spotify主要由Python和C ++构build

鉴于它在Windows上运行,显然不是.NET(进程资源pipe理器告诉我的),没有遵循AIR安装过程,我会说C ++使用跨平台库。

一切都被编译成一个可执行文件,这表明他们可以访问所有依赖项的来源。

Wrt to Techno …我认为他们使用了Hardhouse Electronica

前端用FLEX编写,检查你的Mac或Windows机器上的源代码。 您将会看到很多xml文件,这些文件都是flex文件格式。

当然,与服务器和平台集成的连接大概是用c ++编写的。 但UI部分只是FLEX …