即使是封闭的苹果,也不得不开源了

开发 后端 前端
在2015苹果WWDC上,最受欢迎和关注的不是iOS 9和OS X,也不是新的Apple Music,而是苹果软件工程副总裁 Craig Federighi 宣布,苹果的编程语言 Swift 2.0 将会开源。

[[137203]]

为什么大家会如此激动?在过去的15年间,开发者已经显示了对开源工具和平台的偏爱,然而苹果一直让开发者适应自己的技术,远离第三方技术。苹果这 样做有一定风险,有可能会与开发人员关系疏远,也正是这些开发人员一直在开发第三方应用或者服务。程序员想自由选择自己想要的工作方式 ,要留住他们,苹果不得不对外开放。

Swift发展非常迅猛,但近几年很多新出现的其他的编程语言都较着劲,想吸引开发者的注意。Facebook在使用Hack和D语 言;Google开源了它的Go语言;Mozilla也推出自己的***版编程语言Rust。这些编程语言都各有优劣,其中会有一种或者几种会成为下一个软 件开发的标准,并且每种编程语言都已经开源。

重要的是,去年微软决定开源它.NET框架。微软允许所有的开发人员有Windows以外的系统中使用自己的语言,包括OS X以及iOS ,并且还提供了代码,使得开发人员更便于根据自己的需要对 .NET进行修改或者延展。苹果面临这样一个事实,开发者将用微软的工具来为开发苹果产品,因 此它只能开源Swift。

苹果的目的

苹果在去年的WWDC上推出了Swift 1.0,替代Objective C。Objective C的历史可追溯到1983年,一直是开发iOS应用的主要语言。Swift是一种更加现代化的语言,增加许多新的特性,既可以帮助新程序员学会编码,也能 使有经验的程序员避免出现一些严重的错误。

尽管苹果已经不是***次开源。苹果开源过Darwin(它是OS X的基础)和WebKit(Safari 浏览器的基础),但是苹果不会开源Objective C。理论上似乎可以将Objective C应用于其它操作系统,但如果没有苹果的帮助,跨平台代码很难。

Xamarin公司开发的工具,能让开发者用微软的编程语言,开发运行在Windows,Linux,iOS和Android上的软件。这就意味着 开发者不需要用Java为Android开发,再用Objective C为iOS开发。他们甚至可以使用同样的代码,作为桌面或者服务器端应用的基础。

尽管大多 iOS 和 OS X 开发人员仍然在使用Objective C 或者Swift,苹果可以通过使得Swift用于其它操作系统,阻击微软。最终的结果可能是,苹果的语言用于为其竞争对手开发应用。

开源到底要多开放?

在一份声明中,苹果写道开源会包括Swift系统的核心部分,包括编译器和标准库,但在开源的程度上细节还不是特别清楚。

苹果很可能会保留关键产权,就像当初的Java那样。苹果也可能最终收回Swift的开源,就像当初苹果一度承诺将FaceTime作为一个视频通信的公开标准一样。不管怎么说,这对于作为苹果的Swift而言都是一个巨大的转变。

苹果本身也在协助将Swift应用于Linux中,并且能够接触到苹果用于开发软件的代码,其他公司也将能够支持Swift。然而,苹果却没有提到要开源Cocoa界面,这也是大多数iOS 和OS X应用的一个核心部分。

不管怎么说,Swift的开源至少给开发人员吃了一颗定心丸,保证他们不会陷入诉讼当中,就像当初Google与Oracle关于Java上漫长的版权之争一样。Oracle声称Google为Android开发了一个类似于Java的编程平台,这侵犯了知识产权。

将编程语言以及其他的一些开发技术开源之后,像苹果这样的公司能够保证开发人员合法使用技术。做开发已经够麻烦了,就不要用其它的事来打扰程序猿了。

来源:http://www.leiphone.com/news/201506/JEKjFYIMRBl3OmCk.html

英文原文:http://www.wired.com/2015/06/open-sourcing-no-longer-optional-not-even-apple/

 

 

责任编辑:王雪燕 来源: 雷锋网
相关推荐

2015-06-15 09:40:41

swift苹果开源

2016-10-31 14:09:38

戴尔DIY服务器

2023-01-13 16:08:55

2010-11-02 14:51:11

职场

2010-06-11 11:20:28

开源CRM

2019-12-24 14:04:59

PythonExcel数据处理

2020-07-09 12:50:29

JVM内存管理Java

2021-04-12 08:56:00

多线程Future模式

2019-10-18 17:55:03

安全运营

2023-09-11 14:20:39

苹果开源AI

2020-06-15 08:19:00

ZooKeeperEureka

2011-03-31 10:46:54

LinuxCLI软件

2019-11-14 15:38:46

AndroidRelease项目

2010-05-26 15:58:52

MySQL远程连接

2019-12-02 10:13:37

GitHub人生第一份工作程序员

2018-06-05 08:59:40

2010-05-21 09:40:57

MySQL出错代码列表

2010-05-25 09:58:43

MySQL数据库

2010-05-10 13:01:03

OracleDBA面试

2014-08-13 13:22:28

CA TechnoloDevOps
点赞
收藏

51CTO技术栈公众号