“我的”未来技术选型

技术

先给出结论,后面有机会建立新团队或启动新项目时,我会优先考虑如下技术选型(这里列出对于大部分系统开发需要的主要技术):

综合考虑了正确性、健壮性、开发效率、易学习、人才等各维度。当然,无论何时,_将Java作为后端的一个备选都算一个明智的选择_。特别是在现有项目已经选择了 Java 或者团队有较多的 Java 人才的时候,但是,若有更好的选择,为何不选呢?

更多:中间件、大数据、边缘计算

前端的技术选型聚焦在前/后端的编程语言及框架上。因这些应用/业务层的开发工具更具普适性。而一些中间件、大数据、边缘计算等在前期可能并不是必需的,或者更多会基于业务环境和供应商等在特定范围内进行选择。但这里我也给出个人倾向的一些技术选择:

思考

我的从业经验,更多是后端开发,主要基于 Java 生态来开发系统。用过 JSP/Servlet、Spring、Playframework、ZIO 等。Java 的生态体系,从技术角度,已经足够完善,
而且社区生态也足够丰富。当前选它没有错,能够完成工作。虽然内存占用的启动时间一直受人诟病,但相比动态语言它的键壮性和运行性能更好,相比 Native 语言(C/C++、Rust)它的开发效率更高,是个折中吧。

后端:Rust + Python

那现在的 Rust 和 Python 呢?我个人认为有两方面可以做为选择它们的理由:

  1. Rust:生态已经成熟。而在各类 AI 编程辅助工具的帮助下,它的开发效率慢的问题已经等到了很好的解决。而它在正确性、健壮性、并发编程、内存安全、性能、……,综合多个方面都有着更高的天花板和想象空间;
  2. Python:类型标注(typing,从 Python 3.5 开始添加),对大型项目的代码可读性和可维护性带来很大的提升。而 Python 本身的易用性、快速开发、社区生态优势常在。比如:早期业务快速发展时,可以使用 FastAPI 快速迭代,后续当需要性能优化时可以选择使用 Rust 来对部分微服务进行替换。更不用说在机器学习、AI、数据分析、数据预处理上,Python 已经是主流。

WEB:Vue

选择 Vue,它的优势在于国内人才储备更多,在 WEB 上也可以较快的平滑引入系统。支持多页应用、单页应用、小程序等,选择它肯定是没有错的。

APP:原生

做 APP,最后的选择肯定是跟着平台技术走了。Android: Kotlin,iOS: Swift,Harmony: ArkTS/Cangjie。那是否考虑一些跨端技术呢?比如:React Native(RN)、Flutter、Uniapp 等。

我的建议是:可以的话就不做 APP,先用小程序顶着;有需要的话直接上原生开发;最后选择跨端技术。我的理由如下:

  1. 当业务不够完善和团队小的时候,使用小程序的开发成本和早期获客成本更低
  2. 当业务足够完善和团队足够大的时候,使用原生技术的体验更好,对于移动 APP 来说,使用体验是非常重要的。同样,在 AI 编程辅助工具的帮助下,也可以显著提升开发效率

对于跨端技术除了上文提到的 RN、Flutter、Uniapp 之外,Jetbrains 主推的 compose-multiplatform 是一个很值得关注的技术。

数据库:PostgreSQL

对于关系性数据库,在有得选的情况下新项目的道选“必需”是 PostgreSQL。之前还有 MySQL 可以选择,但现在在 Oracle 的折腾下,可以不做考虑了。

总结

这些都是我的一家之谈,并不适合每个项目和团队,但我想至少可以做为参考。

分享到