2020年软件开发趋势

Posted yogoup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020年软件开发趋势相关的知识,希望对你有一定的参考价值。

基础设施:终将上云

技术图片

现在云服务越来越普及了,不光是创业公司在使用云服务,连一些很保守的公司,和一些对很重视安全的公司都开始上云了,2020年上云的势头将更猛,各种体积的公司、各种类型的公司都会向云迁移。

容器化:Kubernetes 将会更酷

在容器编排领域,主角包括 Kubernetes, Docker Swarm, Mesos。

Kubernetes 目前的优势很明显,增长势头强劲。

云是分布式环境,而 Kubernetes 是操作系统(分布式的 Linux)。

2020年 Kubernetes 会更加强大,将成为云环境的脊柱。

软件架构:微服务成为主流

技术图片

这是 Google 统计的微服务趋势图。

微服务的快速升温的主要原因是其非常适合云环境和快速开发的特性。

开发:Python 将吞噬世界

机器学习、数据分析、数据处理、web 开发、企业级开发 ……,Python 无处不在。

技术图片

TIOBE 统计结果显示:Python 已经成为 Java、C 之后的第3大受欢迎语言。

而且增长势头相当猛,2019年从 5% 涨到了 10%。

2020年 Python 会继续快速发展,缩小与Java和C的差距。

Python 为啥飙升?主要是因为学习门槛低,有非常优秀的社区,被数据科学领域喜欢。

企业级开发:Java 和 JVM 为王

从上面 TIOBE 那张图中已经看到 Java 的主导地位。

JVM 已经成为很多语言的运行环境,例如 Kotlin, Scala, Clojure, Groovy。

Oracle 对 Java 收费了,但幸好还有 OpenJDK 供我们免费使用,很多公司会提供企业级的支持。

由于大小和速度的原因,JVM 语言不适合如今的 Serverless 模式,但目前在企业级稳定性和信任程度上,还没有比 Java 更好的替代者,所以几年内 java 仍将领先。

Java 企业级开发:Spring

技术图片

曾经 Spring 与 JavaEE 有着激烈的竞争,目前 Spring 完胜,因为其开发方式更加积极、对环境的变化响应更快。

2020年 spring 仍是 no. 1 的框架。

目前有2个正在开发的项目,极具吸引力,使Java更小、更灵活,从而使Java成为 Serverless 的一个好的选择。

他们是:Micronaut 和 Quarkus。

开发:Rust, Swift, Kotlin, TypeScript 会有一个突破

曾经很多人认为不再需要新的语言了,Java, C, C++, javascript, Python 已经足够满足所有的需求了。

然而很多有趣的语言出现了,例如 Rust, Swift, Kotlin, TypeScript。

原因是之前的主流语言对新的硬件特性不能很好的利用,例如多核、更快的网络、云环境。

还有一个因素在于这些现代的语言更加关注开发者的体验,可以更快更简单的开发。

技术图片

这是开发者喜爱的语言调查结果。

最近,微软和亚马逊都对 Rust 很感兴趣,会提供支持和赞助。

Kotlin 也成为了 Java 的有利竞争者,Google 在 android 中对 Kotlin 进行了官方支持。

Angular 使用 TypeScript 作为其主要的开发语言,替代了原始的 JavaScript。

React 和 Vue 也都开始支持 TypeScript。

Web:JavaScript 继续主导

技术图片

以前,前端开发是在后端框架中完成的,例如 JSF, Ruby on Rails, Django, Laravel,然后在服务端渲染出来。

2014年被 AngularJS 改变了,之后大量优秀的web框架出现了,例如 Angular 2+, React, Vue.js, Meteor.js。

JavaScript 框架领域的创新性极强,而且随着微服务架构的升温,JavaScript 框架会继续主导前端开发领域。

JavaScript Web 框架:React 领先

React 带来了很多新鲜的创新的前端开发思想,例如事件源、虚拟DOM、单向数据绑定、基于组件的开发等等。

Google 从中吸取了经验,废除了 AngularJS,重新开发了 Angular2+。

技术图片

Angular 也是一个坚实的框架,尤其是在企业开发中,Google 仍将继续大力支持。

Vue 也是非常优秀的,被很多机构和社区支持。

APP 跨平台混合开发:React Native

这个领域已经有很多选择,例如:Xamarin、Ionic、React Native、Flutter。

Facebook 基于成熟的 React 框架开发的 React Native 取得了高度成功。

技术图片

Google 推出了 Flutter,提供了更好的性能,但是,需要使用非主流语言 Dart。

2020年 React Native 会继续主导此领域。

API:REST

这个领域除了传统的 REST,也有其他选择,Google 的 gRPC,和 Facebook 的 GraphQL。

gRPC 是 Google 开发的强大的远程方法调用技术,使用 Protobuf 替代了 JSON 作为消息格式。

Facebook 开发的 GraphQL 用作聚合层,避免了频繁的 REST 调用。

2020年,REST 依旧是 API 的主导,gRPC 和 GraphQL 提供辅助功能。

数据库:SQL 主导,分布式 SQL 崛起

曾经很多人大炒 NoSQL,说 NoSQL 比 SQL 更好,将替代 SQL,但现在,大家都意识到离不开SQL。

数据库排行榜:

技术图片

top 4 都是 SQL 数据库,这是因为 SQL 提供了稳定的 ACID 事务保障,这是很多商业应用所需要的。

NoSQL 数据库提供了水平扩展能力,但忽略了 ACID。

SQL 的 ACID、NoSQL 的水平扩展,都是我们需要的,所以 NewSQL 兴起了,也就是 Distributed SQL。

大数据计算:Spark 继续闪耀

技术图片

Spark 已经替代了 Hadoop 成为企业分布式批处理的王者。

Spark 瞄准了 Hadoop Map-Reduce 的弱点,例如用内存处理代替高成本的落盘操作。

Spark 也有明显的不足,对 CPU 和内存的耗费很高,在云环境中,账单较大。

很多公司希望能有新的框架能减少他们的账单,但很可惜,现在还没有。

以前实时流处理是不可能的,Spark Streaming 通过微型批处理提供了近似实时的流处理能力。

Apache Flink 改变了世界,提供了实时流处理能力。

直到 2019,Flink 还没有竞争过 Spark,但阿里扭转了局势。

2020,Flink 将成为实时处理领域的第一选择。

Flink 的不足与 Spark 一样,极其消耗资源,企业的成本较高。

字节码:WebAssembly 会开始大量应用

JavaScript 最大的限制就是,还有就是单线程,无法利用现在硬件的优势,例如多核、GPU。

所以,很多计算密集型的应用,例如游戏、3D图形,就无法运行在浏览器上。

Mozilla 主导开发了 WebAssembly,是服务于浏览器的底层字节码格式,可以支持其他开发语言运行与Web,例如当前已经支持 C++, Rust。

翻译整理自:

https://towardsdatascience.com/20-predictions-about-software-development-trends-in-2020-afb8b110d9a0

推荐阅读:

技术图片

以上是关于2020年软件开发趋势的主要内容,如果未能解决你的问题,请参考以下文章

Gartner最新趋势分析:软件机器人将是2020年十大战略科技发展趋势之一

2020年软件测试的五大趋势

2020 年 DevOps 七大发展趋势

InfoQ 2020 年 JavaScript 和 Web 开发趋势报告

2021 软件开发的 5 大趋势,低代码无代码得到了验证!

20个2021年游戏软件开发趋势预测