致前端 Web 开发的一封信( 二 )


有时我们确实需要引入大型库 , 因为这些库可以节省大量的时间 , 而且对企业来说也具有成本效益 。 我们必须发挥创造力 , 而这样做就导致 Java 生态系统中产生了数量惊人的工具 。 为了满足这一要求 , 这个生态系统不断地构建新工具 。
唯一的语言
对于浏览器编程 , 我们所需的语言只有一种:Java 。 虽然也有其他语言 , 但至少目前绝大多数人都会选择 Java 。
不知是好是坏 , 成千上万的开发人员都必须使用 Java 。
由于只有一种语言生态系统 , 因此需要投入大量的创造力和劳动来解决最棘手的问题 。 由于为需要满足各种业务的众多需求 , 所以这个生态系统在不断发展 。 如果前端能和后端一样拥有相同数量的流行编程语言 , 那么每个生态系统都不会有如此快速的更迭 。
此外 , 我认为正是因为Java 有许多缺点(任何一门语言都是如此) , 才有如此多人想出巧妙的解决方案来修补这些问题 。
因为开发人员不得不使用Java , 所以他们不得不想出创造性的解决方案 。
这种创造力催生了很多巧妙的解决方案 。 所以说 , Java 是最有活力和最有趣的编程生态系统之一 。 近年来 , 有些工具彻底改变了 Java , 特别是:

  • Type
  • Prettier
  • ESLint
  • React (view = f(state))
我认为 type 中的类型系统为开发更稳定的 Web 应用程序做出了很大的贡献 。 而且我还认为 type 的类型系统出色之处并不在于其设计 , 而是由于它的应用之广超过了我用过的任何其他类型系统 。
Prettier的表现和 gofmt 不相上下 , 这本身就很有意义 , 因为 gofmt 是由 golang 语言设计者构建的 。
ESLint是我见过的最好的 linter 。 其他语言中可能也有类似的 linter , 但我还没有亲身经历过 。
每次尝试另一种编程语言时 , 我都会想念这三款工具 。 从事过Java 开发之后再接触 python 就会觉得工具怎么都这么落后 。
最后 , 我认为 React 也是一个彻底改变了构建 UI 应用程序的库 。 如此之多的应用程序使用 electron 构建是有原因的 , 而且我认为不是因为人们不知道如何使用 Qt 。 人们不想使用 Qt 是有原因的 , 因为与 React 相比 , Qt 使用起来更麻烦 。 对于 UI 开发来说 , 将视图视为状态的函数具有开创性 。
Java 有很多运行方式
Java有一个规范:ECMA 。 该规范在不同的浏览器中的实现方式略有不同 。 自从 v8 因为其速度和服务器端实现(例如nodejs)主导浏览器市场以来 , 多年来不同 Java 实现的数量一直在缓慢下降 。
然而 , Java 的实现方式仍然不是完全一致 , 新功能的采用仍然非常缓慢 。 让用户更新浏览器是一项艰巨的任务 , 多年来这个问题一直困扰着前端开发人员 。 从 ECMA 的新功能到市场的全面采用往往需要长达数年的时间 。 这就成为了 Java的另一个独特的约束 。
这个问题有两个解决方案:
  • ECMA 引入的新功能需要向后兼容 。
  • 创建工具 , 将代码从一种规范转换为另一种规范 。
由于 ECMA 的设计师选择了新功能向后兼容(在大多数情况下) , 因此我们可以构建新工具 , 将代码从较晚的规范转换为较早的规范 。 这类工具称为转译器 , 例如 babel 可以将 ES6 代码转换为ES5 。
有了这些转译器 , 开发人员就可以编写最新规范的代码 , 同时无需担心市场的采用 。 但我们也不得不在构建流水线中加入编译步骤 , 而这为各种工具打开了闸门 。 现代Java 代码都是经过编译的 , 而且这种做法在短时间内不会改变 。 这不是增加了学习 Java 的难度吗?没错 , 但好处也是巨大的 。

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