2008至今,Chrome如何成长为霸主

2008 年,微软的 Internet Explorer(IE)浏览器几乎占据了全球浏览器市场份额的 60%;Mozilla 的 Firefox 紧随其后,市场份额约为三分之一;于当年 9 月 2 日初亮相的 Chrome 浏览器则仅占有 0.3% 的市场份额。

十一年后的现在,Chrome 在浏览器市场稳居第一,占有率接近 70%。谷歌是如何在这些年里使 Chrome 从零进入并逐渐主导一个全新的领域?

文档管理工具 FYI 的联合创始人 Hiten Shah 梳理了 Chrome 从 2008 年至今的发展历程,提出谷歌是“通过从根本上重新设计浏览器”来达成这一切。他认为,“谷歌一开始就将 Chrome 视为一个平台,而不仅仅是查看网页的一种方式”。接着,Hiten 从以下几方面展开了探讨:

  • 为什么 Chrome 的主要目标是开发人员而不是普通互联网用户?

  • 在竞争激烈的市场中,谷歌如何在短时间内极大地扩展 Chrome 用户群?

  • Chrome 如何帮助谷歌在更广泛的互联网趋势中发挥更大的影响力?

互联网的前景从 2008 年起大为不同,人们使用互联网的方式开始发生变化,谷歌抓住了一个机会,为开放的 Web 创建了一个全新的操作系统,并充分利用了 Internet Explorer 的局限性弱点。

2008-2013:重新思考浏览器

2008 年,iPhone 上市不到一年,Windows 7 刚面世了几个月,雅虎拒绝了微软的收购,IE 成为世界上最受欢迎的浏览器。不仅是从硬件角度而言,以消费者为中心的技术生态系统也发生了重大变化。iPhone 是推动应用程序进入主流的催化剂,不过在当时,网页仍旧是多数人进行在线交互的主要方式。

网络瞬息万变,浏览器却无太大变化。在很大程度上,2008 年使用 IE 浏览器的体验与 1998 年大致相同。谷歌意识到 web 2.0 时代应当有新的东西出现,于是快速抓住了这个机会,于 2008 年 9 月 2 日正式启动 beta 版 Chrome。

谷歌重新考虑了浏览器的整个概念,并采用了与微软完全相反的开放方式,从一开始就将 Chrome 项目进行了开源。到 2009 年 7 月,即正式发布仅 9 个月后,已有超过 3000 万人使用 Chrome 浏览网络。同一时期,谷歌推出了 Chrome OS。不久后的 2009 年 12 月,Chrome 拥有了扩展程序库,这在当时是一个很前卫的概念。

2010 年,从年初的 4000 万用户到年底的 1.2 亿,Chrome 经历了惊人的增长期。市场份额也从 2009 年底的 5% 增长为 2010 年底的 15%。在这一年,更为完善和庞大的 Chrome 网上应用商店替代了先前的扩展程序库,这些扩展程序成为了新一波软件产品的先锋,并在很大程度上改变了互联网的工作方式。

接下来的 2011 年,Chrome 的 3D logo 改为了更流行、更简洁的平面式设计。谷歌在 Chrome OS 上更进一步,推出 Chromebook,并将其视为“轻量级便携式计算的未来”。

2011 年 10 月,Chrome 拥有了其他浏览器都将竞相模仿的新功能——“新标签页”,Tab 式浏览可以说是具有革命性意义,使人们可以真正地进行在线多任务处理。Chrome 也因此更像一款真正的应用程序。

谷歌的下一步行动是将 Chrome 的业务范围扩大到 Windows 之外。2012 年 2 月,Android 版 Chrome 发布。6 月,iOS 版 Chrome 也发布了。

至此,全球活跃的 Chrome 用户数量从 2011 年 6 月的 1.6 亿增长到 2012 年 6 月的 3.1 亿,几乎翻了一番。2012 年夏天,Chrome 的市场份额达到 31%。

下一项重大发展在 2013 年 9 月,谷歌宣布启动 Chrome 应用程序。它们是原生在 Chrome 中运行的轻型应用,可以离线使用,也可以与外部设备进行交互,能够访问本地和云端文件,也能够自动在多个设备上同步。这些都使得 Chrome 离真正的计算平台更近一步。

2014 年至今:赢得浏览器大战

谷歌在 2014 年初凭借 Chrome 浏览器取得了非常不错的地位。Chrome 当时约占浏览器市场的 40%,在短短五年内增长了 155%。超过 3.1 亿人使用 Chrome 作为主要浏览器。

2014 年的第一个大的举措是在移动设备上启动了 Chrome 应用。3 月,谷歌对 Chrome 应用程序开发人员通过其产品获利的方式进行了一些重要变更。因为谷歌清楚地意识到,围绕 Chrome 建立的扩展程序和第三方生态系统是产品未来的重要组成部分,必须要让开发者获得更好的收益。

2015 年 5 月的年度 I/O 开发者大会上,谷歌确认当时的 Chrome 用户数量已超 10 亿。这一年也是对于扩展程序而言极为重要的一年,其他浏览器也终于开始认真对待自己的扩展。

同年,微软确认 Edge 将成为 Windows 10 的默认浏览器,并决定终止对 IE 的支持;Mozilla 宣布将为扩展开发人员发布一个名为 WebExtensions 的新 API ,这使得为多个浏览器开发附件变得更加容易。

在此之前,谷歌一直在很大程度上独立地开发 Android 和 Chrome OS。2016 年 5 月,谷歌宣布适用于 Android 应用的 Google Play 商店将也可以在 Chrome OS 上运行。这样一来,许多应用程序都可通过 Google Play 商店与 Chromebook 兼容。

几个月后,谷歌又宣布计划将 Chrome OS 上托管的 Chrome 应用迁移到本机 Web 应用,无疑再度丢下一颗重磅炸弹。

到 2017 年,Chrome 浏览器占据了浏览器市场份额的 55%,并且同时悄悄潜入了企业市场。2017 年 5 月,谷歌启动了 Chrome Enterprise Bundle。企业捆绑包的推出是谷歌迄今为止在企业领域最积极的举措之一。

Chrome 最受欢迎的更新之一发生在 2017 年 9 月,当时谷歌对浏览器中处理插页式视频广告等自动播放媒体的方式进行了更改,这个看似很小的更新被称为“统一自动播放”,使用户可以更好地控制自己的浏览体验。用户现在还可以有选择地禁用特定网站的音频播放。

下一个重大更新发生在 2018 年 5 月,Chrome 开始支持 Linux 应用程序,谷歌对开发者的友好也因此可窥见一斑,此举也鼓励开发人员不断帮助完善 Chrome 生态系统。

同样是在 2018 年 5 月,Chrome 宣布要将所有非 HTTPS 页面标记为“不安全”,并预计在 10 月份正式全面推出。2018 年 9 月是 Chrome 推出十周年,此时,全球有超过 20 亿活跃的 Chrome 安装,Chrome 拥有大约 62% 的市场份额。

Chrome 的普及意味着该浏览器实际上已成为 Web 开发的事实上的标准。谷歌在短短十年间从开放网络的拥护者转变成了当代网络标准的守门人。《彭博商业周刊》的记者 Gerrit De Vynck 认为,“令人担忧的是,谷歌正在使用该浏览器及其 Chromium 开源基础来压制在线竞争对手,并使整个行业都对它有利。”许多用户也逐渐因隐私问题转而对 Chrome 感到失望甚至愤怒。

尽管各种隐私丑闻缠身,加之 Firefox 等其他浏览器的大势发展,Chrome 依然稳坐第一。到 2019 年 5 月,Chrome 占据了浏览器市场近 70% 的份额。

短短十年,谷歌重新设计了浏览器,并使其广受欢迎。Chrome 除了为谷歌创造了一些新的收入来源外,还帮助谷歌进一步扩大了本已相当可观的业务范围,并吸引了大量新的受众。

不过,尽管受到广泛欢迎,Chrome 的隐私和安全功能却面临激烈的批评。目前看来,Chrome 的统治地位已得到保证,但如果谷歌无法充分利用其已建立的势头,情况可能会很快发生改变。

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

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

相关文章

C++继承中构造和析构顺序

子类继承父类后&#xff0c;当创建子类对象&#xff0c;也会调用父类的构造函数 问题&#xff1a;父类和子类的构造和析构顺序是谁先谁后&#xff1f; 代码如下&#xff1a; #include <iostream> using namespace std; //继承中的构造和析构顺序class Base {public:Ba…

linux java -xms_java.lang.OutOfMemoryError及解决方法

主要有3种比较常见的OutOfMemory Error&#xff1a;Java.lang.OutOfMemoryError: Java heap spacejava.lang.OutOfMemoryError: PermGen spacejava.lang.OutOfMemoryError: GC overhead limit exceeded1. java.lang.OutOfMemoryError: Java heap spaceJava heap space&#xff…

Excel模板导出之导出教材订购表

说明本教程主要说明如果使用Magicodes.IE.Excel完成教材订购表的Excel模板导出。要点本教程使用Magicodes.IE.Excel来完成Excel模板导出需要通过创建Dto来完成导出需要按要求准备Excel模板主要步骤1.安装包Magicodes.IE.Excel在本篇教程中&#xff0c;我们仅演示使用Excel来完成…

BeetleX网关非法Url请求拦截插件

一旦网站部署到互联网上&#xff0c;就会受到一些非法的请求&#xff0c;而这些请求的Url都是一些特定的路径或带上一些无关请求的字符用于探测一些服务存在的问题&#xff1b;还有这些请求会落到日志中&#xff0c;导致日志臃肿和转发到后台服务带来处理上的损耗。为了应对拦截…

java安装版本哪种好_我怎么知道我安装了哪个版本的Java?

问题描述我想开始玩java(最终到了可以为android或web编写基本小程序的地步)&#xff0c;但是我已经在我的计算机上(从过去的实验中)弄糟了java。我不确定我拥有哪个版本的Java&#xff0c;并且想知道是否有命令查看已安装且处于活动状态的Java版本。另外&#xff0c;哪个版本效…

UnitTest in .NET 系列文章目录

Photo &#xff1a;.NET单元测试的艺术文 | Edison Zhou这几天陆陆续续更新了UnitTest in .NET这个系列的文章&#xff0c;现将其总结成一个小目录。此外&#xff0c;特别推荐阅读Roy Osherove的《单元测试的艺术》一书&#xff0c;此文也是该书的精华内容的学习笔记总结。文章…

java蝇量模式_Head First设计模式——蝇量和解释器模式

蝇量蝇量模式&#xff1a;如果让某个类的一个实例能用来提供许多“虚拟实例”&#xff0c;就使用蝇量模式。在一个设计房子的平台中&#xff0c;周围要加上一些树&#xff0c;树有一个坐标XY坐标位置&#xff0c;而且可以根据树的年龄动态将自己绘制出来。如果我们创建许多树之…

如何运用领域驱动设计 - 聚合

概述DDD实战与进阶 - 值对象如何运用DDD - 实体如何运用领域驱动设计 - 领域服务在前几篇的博文中&#xff0c;我们已经学习到了如何运用实体和值对象。随着我们所在领域的不断深入&#xff0c;领域模型变得逐渐清晰&#xff0c;我们已经建立了足够丰富的实体和值对象。但随着实…

C++菱形继承

菱形继承概念&#xff1a; 1.两个派生类继承同一个基类 2.又有某个类同时继承着两个派生类 这种继承被称为菱形继承&#xff0c;或者钻石继承 举个例子&#xff1a; 菱形继承问题&#xff1a; 1.羊继承了动物的数据&#xff0c;鸵同样继承了动物的数据&#xff0c;当羊驼使…

EntityFramework Core动态加载模型,我们要知道些什么呢?

这篇文章源于一位问我的童鞋&#xff1a;在EntityFramework Core中如何动态加载模型呢&#xff1f;在学习EntityFramwork时关于这个问题已有对应童鞋给出答案&#xff0c;故没有过多研究&#xff0c;虽然最后解决了这位童鞋提出的问题&#xff0c;但是当我再次深入研究时&#…

C++多态的基本语法与原理剖析

多态分为两类 1.静态多态&#xff1a;函数重载和运算符重载属于静态多态&#xff0c;复用函数名 2.动态多态&#xff1a;派生类和虚函数实现运行时多态 静态多态和动态多态区别&#xff1a; 1.静态多态的函数地址早绑定&#xff0c;编译阶段确定函数地址 2.多态多态的函数地址…

从零开始开发 VS Code 插件之 Translator Helper

本文目录Translator Helper 介绍开发概述创建第一个VS Code Extension需求分析操作文本调用Google Translation API实现核心功能配置命令插件配置测试插件打包插件发布插件CI/CDIcon及README小结Translator Helper 介绍 微软 Docs 网站上线之后&#xff0c;我发现很多中文内容是…

【实战 Ids4】║ 又一个项目迁移完成(MVC)

迎周一&#xff0c;腊月十九&#xff0c;小年倒计时新年还有两周时间就要到了&#xff0c;学习可不能停&#xff0c;这几天一直在加班调休&#xff0c;周末也如此&#xff0c;不过也是趁着半夜凌晨的时间&#xff0c;继续迁移我的项目到IdentityServer4统一认证授权中心Blog.Id…

C++string容器-赋值操作

功能描述&#xff1a; 给string字符串进行赋值 代码如下&#xff1a; #include <iostream> using namespace std; #include <cstring>void test01() {string str1;str1 "hello world";cout << "str1 " << str1 << endl;…

为什么说云原生会成为未来企业技术变迁的趋势

云原生是当下的热点话题&#xff0c;但是很多人对云原生有很多误解&#xff0c;特别是传统产业物联网或工控、物联网行业对云原生显得"后知后觉"。与其在这里说是预测&#xff0c;不如说是现在进行时&#xff0c;只是由于传统产业本身的技术包袱和组织个人认识程度差…

C++vector容器-构造函数

vector数据结构和数组非常相似&#xff0c;也称为单端数组&#xff0c;在数组的尾段可以做插入&#xff0c;删除操作 vector不同于普通数组&#xff0c;vector可以动态扩展 动态扩展&#xff1a;并不是在原空间之后续接新空间&#xff0c;而是找更大的内存空间&#xff0c;然…

BeetleX网关之请求聚合

在网关服务中请求聚合是允许把多个请求打包成一个响应给请求方&#xff0c;这样不仅可以节省请求方的请求数量&#xff0c;还可以根据需求的情况整合不同业务数据响应请求。BeetleX.Bumblebee虽然并没有内置这一功能&#xff0c;但可以通过扩展的形式来支持请求聚合&#xff0c…

C++vector容器-赋值操作

vector赋值操作 功能描述&#xff1a; 给vector容器进行赋值 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <vector> //vector赋值操作void printVector(vector<int> &v) {for (vector<int >…

EntityFramework Core表名原理解析,让我来,揭开你神秘的面纱

上一节我们针对最开始抛出的异常只是进行了浅尝辄止的解析&#xff0c;是不是有点意犹未尽的感觉&#xff0c;是的&#xff0c;我也有这种感觉&#xff0c;看到这里相信您和我会有一些疑惑&#xff0c;要是我们接下来通过注解、Fluent APi、DbSet分别对表名进行如下设置&#x…

C++vector容器-容量和大小

vector容量和大小 功能描述&#xff1a; 对vector容器的容量和大小操作 函数原型&#xff1a; 代码如下&#xff1a; #include <iostream> using namespace std; #include <vector> //vector容器的容量和大小操作void printVector(vector<int > &v) {…