2022年软件开发趋势的22个预测

的PyTorch。

TensorFlow在其2.0版本中对自己进行了改造,并引入了动态图、python友好性和许多其他变化。它还提供了Tensorflow.js来在浏览器中使用AI库。Tensorflow的另一个创新是Tensorflow Lite,它提供了在移动和网络上部署Tensorflow。Tensorflow还发布了Tensorflow Extended(TFX),这是一个用于部署生产ML管道的端到端平台。

PyTorch是另一个占主导地位的人工智能库,它将动态图和Python作为第一类公民引入。它对开发者也更加友好。它还发布了PyTorch Mobile,在Android/iOS设备上使用PyTorch。它通过PyTorch Profiler提供更多的开发者友好性,以调试大规模的人工智能模型。

TensorFlow仍然是最流行的人工智能库。

2022年软件开发趋势的22个预测

来源。 Stack Overflow Developer Survey, 2021

在2022年,Tensorflow将继续成为主导的人工智能库,因为它具有更好的可视化和大规模采用。

10.数据库 多模式和多用途的数据库正在兴起

在过去的几年里,我们看到了使用适合特定使用情况的特殊数据库的趋势。

  • 用于具有结构化数据的事务性用例的 RDBMS
  • 用于低延迟、分布式数据库的 宽列数据库
  • 分布式缓存的 键值存储
  • 用于极端关系型数据的 图形数据库
  • 用于半结构化数据的事务性使用案例的 文件数据库
  • 用于全文和高级搜索的 搜索引擎(例如,基于位置的搜索)。
  •  分布式SQL,用于低延迟的分布式数据库,具有事务性保证。
  • 用于数据仓库和数据分析的 OLAP数据库

这种方法的一个缺点是,我们经常需要为一个应用提供多个数据库。现在有一个新的趋势,每个数据库将提供一个以上的模型,并为一个以上的用例服务。PostgreSQL(多模型),Azure CosmosDB(多模型,多用途),SingleStore(OLAP和OLTP)是这些数据库的先驱。在2022年,我们还将看到其他提供多模型和多用途的数据库。

11.数据密集型计算 Spark与公共云服务

Apache Spark几乎已经取代了Hadoop生态系统,成为默认的数据密集型计算框架。Spark还使用相同的API提供近乎实时的流处理。

近年来,Apache Beam获得了很大的吸引力,因为它提供了一个统一的编程模型来定义和执行一个数据处理管道。Batch和Stream。谷歌的Cloud Dataflow是一个强大的服务,实现了Apache Beam。另外,Azure和AWS也提供了Batch处理服务。

如果你想与云无关,你应该使用Spark或Cloud Dataflow(GCP)。

12.实时流 它是Flink与公共云服务的对比

虽然近乎实时的流媒体对90%的用例来说是足够的,但有一些用例(欺诈检测、异常检测、基于规则的警报、实时数据的特别分析),你将需要实时流。

在实时流方面,Apache Flink毫无疑问是市场领导者。它还支持Apache Beam API,并提供供应商中立的解决方案来处理实时流数据。

如果你想避免被供应商锁定,你应该使用Flink而不是公共云的特定技术。而且,Flink比公共云供应商提供的类似服务更强大。

13.DevOps 现代DevOps的智能观察能力

几年前,可观察性只对大型企业至关重要。然而,随着云原生开发和微服务架构的迅速崛起,可观察性对现代软件开发至关重要。除了传统的可观察性(日志、监控、追踪),我们还需要Kubernetes集群的遥测和拓扑数据。另外,我们将看到使用人工智能与时间序列数据库来开发智能可观察性平台的趋势。在2022年及以后,智能的、云原生的可观察性将继续增长。

14.快速应用开发 低代码/无代码(LCNC)将继续蓬勃发展

低代码/无代码(LCNC)倡议旨在降低开发网络/移动应用程序的障碍,而不需要开发人员(或低数量的开发人员)。那我们在未来几年仍然需要开发人员来构建应用程序。但也有许多用例,低代码/无代码框架/工具可以大大加快应用开发的速度。

在2022年,我们也将看到越来越多的LCNC的使用案例。

  • 网络/移动应用程序开发
  •  网站和登陆页面
  •  使用对话流的智能聊天机器人
  •  电子商务
  •  机器学习
  •  人工智能(视频、音频、图像)
  •  工作流程管理
  •  使用RPA的流程自动化

15.软件架构 企业的微服务和微前台

我们目前有三种后端应用开发的选择。(模块化)单片机、微服务和无服务器。它们都有各自的长处和短处,在特定的用例中大放异彩,而在其他用例中则失败。微服务使应用开发成为可能,在这种情况下,多个团队在特定的应用程序上工作。此外,微服务与云原生开发完美契合,因为较高的运营成本可以通过较低的代码复杂性卸载到云端。因此,对于企业来说,微服务将是2022年的首选架构。

如果你想了解设计微服务架构的最佳实践,那么你可以阅读我的博客。

我们目前在前端应用开发方面有两种选择。Monolith和Micro-frontends。我们经常淡化前端应用的复杂性,因为大多数建筑师都是来自后端开发。但前端单片机和后端单片机一样糟糕。因此,对于企业的前端开发,微前端将是2022年的首选架构。好消息是,所有流行的JavaScript前端框架都支持微前端。

16.软件开发 AI将协助开发人员和QA

我认为人工智能是人类的助手或帮手。人工智能可以帮助繁琐的、可预测的、重复的、困难的任务,而人类可以专注于更多发人深省的、智能的任务。在软件开发中,我们也必须做许多枯燥、可预测和重复的任务。人工智能可以使用GPT-3和其他NLP库将这些任务自动化。人工智能已经被用来实现测试的自动化。

一些人工智能驱动的助手也可以为开发者自动生成源代码。Tabnine, GitHub Copilot, Codota.虽然它们在协助软件开发方面处于早期阶段,还不是很成熟,但我预计这些人工智能驱动的代码助手将在2022年成熟起来,这样我们就可以更快地开发和交付。

17.编程(主流)Python将引领潮流

近年来,我们经历了Python作为一种通用编程语言的迅速崛起。在流行的编程语言排名网站TIOBE上,最终,Python占据了领先地位,成为目前第一大编程语言。

2022年软件开发趋势的22个预测

 

2022年软件开发趋势的22个预测

来源。 TIOBE

作为一个业余项目开发的编程语言,降低了进入编程的门槛,这对Guido van Rossum和Python的其他语言设计者来说是一个了不起的声明。Python是简练的、解释性的、动态的、简明的、简单的、强大的。但Python的USP是它的简单性和较低的入门门槛。Python是数据科学和数据工程领域的第一大编程语言。但在许多其他领域,它是第二或第三位的编程语言。

在2022年,Python将继续占主导地位,因为许多新的开发人员将加入,他们可能会从Python开始。在选择一种编程语言之前,仍然值得关注这个领域。以下是我对编程语言的建议。

  • 网络开发。JavaScript,TypeScript
  •  后台开发。Java, Golang, JavaScript, TypeScript
  •  安卓开发。Kotlin
  •  iOS开发。Swift
  •  系统编程。C, C++, Rust, Golang
  •  数据科学/数据工程。Python

然而,如果你是一个学习新编程语言的新开发者,你可以从Python开始。

18.编程(企业)Java反击战

在很长一段时间里,Java是无可争议的第一大编程语言。它是解释型的、适度复杂的、多线程的、垃圾收集的和强大的编程语言。此外,JVM是经过战斗考验的、强大的、成熟的,并且是业界最好的进程虚拟机之一。Java是大型、单体企业应用的完美选择。

不幸的是,随着微服务和无服务器的兴起,Java处于不利地位,因为JVM似乎太大(内存占用率高)和太慢(启动时间慢)。另外,在基于容器的现代开发中,容器的资源是有限的。因此,人们开始在云原生开发中使用灵活、小型、快速的语言,如Node.js、Golang。

最后,Java社区开始用GraalVM提供现代版的Java。这是一个JDK发行版,提供AOT编译、多语言编程。此外,它可以直接编译成Native代码,完全适合云原生开发(内存占用少,首次启动时间短)。另外,Java 17终于引入了许多现代功能(如模式匹配),使Java对开发者具有吸引力。

凭借其严格的、无可比拟的向后兼容性、GraalVM、最新的变化,Java将在2022年成为企业软件开发的第一大编程语言。

19.客户端网络框架 企业的React和Angular

在现代网络应用程序开发中,基于JavaScript/TypeScript的框架占主导地位,而且这一趋势将在2022年继续下去。有许多基于JavaScript/TypeScript的网络框架,但有两个框架从其他框架中脱颖而出。其中一个是Facebook的React。另一个是谷歌的Angular(Angular 2+)。React是这两个框架中最流行的,没有意见的,创新的,灵活的,对SEO友好的框架。另一方面,Angular是一个有主见的、端到端的、模块化的、安全的框架,有严格的约定俗成的配置。Angular也是一个 "包含电池 "的框架,可以通过强大的CLI开发企业级的Web应用。

2022年软件开发趋势的22个预测

 

资料来源。 NPM Trends

在2022年,React和Angular也将继续引领网络开发。虽然Vue.js是最受欢迎的框架,但由于安全问题和过于依赖一个人,它不会在行业中看到大规模的采用。

20.服务器端框架(Java)。用于微服务和无服务器应用的本地框架

Spring MVC/Spring Boot是Java中最主流的服务器端框架。如前所述,Spring使用的是传统的OpenJDK,在云原生Java开发中慢慢失去了它的魅力。Redhat的Quarkus是云原生开发的头号框架,因为它使用GraalVM而不是传统的OpenJDK。因此,由Quarkus开发的应用程序更小,启动时间更快,而且更适合基于容器的开发。

最后,Spring已经宣布了Spring Native,它将使用GraalVM进行云原生开发。

它仍然是实验性的,将在Spring 6发布时(2022年10月)发布。Spring Native的一个优点是,你可以将你的Spring MVC项目转换为Spring Native项目,而不需要重写任何/少量代码。

因此,如果你在2022年开发云原生Java应用,可以考虑使用其中一个Java原生框架。然而,对于单片式Java开发,你仍然可以使用基于传统(OpenJDK)的框架(如Spring MVC)。

21.应用程序开发。本机应用,更灵活

2022年,手机用户的数量将继续增长,应用程序的下载量也将继续增长。2022年,预计将有1710亿个App被下载。移动应用开发是当今软件开发中的一个广阔市场。

2022年软件开发趋势的22个预测

 

资料来源。 Statista

目前,有四种方式来开发移动应用程序。本地应用开发、跨平台应用开发、混合应用开发和基于云的应用。

本地应用开发和跨平台应用开发是其中使用最多的。虽然本地应用开发是最昂贵的(在时间/资源方面),但它提供了最大的灵活性。通常情况下,企业更喜欢本地应用开发的灵活性。

跨平台应用开发提供了在iOS/Android上使用几乎相同代码的可能性。创业公司更喜欢这种方式,因为他们喜欢跨平台应用开发的开发速度和较低的维护成本,但代价是灵活性较低。

2022年,由于跨平台应用开发不如本地应用开发灵活,本地应用开发将处于领先地位。

22.API技术。REST、gRPC和GraphQL将同时存在

现代软件开发通常是API驱动的开发。客户端应用程序(网络、移动)通过API调用与后端应用程序进行通信。同时,后端应用也通过API调用与对方进行通信。服务之间的通信是软件开发行业的一个古老范式,有许多技术可以满足这一要求。但在这些技术中,有三种技术脱颖而出。REST、gRPC和GraphQL。

REST是其中最古老的技术,开发于2000年。它使用万维网和HTTP技术进行客户-服务器通信。它是最成熟和最广泛使用的。

谷歌创建了gRPC,作为一个基于旧的RPC(远程过程调用)技术的服务器到服务器的通信API。在这里,每个请求都被结构化为一个函数调用。与使用文本格式(如JSON、XML)传递信息的REST不同,gRPC使用基于协议缓冲区的二进制格式。因此,与REST相比,gRPC在服务与服务之间的通信方面更有效率和速度。

如果数据结构复杂,网络客户端到服务器的通信就会有很多往返。为了缓解这个问题,Facebook在2015年开发了GraphQL API。在GraphQL中,每个客户端可以为特定的用例定义数据结构的形状,并在一次旅行中获取所有数据。

从上面我们可以看到,这三种API技术(REST、gRPC、GraphQL)都有其擅长的用例,而角落里的用例则不那么好。在2022年,开发者和公司也会根据他们的用例使用这三种中的一种。

posted @ 2022-02-12 23:23  智慧园区-老朱  阅读(122)  评论(0编辑  收藏  举报