在移动开发中,Android开发一直比较受欢迎的原因之一就是其是一个开源的,有很多开源项目、代码可以用,这也是很多iOS开发者羡慕不已的地方。但值得庆贺的是,随着swift编程语言的发展,北京时间12月4日,苹果正式宣布Swift面向所有开发者开源,哇咔咔~~

对于iOS开发者而言,这意味着什么呢?即日起,感兴趣的开发者们可以在Swift.org和GitHub下载源代码和各种研发工具,所有开发人员都可以用可以用swift语言做多版本游戏研发,当然他们也必定将对swift未来的发展做出重要的贡献和影响。

虽然苹果公司很少开源自己家的东西,但Swift开源并不意外,今年年初的时候,该公司就开放了ResearchKit,而Safari浏览器引擎WebKit也早已经向开发者们开放。尽管开发者们可以下载Swift并开始用它来打造新应用,但开源版本做的应用并不能直接在App Store发布,你仍然需要苹果的Xcode才能这么做。不过,出于苹果对安全性和稳定性的考虑,这一点也在意料之中。

苹果软件工程高级副总裁Craig

Federighi在接受采访时讲述了Swift的开源、未来发展以及开发者们所关注的该语言的成熟和稳定问题,更多详细信息请看Swift英文官网。以下是Gamelook根据欧美多家媒体的报道整理的详细内容:

Swift将在Apache 2.0授权协议下开源,微软去年开放.NET框架的时候也使用了该协议,该项目将于GitHub上线并且包含编译器、LLDB debugger、REPL命令行环境、标准以及核心库(library)以及支持项目的代码。新增的Swift Package Manager也将开源,该工具将作为‘初期的’Swift模块库并且会根据社区的修改而不断改变。

其中,大多数都在标准Apache授权的协议之下,不过Federighi表示苹果还加入了一个更为宽容的运行例外,“这样如果你用Swift写了代码,而且Swift库中的一部分是用你自己的代码生成,这种情况下你就不必提供归属关系。”

苹果的Swift工程师们将会开始使用GitHub社区带来的贡献,在开放环境下继续研发该语言。Federighi说,“Swift团队将在完全在开放的GitHub社区进行开发,因为他们每天都在研发并修改这个语言,包括它们在Swift 3.0上的工作,所有都将在GitHub开放社区进行。”

所以,开发者们不用等到明年6月份的WWDC等待大量的Swift 3.0信息,因为他们已经可以在Swift网站看到该语言的下一个主要版本的发展方向。虽然代码本身可以在GitHub获得,不过Swift社区则需要登录Swift.org,开发者们可以报告bug并获得-tracking系统、邮件列表、一个Swift工程师博客、社区指南、Swift教程和文档以及开发者与API设计指南。换句话说,这些东西向任何编程语言开发者们开放。

平台:官方OS X和Linux、为其他系统提供社区支持

目前官方支持的移植版本包括苹果自己的平台与Linux平台,这也是该公司在6月份所承诺的,苹果的Linux工具包括对package manager的支持、LLDB debugger和REPL命令行环境。至于其他平台,包括Windows在内,至少苹果会根据需求在一开始主要依靠社区来提供支持。

Federighi说,“Windows支持并不在我们的首发考虑范围之内,我们目前还不考虑直接做出来,我们认为Linux是不错的开始,但我们对于其他平台的贡献者也是开放的,不管是核心项目还是LLVM、Clang和LLDB,我们都向开发者们开放,这些Swift的核心工具已经被移植到了Windows平台,我认为社区里一定会有人做Windows版本的,不管是微软还是其他公司。”

为什么要开放Swift

苹果开放Swift主要有两个目标,首要而且最为明显的意图是,让Swift代码更为便捷和多功能化,使得苹果平台之外的项目也可以使用。该公司的长期规划更具有野心,Federighi说,“我们认为Swift是人们未来20年应该使用的编程语言,是下一个最主要的编程语言。”

他接着说,“很多的开发商,包括像IBM一样的企业级开发商在内,使用Swift研发自己的移动应用都还处于早期阶段,他们希望充分利用研发人员的才能,甚至可以把这些代码运用到云技术领域,我们认为最好的实现方式就是,我们把Swift进行开源。”

第二个目标就是出于教育方面的目的,当开发者们投入时间学习Swift的时候,或者有教育者们开始Swift教学的时候,苹果希望这些技术能够被更广泛地应用。Federighi说,“我们在和教育家们合作,很多教授都愿意教Swift课程,因为这是一种非常具有表达力的语言,用来介绍各种各样的编程概念都非常不错。把Swift进行开源可以让他们更好地使用,当作他们核心课程的一部分。”

在今年六月份和开发者们聊天的时候,Swift便于教学的特点是当时该语言主要的卖点之一,Swift不仅可以交流编程想法,而且可以把这些知识用到多个平台。

一名iOS开发者兼App Camp for Girls教师Lesley Baker说,“当你开始学的时候,通常的问题是你要不要些编译器,我最喜欢Swift的一点是,在某些情况下,不用考虑这些事情就可以进行编译,希望这会让学生们更好地理解,不让他们对编程语言太过于沮丧。”

据Swift.org的信息显示,尽管开发者们可以获得Swift开源代码,但用它做出来的应用想要登上苹果的应用商店仍然需要在Mac上使用Xcode实现。

开源会对Swift带来什么改变?Swift语言什么时候可以变得稳定化?

通过对Swift语言开源并公开研发新版本进度,可以让开发者们更容易知道苹果在做什么,也可以让开发者们更容易直接为该项目带来贡献。苹果公司表示,开发者们的反馈已经给新功能的研发带来了指导意义,所以该语言才从1.0发展到了2.0,但从理论上来讲,该公司将不再是唯一决定Swift发展方向和功能取舍的一方,开发者们可以提交投票请求,当开发者们希望带来变化的时候,Swift.org将会公开这个投票过程。

Federighi说,“如果你仔细看我们在Swift 2.0里推出的很多新功能,包括错误处理以及guard statements、可用性以及控制等等,这些都是基于我们和Swift开发者们的谈话而来的,随着Swift的开源,我们认为可以和开发者们进一步交流。”

Swift仍然是一门新语言,虽然大多数开发者的接受度都不错,但它仍然给开发者们研发和维护代码带来了问题。六个月或者一年前写的Swift 1.x代码可能就已经不能和当前版本的Xcode兼容了,这个问题很明显苹果公司是意识到了的。Federighi说,“我们过去一直非常坦诚地说,将会给我们的开发者们提供资源升级工具,所以,如果它们写了自己的Swift代码,随后我们更新了语言,那么我们就会提供工具帮助他们把这些源代码进行升级。”

但是,该公司还计划解决更大的问题,这个问题就是让更多的开发者们直接地为Swift语言做出贡献。苹果公司对于Swift

3.0的一个主要目标是让资源兼容性更进一步,这样用Swift写出的代码可以随着该语言的进化而升级,但开发者们需要重写或者改变的地方就会更少甚至根本不需要改变。

这和Objective-C有什么关系?

至于Objective-C语言,目前Swift的开源对其影响几乎是没有的,这并不会改变它在苹果生态系统中的地位。毕竟这个语言已经存在了数年,苹果平台上很多用该语言做的应用还在运行,包括苹果自己的一些Objective-C应用也在运行,在需要的情况下,苹果还会给该语言增加新东西。但Swift很明显是苹果公司最专注投入的语言,该公司更愿意开发者们尽可能使用Swift语言做研发。

Federighi说,“Objective-C不会消失,我们仍然热爱这个语言,我们对它的依赖性依然很大,并且苹果内部也用Objective-C做了大量的工作,我们将会继续支持Objective-C,而且将继续在需要的情况下为之进行升级。我们推荐新开发者们使用Swift语言,我们觉得Swift才是正确的开始,但我们在可以预见的未来,仍将维护、更新和支持Objective-C。”

这个声明其实开发者们已经很熟悉了,有些开发者表示它们习惯了Objective-C或者是不希望把两种语言混起来用,所以没有使用新语言,但也经常有开发者们表示,它们的新项目和大量的老项目都在用Swift编写。

苹果似乎在可预见的未来仍会继续支持Objective-C,但如果该公司决定不再支持了呢?没有人希望到时候措手不及。Swift在不断地成熟,不管是Swift 3.0的资源兼容性还是此次宣布的开源版本,相信都会给开发商们更多转换语言的理由。

虽然苹果公司短期内没有做其他开源版本的想法,但开源Swift就意味着其他开发者们可以用它为Windows和Android平台研发应用,苹果公司之前曾经公开表示,希望Swift成为未来20年最主要的编程语言之一,如果这是真的,那么它就必须支持所有主要的PC和移动平台,这对于苹果公司也是有利的,使用该语言的人越多,可以为苹果设备研发应用和游戏的开发者也就越多。

开源还可以让开发者们对这种语言更有信心,理论上来说,即使有一天苹果公司决定放弃这个语言,开发者们仍然可以继续推动Swift的发展,现有的代码也可以继续获得支持,当然,目前没有任何迹象表明苹果会放弃自己的新语言。有了开发者们的参与,苹果可以让社区帮助Swift变得更好,直接为该语言做出贡献。

不管怎么说,swift开源了,对iOS开发者而言都是极好的消息。当然对于苹果公司而言也是利益远远大于弊端,我们也期待以后苹果公司能有更多面向iOS开发者开源的东西。

相关文章:《Swift 代码规范

文/小麦麦子(简书作者)
原文链接:http://www.jianshu.com/p/94b9b5ac4551
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

Swift 3.0第1步,面向所有开发者开源的更多相关文章

  1. Swift 2.0初探

    转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引 ...

  2. Swift 2.0 到底「新」在哪?

    [编者按]2015年6月,一年一度的苹果 WWDC 大会如期而至,在大会上苹果发布了 Swift 2.0,引入了很多新的特性,以帮助开发者更快.更简单地构建应用.本篇文章作者是 Maxime defa ...

  3. iOS开发——新特性OC篇&Swift 2.0新特性

    Swift 2.0新特性     转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...

  4. Swift 2.0初探:值得注意的新特性

    转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...

  5. 关于 Swift 2.0 - 语言新特性与革新

    随着刚刚结束的 WWDC 2015 苹果发布了一系列更新,这其中就包括了令人振奋的 Swift 2.0. 这是对之前语言特性的一次大幅的更新,加入了很多实用和方便的元素,下面我们就一起来看看这次更新都 ...

  6. iOS开发系列--Swift 3.0

    概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行 ...

  7. Swift 3.0 【Swift 3.0 相较于 Swift 2.2 的变化】

    一.编译器和语法变化 函数或方法参数 调用函数或方法时从第一个参数开始就必须指定参数名 在Swift的历史版本中出现过在调用函数时不需要指定任何函数参数(或者从第二个参数开始指定参数名),在调用方法时 ...

  8. Swift 2.x -> Swift 3.0

    Swift 3.0 相对于 2.x 有很大变化.特别是因为命名习惯的改变,导致许多 Api 都发生了变化.总的趋势是让表示更简洁. 对旧的代码升级,大部分可以根据提示来进行更正.但也有的需要手动修改. ...

  9. Swift 2.0 异常处理

    转自:http://www.jianshu.com/p/96a7db3fde00 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主 ...

随机推荐

  1. Socket编程实践(2) Socket API 与 简单例程

    在本篇文章中,先介绍一下Socket编程的一些API,然后利用这些API实现一个客户端-服务器模型的一个简单通信例程.该例子中,服务器接收到客户端的信息后,将信息重新发送给客户端. socket()函 ...

  2. [Effective Sublime Text] (01) Sublime Text 3 开发环境初始化

    选择portable版本 安装git-credential-winstore.exe git config --global credential.helper cache // git config ...

  3. Cheatsheet: 2014 09.01 ~ 09.30

    Mobile Testing Mobile: Emulators, Simulators And Remote Debugging iOS 8 and iPhone 6 for Web Develop ...

  4. LSM树——放弃读能力换取写能力,将多次修改放在内存中形成有序树再统一写入磁盘

    LSM树(Log-Structured Merge Tree)存储引擎 代表数据库:nessDB.leveldb.hbase等 核心思想的核心就是放弃部分读能力,换取写入的最大化能力.LSM Tree ...

  5. SQL Server参数化查询中应用Like

    一般情况下是SQL语句: Select * From Users Where UserName Like 'Lin%' Select * From Users Where UserName Like ...

  6. android的ScaleGestureDetector缩放类详解

    文章由多出组合,它们来自: http://elvajxw.iteye.com/blog/1308452 http://www.cnblogs.com/lknlfy/archive/2012/03/11 ...

  7. 匿名内部类new Runnable()

    匿名内部类(Anonymous Inner Class),在创建实例的同时给出类的定义,所有这些在一个表达式中完成. Java code? 1 2 3 4 Runnable rn = new Runn ...

  8. oracle2

    为什么选择oracle--性能优越 概述:目前主流数据库包括 微软: sql server和access 瑞典MySql: AB公司mysql ibm公司: db2(处理海量) 美国Sybase公司: ...

  9. 几种任务调度的 Java 实现方法与比较--转载

    前言 任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务.本文由浅入深介绍四种任务调度的 Java 实现: Timer ScheduledExecutor 开源工具包 Quartz ...

  10. TCP释放连接时为什么time_wait状态必须等待2MSL时间

    为什么上图中的A在TIME-WAIT状态必须等待2MSL时间呢? 第一,为了保证A发送的最后一个ACK报文能够到达B.这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FI ...