本文转自:码农翻身 
作者:刘欣

过去Windows与Linux是两个壁垒分明的世界,但是自从2014年Satya
Nadella上任微软执行长时,一改昔日敌对作风,甚至喊出「微软爱Linux」,使Windows与Linux不再势不两立。

前几天无意中看到一篇文章,标题是:Tutorial: Build a Java EE and
Postgresweb app in
Azure
,看起来挺普通的,但是这个文章出现在微软的网站上,
那就变得不寻常了。 

而在2015年,Satya
Nadella也透过开源.NET,以及积极在云端服务Azure上支援CentOS、Ubuntu及SUSE等主流Linux作业系统,证明微软要走向开源、拥抱Linux的口号不是空谈。

Java 是 Sun 发明的语言, Java EE
是各大厂商一起搞的标准,为了对抗他们,微软当年特地搞出了新语言 C# 和
.NET 战略。 

在2014年11月,微软首先将.NET伺服器端核心全部开源释出,让.NET应用程式得以在Linux及Mac
OS X上执行,在开源社群内引起一波震撼。

Postgres 是开源的数据库,而微软自己的产品就是大名鼎鼎的 SQL Server。 

在 2015年4月的微软Build大会上,微软则更一步释出Linux、Mac OS X版本的.NET
Core Runtime预览版本,让.NET伺服器端的应用程式,走入了Linux及Mac OS
X的世界。微软Azure部门技术长Mark Russinovich也示范如何使用Visual
Studio,将应用程式打包成Docker映像档,接着部署至Azure上运作。同时,微软也推出了跨平台开发工具Visual
Studio Code(VS Code),除了让.NET开发经验可以延伸到Linux和Mac OS
X外,也能帮助开发者更容易将程式码部署到微软的Azure云端平台。在2015年11月,微软也将VS
Code的程式码开源释出到GitHub上。

这微软什么时候开始拥抱开源了? 


了投入开源、拥抱Linux外,微软也积极拥抱Docker,让Linux逐渐渗透至Windows。在2014年6月时,微软在DockerCon上,
示范使用跨平台的命令程式介面,在Azure上部署多个Docker主机。10月时,微软则一举宣布将在下一版本的Windows
Server中内建Docker引擎,并且支援.NET、Node.js、Java及C++等多种开发工具。使用者得以透过Docker,让应用程式可以
在Windows、Linux的异质环境中运作。

再仔细看看这个文章左边栏,会发现它支持更多的编程语言和开源系统,更重要的是这样的系统都跑着
Linux 上面! 

在2015年4月,Docker推出了Docker
1.6版,而其中一大亮点则是首次正式支援微软Windows作业系统。微软也表示,使用者可使用Windows的Docker
Client,在Linux Container上运作Docker主机。另外,未来也将支援管理Windows
Server Containers和Hyper-V
Container,让使用者得以在多重开发环境中,都能够有和Docker
Client相同的标准和介面。

图片 1

8 月时,微软则释出Windows Server 2016的第3预览版本,首度加入对Windows
Server
Container的支援,让想要使用Contaienr技术的开发者,除了Linux作业系统外更多了一个选择。另外,开发者也可以使用.NET、
ASP.NET、Powershell、Java等工具,进行Container化应用的开发。微软也同时发布Visual
Studio及Visual Studio
Online更新版,让开发人员得以在Azure环境下建立Windows Server
Container。

这样的文章如果十年前出现在微软的网站上,绝对会让人惊掉下巴。  

在 2015年7月,微软也正式宣布,停止支援Windows Server
2003,未来不再释出任何的安全更新。但是,根据网路服务业者Netcraft的调查显示,目前全球仍有超过60万台网站伺服器,使用超过12年历史的
Windows Server
2003,而这些伺服器约代管了1.75亿个网站。其中,美国及中国则占全球的55%。

因为微软的产品有个很重要的特点,那就是封闭:  

这意味,目前使用Windows Server
2003的用户仍然具一定规模,未来若要升级至Windows Server
2016,可使用内建Docker引擎,建立Docker化的应用程式。而这些使用者,也会成为跨Linux、Windows环境的新兴用户。

开发语言要用自家的 C#, VB.NET…… 

转载自:ithome.com.tw

数据库要用自家的 SQL Server。 

操作系统要用自家的 Windows Server。 

开发的系统要跑在自家的 IIS 上。 

开发工具当然是号称最好用的 IDE :Visual Studio。  

封闭性是大家最诟病微软的一点,也是微软攻城拔寨的利器。 

现在微软推出了云服务Azure,不管你什么语言,什么数据库,什么系统,都可以运行,还是基于Linux这个开源的操作系统。
 

当然,可能有人说,这是云服务嘛,云服务肯定不能只支持自己产品,
得支持各种语言和系统,这不算什么。 

我们再来看看另外一个例子:Visual Studio Code 。 

图片 2

2016年,Visual Studio Code 在 Stack overflow
举办的调查中,位居最流行开发工具榜单的第13位
仅仅有7.2%的人在用它,然而,在2018年的调查中,它就蹿升到了第一位
有34.9%的人在使用,也包括老刘我。 

Visual Studio Code 是个完全免费、开源的产品,
它是不是用微软自己的当家语言 C# 开发的呢? 答案是否定的。

Visual Studio Code 是基于 Electron 搞起来的,Electron 又什么?  

Electron 是 GitHub
维护的一个开源框架(又是开源的!),让程序员可以开发跨平台
(Windows、Linux、MacOS) 的桌面 GUI 程序, 对前端非常友好,因为在开发 GUI
时,使用的是 JavaScript、HTML 和 CSS 。 

Electron 的后台是大名鼎鼎的 Node.js ,还有 Chromium 这个 Google
发起的开源浏览器。 

全是开源的,还有竞争对手 Google 发起和主导的产品。

如果对比下 Visual Studio 和 Visual Studio Code
这两个产品的界面,就会发现差距挺大的, 这个 Visual Studio Code
更加“时尚”,它的默认界面风格,字体颜色,甚至于设置方式都更加接近其他一些开源的编辑器如
Sublime、Atom 。 

我不知道 Visual Studio Code
是怎么做技术选型的,但是能选择开源的产品来开发,而不是沿用固有思维,使用自己的语言和平台来开发一个只能在自家平台运行的产品, 这肯定需要公司层面的巨大变革:
从封闭到开放,拥抱开源。 

值得一提的是 Visual Studio Code 的 Erich Gamma
带着团队搞的,这可是一位绝对的大牛啊,设计模式 GoF(四人帮)之一, 和
Kent Beck 合写了JUnit,Eclipse Java Development Tool 的架构师, IBM
Jazz、RTC 的主要开发人员。   

这么多工作,随便拿出来一个就足以名垂青史,他一个人竟然全干了。 

Erich Gamma 做的几乎都是开源的工作, 他原来在
IBM,2011年跳槽到了微软,这样的人才 IBM 没有留住,实在是可惜可叹啊。 

从另外一方面看,Erich Gamma 跳槽到微软也反应了微软确实在拥抱开源,要不然
Erich Gamma 估计也不会去。  

2001年,微软的 CEO Steve Ballmer 说: 从知识产权保护角度来看, Linux
就是毒瘤并且无可救药
。 

13年后,微软的新 CEO 萨提亚 ∙ 纳德拉在上任时,公开宣示了微软对 Linux
和开源的新感情,
当时我看到这个新闻,我还给同事信誓旦旦地说:微软要开源?绝对不可能!
这就是市场口号而已! 

现在看来被打脸了,微软的确付出了真爱, 从程序员的角度看: 

  • SQL Server 已经跑在 Linux 上 

  • Visual Studio Code 被广泛采用

  • TypeScript被 Google 采用,作为 Angular 的编程语言

  • NET Core 开源,实现了跨平台运行

  • Windows 原生支持 Ubuntu Linux Bash

  • ……  

微软2016年是 GitHub 上贡献最多的公司,2018年干脆把 GitHub
给收购了,这也引起了不少争议…… 这家公司确实是变了。  

那么问题来了: 微软会不会把 Windows 和 Office 给开源了呢?