关于 Java 很重有感

2022 年 5 月 10 日
 Bingchunmoli
  1. 感觉很多人对 java 还停留在 j2ee 时代,不过 java 还在 jdk 还在 1.8 ,就不需要谈了。
  2. 今天写前端突然发现前端的路径也是他们俗称的臭长,明明一个 model/LoginInfo.ts 就能创建为 api/interface/LoginInfo/index.ts 特别是 index.js index.ts 都是创建文件单一个 index 明明如果不是多个就叫 router.ts 就好了嘛,不知道有什么特殊的吗。
  3. 我觉得有一句话我挺认同的,路径长,一个是便于管理(很多写路径规范吧,或者跟着教程学的就是这样),一个是和语言无关,和写代码的人有关。毕竟还有的人接口前面带 I 有的人不带的。没有对错之分。
16882 次点击
所在节点    程序员
142 条回复
haochen2
2022 年 5 月 12 日
@Joker123456789 可以写成一行的
drackzy
2022 年 5 月 12 日
宁可敲 Go 、Rust 代码也不愿意写 java 太哆嗦,不写 java 体验能好一点。
zakokun
2022 年 5 月 12 日
@wiix #91
1. 你光看到图就急吼吼的来反驳,却不看图片下面还有一句话;
2. 你觉得 idea 优化文件夹路径还很光荣?
shanks02
2022 年 5 月 12 日
转 go 语言吧,大厂都转 golang 了。跟上时代的潮流。 golang 的微信群 v(base64 ): MTg2ODAyOTI0NTA=
chihiro2014
2022 年 5 月 12 日
go 的包管理让人无语,还是 java 的 maven 大法好
JulianEpoch
2022 年 5 月 12 日
这都能撕起来?
devtiange
2022 年 5 月 12 日
@Joker123456789 nodejs/typescript, nvim 或者 vscode 写起来毫无问题. 你以为都像你一样, 没了 IDEA 就写不来了?
祝你写一辈子 java 8
kran
2022 年 5 月 12 日
没人撕 PHP ,我 PHP 不要面子的嘛?
number
2022 年 5 月 12 日
@kran PHP 是公认的世界上最好的语言🐶
xiangyuecn
2022 年 5 月 12 日
java 本身并不重,源码也可以丢根目录一把梭

只不过

java 的几个常见 IDE 一启动,先吃掉 2g 内存再说😂😂

------

常年用 windows 自带记事本手撸 java/js 代码 的泥腿子路过,源码版本管理全靠 WinRAR😂😂
hxtheone
2022 年 5 月 12 日
一个 import alias 就能搞定的问题要靠套目录来解决, 楼上的一个个跳着脚维护的样子还真是有意思
Joker123456789
2022 年 5 月 12 日
@devtiange 原来 vscode 不算集成开发环境,哈哈哈哈哈。 那你怎么不用 nodepad ,editplus 呢?
kran
2022 年 5 月 12 日
@Joker123456789 别争了,人只能赚自己认知内的钱,也只能得出认知内的结论。就这样吧。
secondwtq
2022 年 5 月 12 日
Java 这个路径的问题本来不是什么大问题,但是实际对一部分人(主要是不用 IDE 的人,或者会用 IDE 的但是暂时没有用 IDE 的人)造成了 ergonomics 的麻烦

比如 GitHub 上面,打开一个 Java 项目,想简单看下源码要点 N 多次,这还是 GitHub 也“优化”了文件夹嵌套的情况下
就算我 clone 下来,直接用 shell 访问也要敲 N 多次键盘(还不说 clone 本来就多一步)
这些情况都可以装插件来缓解,但是在一个比较简单,插件比较少的环境中,这就成为了实际的问题。
一些其他生态中,很大一部分开发者就属于这种情况,那么 Java ,或者 Java 生态对于他们来说就是“麻烦”的。你不得不承认如果没有“专门优化”,处理文件比处理文本要麻烦十倍。

这不是说 GitHub ,shell 或者其他生态做得多“好”,实际上屎的东西很多。Java 世界做出了全面偏向 IDE 的选择,是有利于隔离外面这些屎的。(至于 Java 自己一堆历史包袱和生态内部问题搞出另外一大坨屎那是另一个问题)
但是问题在于某些 Java 开发者的心态——既然自己决定了主动与其他人隔离,就不要在意其他人的想法。但是某些 Java 用户不仅没有这个觉悟,还振振有词“Java 适合做带项目,你看我们的带项目多牛逼”

问题是为了做“带项目”,就一定要抛弃“小项目”么?我认为这就是 Java (或其生态)在不欢迎它的群体眼中的最大问题。一个旁例是 C#,C# 在语言本身的风评上总体比 Java 好(好像越来越齁是一个问题),生态上则主要集中在那个众所周知的问题上面。C# 也能做带项目,这些带项目中一样各种设计模式啰哩啰嗦,一样嵌套一堆文件夹,但是 C# 也有很多小一点的项目,GitHub 上高 star 的 C# 项目中并不难找到文件夹嵌套和其他语言差不多一个水平,目录结构非常简洁的项目,大概和 Swift 项目的感觉差不多吧。而这并没有影响 C# 做带项目。

我的观察是这种现象与项目的 domain 是强相关的,某些领域的项目做得就很 Java ,某些领域就不那么 Java 。所以 Java 这些特点可能与此也有点关系。

ergonomics 的另一个例子是 ... TypeScript 。可以说 TypeScript 设计上是想要把 JavaScript 往 C# 的方向扭(毕竟这俩同源,虽然最近好像没绷住变成了 Scala :P ),有一些 TypeScript 项目也出现了 “Java 味”的雏形(暂且不用“重”这种定义模糊的词,我们就用 Java 来定义 Java 和“不知道哪个时代的 Java 特色编程思想”)。但是人们讨论 TypeScript 时,好像主要是在讨论它的 Scala/C++/Haskell ... 味,而不是“Java 味”,这一方面当然是因为很多人本来就对 JavaScript 有更多的“Java 味”的需求,另一方面就是 TypeScript 的 ergonomics 做得不错——不仅是不错,而且可以说几乎就是 Java 的另一个极端。

TypeScript 解决问题的方式很巧妙,考虑一个问题:TypeScript 的 killer app 是什么? TypeScript 的 Rails ,Docker/K8s ,Flutter 是什么?
GitHub 的数据告诉你是 VSCode: https://github.com/search?p=1&q=stars%3A%3E1000+language%3Atypescript&type=Repositories (前两个是 Markdown 项目)
这就很有意思了,因为 VSCode 这个项目本身是 TypeScript 开发的,但是领导核心是 Eclipse 正统,代码也挺 C#,内置了(非常不错的,“原生”级别的) TypeScript 支持。和 Eclipse ,IntelliJ 一样,VSCode 不仅仅可以用于 TypeScript ,并且这部分人还不少——VSCode 官方插件市场里面,Python 、C++、C# 都买了热搜(讽刺的是往后一点就能看到 Java 的热搜),后面还有 Go ,PHP ,Dart ...
暂时无法对比这些语言和 TypeScript 的数据,因为 TypeScript 的支持是 VSCode 内置的,内置的,置的,的 ...
反过来想,就是这些语言的用户,都是 TypeScript 的潜在用户!

我个人主力用 VSCode ,写 C++、C#,OCaml ,Python ,当然还有 TypeScript/JavaScript 。JetBrains 做了 Rust 的 IDE ,但是像 Haskell 这种不可能有人给做正经 IDE 的语言,也把支持 VSCode 和 LSP 作为第一优先级,OCaml 官方教程给新手首推的就是 VSCode 。这部分长尾,VSCode 也全吃下了。
虽然 Electron 在资源占用方面也很“重”,但是反正我写其他语言也要装这玩意,从开发其他语言的 VSCode 用户,转到 TypeScript 开发者,在 IDE 方面没有 overhead ,也就是装个 Node.js 和 npm 的事儿。
这就是另一点了——JavaScript 从小做起,人家做小工具也不差,所以我装个 Node.js 跑个小工具也不亏。
赢麻了。
secondwtq
2022 年 5 月 12 日
很有意思的是,造成 C# 在特定领域不如 Java 受欢迎的最重要的,众所周知的那个原因,也亲自指挥、亲自部署了 TypeScript 的推广。
而 Java 这边是无法想像这种事情的。Java 这边也有一个“原因”,也要出新东西,但是貌似依然是要收费的?
Chinsung
2022 年 5 月 12 日
@Bingchunmoli #107 其实就是不了解,spring 项目启动慢和 spring 的实现关系不大,你用其他的任意方式实现 spring 的功能,难道启动就比现有 spring 快了吗?
用 GravalVM 编译 spring boot demo 启动,只要 0.0 几秒就可以启动好,所以现在 java 应用启动慢的原因,到底是什么呢?
或者说这些人但凡 trace 过 java 应用的启动也知道,启动过程中最耗时的基本就是 JIT 的热编译
nekoneko
2022 年 5 月 13 日
@statumer 你说的是 java 提供不了这样的基础设施
yxisenx
2022 年 5 月 13 日
@Bingchunmoli 一把梭爽是爽,每次找个类都要找半天。
yxisenx
2022 年 5 月 13 日
@Bingchunmoli 东西少启动就快,接口多了,又没重构项目,跑个单元测试都要几分钟
hepin1989
2022 年 5 月 14 日
钱给够了,就比酸酸乳还好喝。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/851925

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX