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 和内存的耗费很高,在云环境中,账单较大。

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

大数据流处理:Flink

以前实时流处理是不可能的,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

推荐阅读:

原文地址:https://www.cnblogs.com/yogoup/p/12114176.html

时间: 2024-11-06 07:13:39

2020年软件开发趋势的相关文章

2020 年软件开发趋势预测有哪些?

企业上云已成不可逆的趋势,全面云计算时代宣告来临,微服务已成软件架构主流,Kubernetes 将会变得更酷,2020 年还有哪些技术趋势值得观察? 作者 | Md Kamaruzzaman 译者 | 无明 策划 | 小智 基础设施:条条道路通云端 对于云厂商来说,2019 年是硕果累累的一年.不仅初创公司在使用云计算,那些很注重安全的“保守派”公司(如政府机构.医疗保健机构.银行.保险公司,甚至是美国五角大楼)也在迁移到云端.这种趋势在 2020 年将会继续,大大小小的公司都将(或者至少有计划

敏捷软件开发---闲话敏捷

第一篇状态模式,其实比本文更先发表.但是我终觉得要写点什么,来开始我的敏捷的旅程.知道看了bob大叔这本书 以后,我才知道敏捷到底是怎么回事,纯属个人东拉西扯,所以就叫闲话敏捷. <敏捷软件开发>问世与2003年,距今已有13个年头了,能够历久长盛不衰,必然有其光辉的一面. 以下都是个人的经验结合<敏捷>讲解和分享一些东西. 敏捷软件开发 乍一看有点摸不着头脑,不知道是什么东西. 软件开发从计算机问世直接快60个年头了.软件也从非常简单的机器语言,到现在的面向对象. 在这个过程中,

2017年APP软件开发新趋势

郑州APP开发公司商宇科技表示:对于很多行业而言,2016年有着很多的机遇和挑战,也有很多的困难险阻.对于手机APP软件开发行业也是一样,2016年是国内逐渐进入移动互联网时代的第四个年头,APP软件开发行业越来越火热.那么,2017年手机APP软件开发行业又会发生什么样的变化呢?2017软件app开发的前景又是如何呢??2017年APP软件开发新趋势1.2017年手机APP软件开发行业前景分析据郑州APP开发公司商宇科技获悉,截止2016年11月底,我国移动互联网用户已经接近10亿.在2016

软交所--未来软件开发的六大趋势

软件开发公司与时俱增,软件开发的技术与时俱进,如果能更好的开发管理正版软件,就要有更好的软件开发技术,我们就来分析下软件开发领域正在兴起的六大重要趋势: 1. 设备和用户界面多样化 各种廉价互联网设备越来越多,用户需要通过各种方式去访问和处理数据,而且随之而来的是用户界面也越来越多样化,向自然和直观的交互发展,包括基于触摸.基于语音和基于相机的等等.Windows 7目前为触摸屏应用提供了良好支持,而Silverlight和WPF.MFC都开始支持基于相机和多点触控的交互. 2. 分布式开发 分

解析未来软件开发的五大趋势

软件开发行业是目前发展最快的行业之一,在世界各地都有对软件开发者的需求. 同时,将来的工作也成为了话题,另一方面,人们希望无论是谁都有机会得到工作时间短.工作量少.更好的工具等. 另一方面,机器人是否代替人类,人工智能是否抛弃伦理和道德,我们是否使用更多等,提出了很多问题. 许多问题我真的没有答案.未来的工作将与今天大不相同,要求人们用不同的思维方式和技能来控制自己的职业生涯.不论是好是坏都在于人们任何人随之工做和思维模式转型的自我意识.如今,来共享我预估的5个转变,及其对您在开发软件职业发展中

华为软件开发云测评报告一:项目管理

体验环境 体验方式:PC端 系统:Windows 64位 浏览器类型:Chrome浏览器 浏览器版本:49.0.2623.110 m 体验时间:2017.05.11 测试目的 了解华为软件开发云的项目管理服务功能,分析其优缺点: 瀑布化开发到敏捷开发的转型分析,以及未来软件开发模式的发展方向: 产品简介 产品名称:华为软件开发云 定位:软件开发云(DevCloud)是集华为研发实践.前沿研发理念.先进研发工具为一体的研发云平台,面向开发者提供研发工具服务,让软件开发简单高效. 产品slogan:

软件工程:传统软件工程 vs 敏捷软件开发

前言 软件工程(Software Engineering): 是一种层次化技术. 将系统化的.规范的.可量化的方法应用于软件的开发.运行和维护,即将工程化的方法应用于软件. 研究"建立和使用一套合理的工作原则,以便经济地获得可靠的.可以在实际机器上高效运行的软件"的方法. 敏捷软件开发(Agile software development): 一种应对快速变化的需求的一种软件开发方法.基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作. 一.传统软件工程 (一)产生背景 随着

App软件开发的10个常用技巧

移动应用市场用户争夺战日益激烈,原来做APP拼想法拼创意拼是否抓住用户痛点.现在,精细化用户体验成为了一个APP能否留存用户的关键问题,一旦用户觉得体验不畅,马上就有竞品APP后补,如何开发高性能的移动应用,小编总结了以下十大技巧: 1.   规划评估App开发的核心功能 用户体验开始于APP开发初始规划阶段,当你梦想开发一个APP改变世界之前,先想好APP主要解决用户的哪些真实需求,提炼出APP的核心功能,一个APP并不是功能越丰富越好,核心功能才能为用户带来不可替代的价值. 登录APIClo

2017年App开发趋势介绍详解(建议收藏)

2017 年的开年,朋友圈先被一圈小程序的新闻刷爆了.小程序未出之前,许多媒体声称这将颠覆App.可是小程序推出之后,媒体的声音不像之前那样一边倒了.App开发人员估计还要继续忙碌下去,因为整个App开发行业的创新依然保持着非常强劲的增长势头,而对于很多企业而言,移动营销策略也会显得愈发重要. 身处在这个 " 移动 " 的时代,作为创业者的你是否也想从这个庞大的市场里分到一块蛋糕呢?毋庸置疑,移动领域里的创业速度将会变得越来越快,对于即将到来的 2017 年,这个行业又会发生些什么呢?