为什么微软逐步转变为开源公司

微软目前拥有自己的 BSD Unix 操作系统,支持 Ubuntu 作为 Windows 10 的一个子系统,最近又将 Xamarin 软件开发工具包开源,所有这些意味着微软已不再是比尔·盖茨和史蒂夫·鲍尔默的微软了。

  我知道这很难令人相信,但微软确实正大步走上开源公司的道路。

  让我们看看这份清单吧。微软刚刚发布了 Azure 的它自己版本的 FreeBSD(微软刚刚发布了他自己的 Azure FreeBSD)。那又怎样,你心想,谁用 FreeBSD 呢?其实有不少,比如你可能听说过一家叫 Netflix 的小公司。还有 Citrix, Array Networks, Gemalto 和 NETGATE 在 Azure 市场上也有虚拟设备了。

  今年早些时候,微软和 Canonical 合作长达带来的 Ubuntu 到 Windows 10(微软和科能的合作把 Ubuntu 带到了 Windows10 上),为什么要这么做呢?因为它使得开发者更容易在 Azure 上为 Ubuntu 写程序。你也知道,Ubuntu 是 Azure 用户最喜欢的 Linux 操作系统。

  在此之前,微软收购了 Xamarin,一个支持多平台的移动应用开发平台。Xamarin 一直有很多开源的项目,但是微软已经通过开放式采购其 Xamarin 软件开发工具包(SDK) 、运行时库以及命令行工具更进一步推动它的发展。Redmond 成员这样做的理由是什么呢?重复构建应用实在是一种浪费。微软希望通过此举使 C# 在移动领域增强与 Objective-C,Swift, 或 Java 的竞争力。

  这些只是微软最近的举动。在 2015 年微软就将 .NET Core 带入 Linux; 支持其 Azure 云的 Debian GNU / Linux ; 并建立了自己的 Linux 认证。微软现任 CEO 萨蒂亚·纳德拉,声明“ Microsoft loves Linux.”。微软甚至有自己专业的 Linux 发行版:Azure 的云计算交换机。

  所有这些举动有什么共同点呢?目的都是让微软成为一个盈利的开源公司。

  微软并不仅要成为一家云计算公司,除此之外,微软还想向一家盈利的开源公司转变。看看微软 2016 年的收入来源,服务器产品和云服务是最赚钱,占总收入的 20%。游戏收入占总收入第二位,而微软办公也正在变为云服务,位列第三。Windows? 仅仅超过 10%。

  现在是什么在云上运行?我会告诉你:是开源的操作系统和服务器应用程序。引用微软 Azure 的 CTO Russinovich 的话,“很明显,如果我们不支持 Linux,我们将仅适用于 Windows,这是不实际的。” 他补充说,在 Azure 上运行的虚拟机有四分之一是 Linux 操作系统,且数量还在增加。

  开源已经成为占主导地位的发展模式。虽然人们就宗教或癌症而言常说起开源和免费软件,但开源真正得到青睐的原因是它可以赚大笔的钱。

  就像 Linux 基金会的执行董事 Jim Zemlin 说的,开源“通过更高的质量和更低的成本共享发展从而实现更快的发展。开源正促使软件价值链改变。” 显然微软明白这一点。

  开源不仅仅应用于软件,实际上硬件和软件之间的界限逐渐模糊了。就像 Zemlin 说的:软件逐渐涵盖了硬件的功能。你可以在软件定义网络(SDN),服务器虚拟化和云看到这一点。硬件厂商压力剧增,因为越来越多的专业硬件已经被通用 x86 机器上运行的开源软件取代。

  因此,开源是几乎每一个科技公司,包括微软,正在转移的发展方向。

  当然,微软不会开放 Windows 或 Office 的源代码,因其巨大的沉没成本并且仍有效益。但未来的项目就不一样了,未来将永远是开源的。由于 Windows 和 Office 已经步入云中,如果微软数据中心的人要在 Linux 或 FreeBSD 上运行 Windows 和 Office,我是一点也不会惊讶的。

原文地址:https://www.sdk.cn/news/3928


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jdk1.8 JUC源码增量解析(1)-atomic-Striped64

转载自 Jdk1.8 JUC源码增量解析(1)-atomic-Striped64功能简介:Striped64是jdk1.8提供的用于支持如Long累加器,Double累加器这样机制的基础类。Striped64的设计核心思路就是通过内部的分散计算来避免竞争(比如多线程CAS操作时的竞争)。Striped64内部包含…

java内部类选择题_java内部类详解(附相关面试题)

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。一.内部类基础在Java中&am…

开源,新的平台之战

近日,OpenDaylight项目的执行总监Neela Jacques在文章《开源的转变:一种新的平台战争》 中提到:开源已经成为软件公司业务战略的关键,是一种新的平台之战。 多年来,开源软件似乎处于技术产业的边缘。而如今&#xff0c…

java下载图片到手机相册_Unity保存图片到Android手机且更新相册

Android 保存图片到设备前言:在许多的应用或游戏中,大多都有保存图片或者截图等等的功能,这篇文档我们的目的是通过 Unity 保存图片,并且调用 Andorid 中的更新相册的原生方法.流程步骤:编写更新相册的 Android 原生接口 -> Unity 编写保存图片逻辑以及调用更新相册 Android…

如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例

转载自 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例 wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。 在 Java 中…

.NET Core 使用Dapper 操作MySQL

.NET Core 使用Dapper 操作MySQL 数据库, .NET Core 使用Dapper。 目前官方没有出.NET Core MySQL 驱动,但是已经有第三方进行改动封装出.NET Core MySQL Connector 预览版。 Dapper 也已经出了 .NET Core 预览版。 Dapper dot net 是一个轻量型的ORM&a…

Angular 2与TypeScript概览

迄今为止,在创建Web应用方面,AngularJS是当前最为流行的JavaScript框架。如今,Angular 2和TypeScript通过一种非常类似于Java 8的语法,使真正面向对象的Web开发成为了主流。 据Google的工程主管Brad Green介绍,有130万…

正确使用 Volatile 变量

转载自 Java 理论与实践 - 正确使用 Volatile 变量 - volatile 变量使用指南Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少&#xf…

java龟兔赛跑设计思路_JAVA程序设计(09)-----面对对象设计初级应用 龟兔赛跑

1.乌龟和兔子共有属性和方法 做成父类 避免重复代码package com.lovo;/*** 类: 动物* author Abe* 属性: 名字 步距 总距离 睡觉的日子*/public class Animal {protected String name;protected int step;protected int distance;protected int sleepDay…

16年国庆假期期间兼职所悟

2016年9月25日,学校放假了!!! 学校放假11天,10月7号才开学,除了晚上上个夜班之外别的时间都在闲着,这么大的自己感觉闲着真不是滋味,于是开始疯狂的在58上找工作,心里想…

python flask项目过程_Python 开发过程遇到的问题

另一方面,也是因为时间原因,没有事先系统了解 python 的具体内容,所以开发过程中基本都是拿 java 的东西往 python 里面套。比如:某个功能用 java 的 ArrayList 可以解决,那 python 中有没有类似的东西呢?j…

Java 中的双重检查(Double-Check)

转载自 Java 中的双重检查(Double-Check) 在 Effecitve Java 一书的第 48 条中提到了双重检查模式,并指出这种模式在 Java 中通常并不适用。该模式的结构如下所示: public Resource getResource() { if (resource null) { …

使用 Autofac 进行依赖注入

先说下为什么翻译这篇文章,既定的方向是架构,然后为了学习架构就去学习一些架构模式、设计思想。 突然有一天发现依赖注入这种技能。为了使得架构可测试、易维护、可扩展,需要架构设计为松耦合类型,简单的说也就是解耦。为了解耦前…

组合的示例代码 java_java实现Composite组合模式的实例代码

//20210121写在前面:刚期末考试完,考了面向对象,里边儿有23个设计模式,我寻思着考完挨个儿实现一下,本文实现组合模式组合模式核心思想类似文件夹的概念,构件树形结构,树形有叶子结点和文件夹结…

Java中的ThreadPoolExecutor类

转载自 Java中的ThreadPoolExecutor类在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了&…

webpack 前端构建

一、建立简单的项目目录 1、创建 manager 根目录(作为项目根目录)2、执行 npm init,在根目录manager下自动生成 package.json文件3、npm install webpack --save-dev,在项目中安装 webpack npm包4、在根目录下 创建 webpack.config.js,所有的…

简析 .NET Core 构成体系

简析 .NET Core 构成体系Roslyn 编译器RyuJIT 编译器CoreCLR & CoreRTCoreFX(.NET Core Libraries).NET Core 代码开发、部署、运行过程总结 前文介绍了.NET Core 在整个.NET 平台所处的地位,以及与.NET Framework的关系(原文链接),本文将详细介绍.N…

判断一个男人穷还是富,只看这几点!

转载至: 来源:甜蜜爸妈手记(wxtm01) 作者:甜甜妈 创业君 导读 千主意万主意,如果不行动,永远就只是个想法而已。好想法要配得上行动才行。 看看他的爱好一个有事业心男人,绝对不…

php制作留言板的题_PHP实现留言板功能实例代码

本文实例为大家分享了php留言板的实现思路,供大家参考,具体内容如下:1.创建一个存放留言信息的文件名2.获取表单中的数据给一个变量3.判断文件的时候存在4.对文件执行写的操作,在这之前,注意打开文件的时候&#xff0c…

Java线程池,从使用到原理

转载自 Java线程池,从使用到原理线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁…