现在黑 JAVA 成了潮流? npm 和 go 用得不多,但也可以说下自己的理解。
1. maven2 是 2005 年发布的,但它现在来看还是非常领先的。
2. maven 设计了打包的各个生命周期,概念,并且非常容易写插件,生成源码,添加资源等等。
3. 用 maven/gralde 打包其它语言是相当容易的,反过来估计能做到的不多。
npm 根本和 maven 不是一个层面的对手。从两点设计就知道了:
1. 每个应用自己一个 node_modules 打包目录,无数的人搜怎么清理。(现在已经改为链接到~/下面了)
2. 小版本默认升级,`~`和`^`
npm 一个笑话就是:一个工程不说十个月,就是一星期后,就可能打包不成功了。
一个 java maven 工程,十几年过去之后,仍然可以正常打包。一个 maven plugin,十几年之后,仍然能工作。
以前还有笑话是:Java 打包出来的结果文件大。
实际上过了几年,发现 nodejs 打包结果动不动就几百 M,go 打包结果也是越来越大了。
go 的包设计非常的奇怪。
1. import 一个 git 仓库,如果这个仓库被攻击了呢?怎么保证安全性?过了好多年,才加了一个 hash 的补丁
2. go import 一个 git 仓库,是因为本身它编译时要求全是源码,不能生成中间结果
3. 作为一个用户,我要盯着一个依赖的仓库的 hash 值?依赖管理本身不应该看的是版本号么?