.NET开源:微软的一次豪赌
- 来源:中国计算机报 smarty:if $article.tag?>
- 关键字:.NET,开源,微软 smarty:/if?>
- 发布时间:2014-11-25 09:31
美国时间11月12日,微软在一次面向工程师的大会上宣布将全部.NET服务器端开发框架开源,包括 ASP.NET、.NET 编译器、.NET 核心运行环境、框架和库等。通过GitHub开源,.NET实现跨平台支持Mac和Linux。因此,.NET开发者可以实现横跨Windows、Mac和Linux三大平台的开发和运行。此消息一经媒体曝光,引起业界一片热议。
微软与开源:从敌视走向融合
11月11日“光棍节”刚过,微软就将.NET全部“脱光”,把.NET的所有代码全部赤裸裸地展现给开发者。因此,很多人的第一反应是:微软不管.NET了。这一点,恰恰也是微软最为担心的:微软一旦开源.NET,开发者可能会误以为微软不再看重.NET的价值了,.NET会成没人疼的孩子。
有这种疑问的人可能忽略了微软于2014年4月在Build 2014上曾发布过的消息。当时,微软宣布计划对几款开发技术实现开源,包括 ASP .NET 5.0、NET Rx、the Roslyn .NET编译平台、ASP.NET、.NET Micro Framework和VB、C#开发语言等。
这则消息从某种程度上说明,微软全面开源.NET是有步骤、有计划进行的,并非心血来潮。只不过,原来微软间或开源一些工具和技术并没有引起业界重视,因此,微软开源.NET让业界感到颇为意外。
事实上,早在2014年4月,微软就宣布创办.NET基金会,为企业客户、开发者提供一个社区平台,进一步强化.NET生态圈,推动开源社区参与性和开发者创新能力提升。为此,基于Apache 2.0许可协议,微软首先将旗下24款.NET相关程序代码开源。其中一款程序就是微软当时最新的.NET编译器平台,代号Roslyn。同时,为了推动开源事业的发展,微软还引入了第三方Xamarin公司合作构建.NET基金会。而在此之前,微软一直在与Mono社区进行合作,将.NET框架转移到一个开放标准上。
在中国市场上,微软于2014年1月在上海成立了微软开放软件(上海)有限公司,目的是推动跨平台的软件标准和内容变革。而其母公司微软开放技术有限公司早在两年前就已经成立了。
可以说,在史蒂夫·鲍尔默手握微软CEO权杖的后期,微软视开源为“癌症”的态度逐渐有所变化。甚至,我们不止一次地听到鲍尔默在演讲中大喊着“开发者!开发者!开发者!”。鲍尔默开始意识到,未来的竞争关键是得开发者得天下。
所以,当纳德拉出任微软CEO以后,一直在积极推动微软走跨平台和开放的路线,特别是让每一位微软Office用户拍手称快的是,Office实现了跨平台运行。
就在本月,微软宣布iPad用户可以免费使用iPad版Office,无需再支付订阅费。回顾这些,我们似乎就不难理解微软.NET开源的举动。这些都可以视为微软实施跨平台和开放策略的步骤。
.NET开源让开发者重温“初恋”
随着移动互联网和云计算的蓬勃发展,微软.NET开发者社区的人气却是一路低迷。有业界专家指出,近几年,.NET开发者人数仅在中国市场就有下降。虽然.NET支持多种编程语言,但是在一些新的技术趋势面前却显得有些落伍。
按照微软官方公布的数据,全球有超过600万开发者在使用.NET。微软略显保守的策略,Windows Phone在移动端不温不火的表现,构建.NET运行环境较高的成本,都导致开发者的远离,结果就是很多原本属于微软的企业级市场正在被蚕食。
因此,开源后的.NET意图重振开发者的信心,跨平台的战略将帮助微软重新激活.NET生态圈。记者看到,微软开源.NET的消息曝光当天,社交媒体上有不少开发者留言:将重温自己的“初恋”——C#。
Linux基金会执行董事Jim Zemlin在评价微软这一举措时指出,微软已经认识到过去十年软件构建方式发生了根本性改变。微软重新定义自己是为了回应一个由开源软件和协作开发驱动的世界。
51Aspx.com网站创始人、微软MVP刘海峰认为:全面开源.NET框架代表了微软的一种开放态度,这个意义远大于开源本身。开源会促使更多的开发者来了解.NET运行环境甚至参与到.NET的成长中来。
在宣布开源.NET的同时,微软还发布了Visual Studio 2015预览版和.NET 2015预览版,推出了全新的Visual Studio Community 2013,为非企业的用户提供 Visual Studio 核心开发工具。这对于开发者来说,最直接的实惠就是,以后可以免费使用Visual Studio了。同时,对于开发者来说更大的好消息是Visual Studio将会“原生”地支持安卓和iOS开发。
微软开发平台事业部副总裁索马·索马赛加所言,目前全球有数十亿台移动设备,开发者需要面对各种类型的设备和平台工具,而通过Visual Studio和.NET全面的端到端解决方案,开发者可以在多种设备和平台上开发及管理应用。
北京理工大学计算机学院教师金旭亮在自己的微博中评论:.NET开源其实影响不大,跨平台才是关键。开源意味着.NET平台在Windows、Linux、Mac系统上被一视同仁了,这会大大拓宽.NET的领地。
在微软“移动为先,云为先”的战略下,.NET开发的应用程序继续封闭——只准运行在Windows系统上,微软就会失去更多开发者的拥护。在移动市场已经被谷歌和苹果抢占先机后,微软开源.NET能让更多的开发者回归,跨平台也可让更多用户能使用到微软的云服务。
.NET将与Java正面竞争
Java和.NET的优势都很明显。Java可以跨不同的操作系统平台进行开发、运行、维护,其通用性、安全性、平台可移植性都值得称赞;而.NET可以支持C++、C#、VB和Python等多种编程语言,但开发和运行过程只能在Windows平台上实现。
相对于支持跨平台前的.NET,Java凭借其开源、跨平台和可移植性好等优势,让很多企业和开发者趋之若鹜。因此,坊间有人流传Java工程师似乎比.NET工程师更容易找到工作。但是,.NET支持跨平台后,原来只能开发和运行于Windows平台的约束被取消,Java的独特优势将不复存在。因此,很多业界专家指出,因.NET支持跨平台受冲击最大的就是Java阵营。
.NET开源会对Java带来多大冲击?有一种观点认为:ASP.NET的C#语法与Java类似,不少开发者可能会选择用Visual Studio替代ECLIPS。这对Java的影响可想而知。另一种观点认为:JVM平台上面除了Java之外,还有Clojure、Scala等优秀的语言,真正适合不同开发者的口味。同时,Java里有很多优秀的库和框架,开发者可以方便地组合以达到业务目标。所以,.NET开源对Java谈不上会产生多大冲击。
虽然业界观点不一,但Groupon首席技术官Brian McCallister的观点还是比较中肯的。Brian McCallister认为,开源.NET为开发者带来了更多的选择,利于开发者找到合适的工具来解决问题。事实上,开源世界里随时有新成员进入,如Python、Ruby之类的编程语言很多。相比语言来说,要想赢得更多的开发者,为开发者营造良好的语言生态环境显得更为重要。
不可否认,.NET开源之后,开发者可以更加清晰地查看底层源代码。这样的变化,更加有利于开发者优化程序并进行更加灵活的自主创新。
那么,微软开源.NET是否就能够赢得与Java的对决呢?答案并不确定。.NET开源并非意味着微软的一切问题就迎刃而解了:一方面,微软对于开源社区的玩法并不是最熟悉的;另外一方面,微软的新战略需要给企业和开发者一个消化的过程。
同时,.NET已经失去原来PC时代的顶端位置,开源也并不能保证一定会为微软带来大量的开发者。开源.NET的最终效果如何,还要经过实战的检验。因此,从某种程度上来看,微软开源.NET的决策是对未来长期发展的一次豪赌。所谓“打铁还需自身硬”,当务之急,微软还需先把.NET平台做得更好。