万能文件打开软件软件超市打开应用的软件
对于软件开发行业来说,2020 年是意义重大的一年,许多领域都取得了重大突破……
对于软件开发行业来说,2020 年是意义重大的一年,许多领域都取得了重大突破。本文将基于来自认证来源的数据、图表和事实,根据过去来预测未来。如果你想要了解软件行业在 2021 年会有哪些变化,请阅读本文,本文涵盖了云、边缘计算、容器、量子、区块链、人工智能、深度学习、批处理、流式处理、数据库、编程、软件架构、Web、App、低代码、无代码等重要方向。
2020 年是近代史上史无前例的一年。人类在过去一百年中都没有经历过像 COVID-19 这样的全球性大流行病。它影响了我们星球上所有的国家、部门和几乎所有的个人。
好消息是我们马上就会拥有疫苗,终于可以满怀乐观和希望迎接新的 2021 年。对于软件开发行业来说,2020 年是意义重大的一年,在许多领域都取得了重大突破。COVID-19 显著加快了数字化转型,而且 2021 年的数字化转型趋势会更明显软件超市。
在软件开发行业,一年几乎就是一光年。我没有更新旧帖子,而是创建了一个新的预测清单,预测 2021 年软件开发行业的重要技术趋势。
做预测是一项有风险的任务。但是我会使用来自认证来源的数据、图表和事实,根据过去来预测未来。如果你想要了解软件行业在 2021 年有哪些变化,请阅读本文。
在 COVID-19 期间,大部分行业遭受了沉重的打击,尽管只有少数行业。云是朝阳行业,在大流行期间,它实际上比以往任何时候都更强大。如果在云应用方面存在任何疑问和不确定性,COVID-19 已经消除了这一点。
像 Corona 这样的全球性灾难表明,我们不仅需要云升级规模,也需要降低规模,例如,当我们的服务需求显著下降时。想想旅游和运输行业,他们不得不维护昂贵的数据中心,尽管他们的市场下降了 90%。
在公有云中,我们希望有一个集中的数据中心来提供数据和计算能力。但在许多场景中,我们有相反的需求,例如,数据和计算能力接近终端用户。有些是非常低的延迟(5 到 20ms)、高带宽、监管原因、实时用例、智能且强大的终端设备等等。
虽然边缘计算是一个老概念,并且我们已经在内容交付网络 (Content Delivery Network,CDN) 中使用边缘计算,但近年来它正变得越来越流行。随着互联车辆(自动汽车、无人机)、在线游戏、物联网、智能设备和边缘 AI/ML 的兴起,边缘计算将在 2021 年及以后成为一个巨大的市场。边缘计算将在 2021 年成为关键的另一个原因是 5G 移动设备的兴起。
2021 年,两个行业集团将争夺边缘计算的市场份额。其中一个集团是公有云提供商,例如亚马逊、微软、谷歌,如下所述:
另一个集团是已经具备边缘基础设施的行业,例如电信公司、数据中心提供商、网络提供商。如果它们能够快速行动并利用它们的优势(例如,现有的基础设施),他们就有机会在这方面发挥领导作用。混合云提供商 RedHat(IBM)凭借其混合云平台 OpenShift 和 OpenStack 的参与,将成为这里的关键选手。最近,三星与 IBM 合作开发边缘计算解决方案:
在公有云供应商中,谁是领导者是毫无疑问的。在 2020 年第三季度,亚马逊以 32% 的市场份额领跑公有云市场,如下所示:
微软在其云产品方面表现强劲,在 2020 年实现了 48% 的年度增长。在 2020 年第三季度,微软的市场份额为 19%,而它在 2019 年第三季度的市场份额为 17%。
在 2021 年,亚马逊和微软将分别保持第一和第二的位置。然而,阿里巴巴将在 2021 年取代谷歌,因为它在 2020 年第三季度的市场份额为 6%,仅次于谷歌。
此外,多云倡议将在 2021 年获得更大的发展势头。许多公司也转向了多云策略。中情局(CIA)最近将其云合同授予了多个云供应商而不是单个供应商:
直到现在,亚马逊还不愿意加入多云倡议来保护它的市场份额。但正如我们 10 年前在微软身上看到的那样打开应用的软件,整个行业和社区比最大的单个公司更强大。最近,亚马逊已经悄然加入了多云倡议:
云原生计算基金会(Cloud Native Computing Foundation ,CNCF) 在多云运动中扮演着关键角色,可以说已经超过了 Linux 基金会。在 2021 年,我们可以看到 CNCF 有更多增长。此外,像 HashiCorp 这样的多云服务供应商会变得更加重要。
一些突出的项目也提供了与流行的特定供应商的云服务的 API 兼容性,例如 MinIO(提供兼容 AWS S3 的对象存储)。在 2021 年,将会有更多类似 MinIO 的倡议,这样我们就可以轻松地切换受欢迎的供应商的服务。
容器化是云原生 IT 的核心技术,无论是公有云、私有云,甚至是边缘计算。几年来,Kubernetes 已经成为领先的容器编排和管理技术。就像 Linux 之前统治着数据中心一样,Kubernetes 也统治着公有云和私有云。起初,谷歌是 Kubernetes 背后的主导力量,但是现在几乎所有的巨头科技公司都支持 Kubernetes。
在 2021 年,我们将看到更多对 Kubernetes 的采用,因为它是混合云或多云战略的核心组件。非传统企业应用程序,如 AI/ML、数据库、数据平台、无服务器和边缘计算应用程序也将转移到 Kubernetes。
另一方面,Docker 正在慢慢失去它作为一种现代化技术的魅力。已经有一些倡议来标准化容器格式和运行时,其中两个在最近几年得到了巨大的推动。一方面是 Kubernetes 引领的容器运行时接口(Container Runtime Interface,CRI)。另一方面是 Linux 基金会引领的开放容器倡议(Open Container Initiative,OCI)。
由于 Kubernetes 是容器生态系统中的巨头,2021 年将会是 Docker 终结的开始。从好的方面看,CRI 和 OCI 在 2021 年会获得更大的发展势头,尤其是基于 CRI 的容器将在 2021 年获得巨大的爆发式增长。
量子计算是这个清单上最具性的技术。就像数字计算机一样,它有潜力影响每一个领域。我已经创建了一份 2030 年代最热技术的清单,而量子计算排名第一:
换个角度看:如果我们把当今最先进的超级计算机当作正常人类,例如,一名象棋选手或者一个 8 年级数学学生,那么量子计算就是像马格努斯·卡尔斯(Magnus Carles)这样的超级天才,他可以同时和 50 名普通象棋选手对弈,或者像欧拉(Euler)这样的天才数学家。
在 2020 年,量子计算有了一些重大的突破和进步。在 2020 年 6 月,霍尼韦尔(Honeywell)声称其创建了最强大的量子计算机,打破了谷歌之前创造的记录:
许多政府和科技巨头都在探索和投资量子计算。谷歌和 IBM 是这个领域的两个最大的选手。谷歌甚至推出了一个开源库 TensorFlow Quantum (TFQ),用于制作量子机器学习模型的原型:
区块链 (分布式账本) 也是近年来开发的主要颠覆性技术之一。就技术而言,它有改变整个行业的潜力。虽然加密货币在普及这项技术方面发挥了重要作用。它在推动这项技术走向 Gartner 的炒作周期曲线(Gartner’s Hype Cycle curve)的“期望膨胀期”方面也扮演了主要角色。
许多流氓实体利用比特币 Bitcoin 的流行,制造项目来欺骗那些想在短时间内暴富的普通人。现在,区块链正经历炒作周期曲线的“幻灭低谷”。另外,政府正在干预加密货币来防止。最近,中国政府查获了一个加密货币“Plus Token 庞氏骗局”:
开源区块链,如以太坊(Ethereum),正在将代码放入区块中,使它能够用于智能合约,这是区块链的未来。
在 2021 年,区块链将更多地作为一种智能合约机制使用,有望进入“启蒙斜坡(Slope of Englishtenment)”阶段。区块链将在 2021 年获得重大爆发,中国已经将它纳入其雄心勃勃的 50 万亿“新基建”计划:
作为近来最热门的技术之一,人工智能在 2020 年也取得了许多突破。另一个有意思的趋势是,人工智能开始以“全民 AI(AI for all)”的口号进入所有领域。
在自然语言处理领域,GPT-3 是 2020 年 5 月取得的最大的突破。美国公司 OpenAI 创建了 GPT-3,使得使用深度学习创建类似人类的文本成为可能。仅仅过了 4 个月,当《卫报》用 GPT-3 撰写了以下文章时,全世界都一起为之震惊:
另一个有趣的发展是 AutoML 2.0,它支持工程自动化。在 2021 年,全周期人工智能自动化将取得重大进展,人工智能将更加平民化。
人工智能并不是没有偏见的,有道德的人工智能正变得越来越有吸引力。人工智能领域的另一个主要趋势是可解释的人工智能,即人工智能为什么做出某种决定需要一个解释。在 2021 年,随着欧盟对解释人工智能的决定制定法规,这些领域将取得重大进展。
人工智能在 2021 年及以后也将在航空业得到广泛应用。就在几天前,美国空军用人工智能作为副驾驶来驾驶了一架飞机:
谷歌和 Facebook 是深度学习和神经网络领域的两大主导者。谷歌的主要业务是搜索能力,它是自然语言处理领域的领先创新者。Facebook 的主要业务是社交网络,它必须处理图像、视频和文本。在图像处理领域,Facebook 是技术领导者,有许多创新打开应用的软件。
另一方面,开发人员喜欢用 PyTorch 工作,它以更好的开发人员工效学而更受开发人员的喜爱:
现代数据库的前景充满选择和广泛的变化。我们有经典的 SQL 数据库,主要是四大数据库:MySQL、 Oracle、 MS-SQL、 PostgreSQL。我们也有 NoSQL 数据库,主要由一系列数据库组成:文档、键值对、宽列、时间序列、搜索、图。还有许多类型的数据存储。
我们最近看到了所谓的全球分布式 ACID 事务数据库或者 NewSQL 数据库。谷歌凭借 Google Spanner 成为这个领域的领导者,Google Spanner 是首个水平读 / 写可伸缩的 ACID 兼容数据库。亚马逊也有一个水平可扩展 ACID 兼容数据库,Amazon Aurora,提供几乎所有的 SQL 功能,但没有水平写入伸缩。除了超大规模云提供商之外,CockroachDB 也是一个非常突出的 NewSQL 或分布式 SQL 数据库。
在 2021 年,数据存储生态系统将保持现在的样子,有很多选择。没有一种数据库可以满足所有的目的。在 2021 年,选择正确的数据也将是一个非常具有挑战性的任务,需要仔细考虑。
许多流行的数据库已经修改了它们的许可 (MongoDB、 Cassandra、 Redis、Kafka),因为超级规模的云提供商,尤其是亚马逊,滥用了它们的创新,赚了钱却没有回报。这一趋势在 2021 年将继续,初创公司或创新型公司将使用更严格的许可来保护他们免受云提供商的掠夺。
就在几年前,Hadoop 还是数据密集型计算或分布式批处理任务的默认选择。Apache Spark 目前是供应商中立的分布式批处理任务平台的首选,在大多数情况下几乎取代了 Hadoop。
这一趋势将在 2021 年继续,Spark 将被用作数据密集型计算的首选平台软件超市。Spark 是一个基于 JVM 的系统,需要非常大的资源,你将得到一份巨大的云账单。但不幸的是,目前还没有一个资源节约型的框架能匹配 Spark 的能力和成熟度。
所有主流的云提供商都有它们自己的云原生解决方案来进行数据密集型计算。我的个人建议是在 2021 年使用 Spark 而不是特定的云解决方案,以避免供应商锁定。
近年来,随着企业抛弃传统的 Lambda 架构,转而使用实时流处理框架,实时流处理正变得越来越流行。
此外,这里存在两种类型的框架。一种是以 Spark Streaming 为核心的基于微批量的平台。另一种是以 Apache Flink 为核心的低延迟流处理平台。
Apache Flink 在需要实时流处理(欺诈检测、异常检测、基于规则的警报、实时数据即时分析)的场景中超越了 Spark 流处理。
所有超大规模云提供商也提供了它们自己的解决方案。我建议在 2021 年选择 Flink,而不是 Spark 或者专有云解决方案,因为它在实时流处理方面具有无与伦比的能力。
现代数据架构相当复杂。它包含数据源、ETL 管道、数据仓库、数据湖、数据分析工具以及许多组件。下面是企业数据平台(ABM AMRO 的数据平台)的一个示例:
Snowflake 通过提供一个集中的数据源、单平台,以及在它上面构建许多不同的工作负载,从而彻底改变了现代数据架构。在经典架构中,数据需要在不同的平台上转移,但在 Snowflake 中只有一个数据的“信源”。
这不是适用于所有情况的完美案例。但是对于大部分情况,这将普及并赋能数据平台和数据仓库。正如甲骨文的 CEO 拉里·埃里森(Larry Ellison)所说,它已经动摇了数据仓库市场:
在 2021 年,我预期更多的创新将为企业案例带来像 Snowflake 一样的单数据平台。这对于许多公司将是一个巨大的帮助并改变游戏规则打开应用的软件。
快速的数字化转型正创造巨大的软件工程师供需缺口。尽管越来越多的新工程师加入这个行业,但仍然不够。近年来,低代码 / 无代码倡议的势头正越来越强劲。
市场上有许多低代码 / 无代码平台,主要是在 Web 开发领域,例如 Bubble。它们的成功也为 LCNC 在领域的开发铺平了道路:无代码应用程序开发、无代码人工智能、无代码机器学习。LCNC 工具可以通过如下所述的好主意促进业务或人员的发展:
而且,正如我去年预测的一样,公有云提供商正提供 LCNC 服务。微软提供 Power Apps,谷歌提供 AppSheet,AWS 提供 Honeycode 作为一个 LCNC 平台来快速构建应用程序。
在 2021 年,LCNC 将成为激烈竞争的领域之一,有许多创新、合并和收购。如果你是一个拥有伟大想法的个人或企业,请关注 2021 年的 LCNC。
近年来,微服务架构成为大型企业应用程序开发的首选。然而,设计微服务应用程序比设计“一刀切”单体应用程序要复杂得多。微服务架构需要一组最佳实践,正如我在下面这篇文章中所列出的:
最近,由于微服务架构的复杂性和在某些用例中的失败,人们对它产生了强烈的反感。Kelsey Hightower 在下面的推特中总结了对微服务的批评:
这与我们几年前所看的趋势形成鲜明对比,当时单体架构受到批评并被视为过时的。实际上,单体架构也是一种很好的架构,它特别适合我在下面这篇文章中提到的用例:
另一个近年来大肆宣传的软件架构是无服务器架构(Serverless Architecture)。亚马逊开创了无服务器计算的先河,推出了开创性的 AWS Lambda 服务万能文件打开软件,开发人员只编写代码,服务提供商托管服务器。这个架构也有人炒作,有人批评。像单体架构和微服务架构一样,无服务器架构也不是万能的,应该用在它适合的地方(例如,事件驱动和突发负载)。
在 2021 年,所有的软件架构(单体架构、微服务、无服务器)都将共存,因为它们都有各自的用例和优缺点。我建议在大型企业开发中选择微服务架构(传统上使用 SOA),在小型开发中使用单体架构,在事件驱动和突发负载中选择无服务器架构。
近些年,编程语言领域也经历了重大变化。传统的偏重的编程语言的市场份额正逐渐被更简单且对开发人员更友好的编程语言所占据。在 2020 年 1 月,我对需求中的语言进行了广泛的分析,将 Python 和 JavaScript 分别放在第一位和第二位:
最后,最受欢迎的编程语言排名网站 TIOBE 承认了这一变化,并将 Python 置于 Java 之上:
随着软件开发行业的蓬勃发展,以及大量新开发人员加入这个行业,更简单、对开发人员更友好的编程语言将在 2021 年更受欢迎。
Python 是数据科学中排名第一的编程语言,在除了底层编程之外的几乎所有领域也都是排名第二或第三的编程语言。
JavaScript 是 Web 开发领域毫无争议的头号语言,在领域(包括后端开发)中也越来越流行。它也是初学者的绝佳语言。
Java 正慢慢丧失其作为最流行的编程语言的受欢迎程度。然而,由于其传奇般的向后兼容性和不断更新(6 个月的发布周期,polyglot Virtual Machine GraalVM),它仍然是企业软件开发的首选编程语言。
C++ 是另一个近年来发生了重大变化的主流编程语言。几天前刚刚发布了 C++20,它将完全改变 C++ 截至目前的编程方式。这是近年来最具破坏性的 C++ 版本之一,将极大地影响其在 2021 年及以后的流行度。
最近几年,编程领域的另一个有趣的趋势是现代编程语言的兴起。比较老的语言存在过去的包袱,不能快速变迁(Java),或者通过增加越来越多的功能而变得臃肿且令人望而却步(C++)。
现代的比较新的编程语言没有过去的包袱,能够满足当今开发者的需求。它们大多非常关注开发人员的工效学,支持现代功能,例如类型推理、null 安全性、表达力强、简洁。其中许多还被设计来利用现代硬件和现代基础设施(云、多核、GPU、TPU)。
以 Rust、 Go、 Kotlin、 Swift、 TypeScript 为首的现代编程语言正日益流行,正如我在下面这篇帖子中预测的那样:
其中,随着行业的注意,Rust 将在 2021 年取得突破。在过去 5 年中,根据 Stack Overflow 开发者调研,它是最受喜爱的编程语言:
科技巨头终于在安全敏感的复杂项目中使用 Rust 而不是 C/C++。微软最近声明,他们将使用 Rust 来修复安全漏洞:
谷歌的 Go 已经是主流且成熟的编程语言。随着 Go 2 release 规划的大量改进,它将在未来获得更多人气。
JetBrain 的 Kotlin 已经成为 JVM 生态系统中第二流行的类型化编程语言。在 Android 应用开发中,它已经超过了 Java:
苹果公司的 Swift 已经取代 Objective-C,成为 macOS 和 iOS 的首选编程语言。它在领域也有被采用。
在科技巨头的支持下,预计包括 Rust 在内的现代编程语言将在 2021 年获得更多吸引力和普及使用。
大多数面向用户的企业应用程序是 Web 应用或移动应用。在 Web 开发中,基于 JavaScript/TypeScript 的客户端 Web 框架已经占据主导地位很多年了。趋势是使用 JavaScript 框架进行 UI 开发,使用服务端框架进行后端开发,其中前后端是分离的服务。
Facebook 的 React 在客户端 Web 框架中处于领先地位。它是行业中引领潮流且应用最广泛的框架。如果你想了解更多关于基于 JavaScript 的客户端框架,可以阅读我下面这篇文章:
Vue.js 在中国也是头号框架,因为 Vue.js 的创造者(尤雨溪,Evan You)是一名华人前谷歌开发者打开应用的软件。不幸的是,这种与中国的联系引起了大企业的安全担忧,Vue.js 在美国 / 欧洲的采用率比较低。
谷歌的 Angular 落后于 React 和 Vue.js,但仍然是一个稳定的框架。然而,最近最具性的 Web 框架是 Svelte。与框架不一样,Svelte 是一个非运行时框架,专注于编译步骤。
在 2021 年,所有主流的基于 JavaScript 的框架都将彼此学习,吸收框架的特性。在 2021 年,它们将更加趋同。
服务器端框架是端到端框架,提供端到端 Web 开发,包括服务端渲染的视图层。但是正如之前所说,如今的趋势是只在后端使用它们。
基于 JVM 的 Spring 框架在企业开发领域是排名第一的服务端框架。它还提供开发小型和大型复杂应用所需的所有必需功能:控制反转、依赖注入、云原生开发、响应式、事件驱动应用开发、快速应用程序开发。在 2021 年,Spring 仍将保持企业的头号后端框架。在之前的一篇文章中,我将 Spring 作为排名第一的服务端 Web 框架软件超市。
许多初创公司和小型公司都希望有一个包括视图层的端到端框架,以便快速开发应用程序。基于 Python 的 Django、 PHP Laravel 和 Ruby on Rails 在 2021 年将成为他们的绝佳选项。
在移动应用开发领域,有 4 个主要趋势:原生应用开发、跨平台应用开发、混合应用开发和基于云的应用开发。
原生应用开发提供了最高的灵活性,拥有最好的性能和用户体验。但由于企业需要保留两个独立的团队,因此开发成本最高。
跨平台应用开发正变得越来越流行,因为 iOS 和 Android 应用开发可以使用相同的代码库。尽管开发成本低,但是不够灵活,性能也不如原生应用。
近年来,基于云的应用变得越来越流行,其数据和主要业务逻辑保存在云端。特定设备的瘦客户端被开发来连接云端并从中获取数据。虽然对于数据密集的应用程序是一个不错的选择,但对于普通应用开发来说,它还不是主流。
尽管跨平台应用开发正迎头赶上,原生应用开发仍然是企业普通应用开发的更好的选择。在 2021 年,一般企业将偏爱原生应用开发,而初创企业和小公司将偏爱跨平台应用开发。
跨平台应用开发正变得越来越流行,因为它的开发成本比较低。市场上有许多跨平台应用开发平台软件超市,但 Flutter 和 React Native 是其中的领导者。
谷歌的 Flutter 是一个相对比较新的框架,但近年来非常流行。它提供了一个功能强大的 UI 工具箱,用来从单一代码库构建漂亮的原生编译的移动、桌面和 Web 应用程序。然而,Flutter 还不像 React 那样是 Web 开发中的主流框架。Flutter 使用了一种现代编程语言——Dart,一种快速发展的效率非常高的编程语言。就性能而言,Flutter 比 React 有优势。它还提供了更好的开发者工效学,而且开发人员喜欢使用 Flutter 工作:
微服务架构和无服务器近些年正变得越来越流行。微服务或纳米服务需要通信,通常,同步通信用得比事件驱动的异步通信多。即使传统的单体应用是通过异步通信进行通信的。
REST 是 2020 年最主要的 API 技术。REST 是一种基于 Web 技术的通信标准。它在行业中已经有相当一段时间了(20 年)。REST 和 SOAP 几乎同时出现,但当 SOAP 几乎被认为是遗留技术时,REST 将继续统治。无论是大型企业还是小型初创公司,都在使用 REST。在 2021 年,REST 仍将占据主导地位。
在 API 开发领域,也有一些优秀的候选者。最突出的是谷歌的 gRPC。与 REST 不同,gRPC 是一个类似 SOAP 的 RPC 协议。谷歌吸取了旧 RPC 协议的教训,创建了适合现代软件开发需求的 gRPC。gRPC 使用高性能的消息格式 Protocol Buffers(也是由谷歌开发),而不是 JSON。因此,与 REST 相比,gRPC 性能更高、可读性更差。在机器对机器的通信中万能文件打开软件,这是比较好的选择。
另一种越来越流行的 API 技术,尤其是对于 UI 开发者,是 Facebook 的 GraphQL。通常,UI 需要对后端进行大量 API 调用来获取所有它所需的数据。GraphQL 允许聚合 API 来减少 UI 和后端之间的通信。GraphQL 的一个主要缺点是,它不适合高安全性要求的开发。
这里,我使用了当前的趋势、数据和事实对 2021 年最重要的软件开发趋势进行了 21 个预测。整个软件开发行业要大得多,我无法涵盖所有重要的领域。
另外,我还简要地讨论了一些话题,例如数据存储,它需要一篇单独的文章。另一方面,我详细写了一些话题。另一个有趣的事实是,科技四巨头:谷歌、Facebook、亚马逊和微软,是如何主导几乎所有的软件开发领域的。我希望这篇文章能让你 360 度地了解 2021 年的软件开发趋势。
之前,给大家发过三份Java面试宝典,这次新增了一份,目前总共是四份面试宝典,相信在跳槽前一个月按照面试宝典准备准备,基本没大问题。
内容包含java基础、javaweb、mysql性能优化、JVM、锁、百万并发、消息队列,高性能缓存、反射、Spring全家桶原理、微服务、Zookeeper、数据结构、限流熔断降级等等。
获取方式:点“在看”,V信关注上述Java最全面试题库号并回复【面试】即可领取,更多精彩陆续奉上。
免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186