致前端 Web 开发的一封信

熟练掌握Java生态系统可不是一件易事...

作者 | Eric Bower
译者 | 弯月
出品 | CSDN(ID:CSDNnews)
在过去的 5 年里 , 我主要从事构建前端 Web 应用程序的工作 。 熟练掌握 Java 生态系统可不是一件易事 。 这个生态系统不断变化 , 新工具层出不穷 , 而且还会影响我们构建 Web 应用程序的方式 。
我们的技术栈中有很多用于构建生产级 Web 应用程序的工具 。 我不禁在想 , 我们是如何从 HTML 中嵌入的 Java 发展到如今拥有构建流水线的?甚至连一行Java 代码都没有写 , 就要先选择一系列的工具?
软件工程这个职业已经存在了几十年了 。 如今为了满足产品或服务的业务需求 , 我们构建了几十种现代编程语言、几千种工具和框架 。 在成千上万构建软件的人不断吸取前人经验教训后 , 为什么前端用到的技术依然这么多?为什么前端看起来如此混乱?从 left-pad 事件到工具链的更迭 , 前端开发几乎成为了软件开发中的“黑天鹅” 。
我经常看到网上有些自认为称职的软件工程师对前端 Web 开发唯恐避之不及 。 为什么这么多专业工程师对前端开发不屑一顾?
而这些问题的答案就是我喜欢前端 Web 开发的原因 。 虽然 Java 很差劲 , 但这也正是它吸引我的地方 。 我想通过本文与你一起探索 Java 的生态系统 , 同时还想解释一下为什么我会如此喜欢前端开发 。
致前端 Web 开发的一封信
文章图片

黑天鹅
Java 开发所面临的挑战不同于其他编程世界 , 其独特地位的主要驱动因素在于 Java 代码需要下载到客户端浏览器上 。 例如 , 在服务器上运行的语言不需要将代码发送到客户端机器上 , 它们只响应浏览器发出的请求 。 所有处理都在服务器上运行 。
传统的桌面应用程序只要求客户端下载一次运行应用程序的代码或可执行文件 。 而对于 Web 前端 , 每次都需要下载 。 这就导致 Web 前端有一个与其他开发完全不同的关键性要求:
Web 前端开发需要考虑总代码量 。
一般从事其他开发的工作人员不太需要担心代码的大小 , 但这却成了我们的首要考虑因素 。
这个要求有哪些副作用?

  • 小型库 优于 大型库 。
  • 许多工具专注于减少代码量 。
下面 , 我们来看看这两个副作用对整个生态系统的影响 。
小型库优于大型库
由于代码量很重要 , 因此 Java 库非常注重以最少的代码量交付最强大的功能集 。 每当我想到现代 Java 库时 , 就会想起 Unix 哲学:只做一件事 , 并把它做好 。
Java 库只做必要的一件事 , 并把它做好 。
这就导致 Java 出现了一些极端的库:只有一行代码 。
is-promise 是一种流行的单行 Java 函数 , 它引入的回归问题导致大量应用程序和库出现了问题 。
【致前端 Web 开发的一封信】function isPromise(obj) {return (!!obj &&(typeof obj ==='object' || typeof obj === 'function') &&typeof obj.then ==='function');}
left-pad也是一个类似的例子 , 它是一个非常小的库 , 却导致全世界大量项目构建失败 。
虽然听起来很不可思议 , 但是这种副作用确实来自前端 Web 开发的独特性 。
许多工具专注于减少代码量
从代码压缩到 tree-shaking , Java 生态系统有大量工具可以帮助我们减少通过网络下载的代码量 。 前端开发构建流水线需要花时间搞清楚应用程序中实际使用了哪些代码 , 以及如何压缩代码量 。 除了前端开发之外 , 我参加过的其他项目都不会如此关心代码量 。
举个例子 , 一般 Python 项目都不必担心引入大规模依赖项的后果 。 numpy 是一个非常流行的 pypi 包 , 多用于数据科学和统计 。 将这个包添加到项目会导致总体的代码量增加约30MB 。 你能想象如果前端开发人员开发出如此规模的 Java 包 , 哪怕比这个小很多 , 他们会受到怎样的苛责吗?

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。