Java 的缺点就是啰嗦 Java 的好处也就是这里了吧?

2022-01-28 11:37:03 +08:00
 partystart

转了语言后 回过头来回忆下以前的做过的项目 感觉到 Java 项目的优点就是结构稳定吧

Spring 提供官方脚手架,自己公司也可以基于脚手架进行定制化开发。 无论是新的项目还是以前老的项目包层次划分统一整齐。

Maven 官方统一固定了文件路径 代码放 src 资源放 resousrce 有人想动这个路径 直接不支持 而且代码 review 直接骂的狗血淋头 我是没见过这年头有人不用 maven 做包管理的

至于业务层次包 大家好像也形成了统一的规范? Api/RPC Service Dao Mdeol 这几层大体结构

有没有同样的感想?

10177 次点击
所在节点    程序员
95 条回复
hingbong
2022-01-28 18:20:25 +08:00
我们就不用 maven ,用 gradle+kotlin ,后端确实美滋滋
Trim21
2022-01-28 18:33:49 +08:00
@partystart 第五点这个 go 真的支持…
dallaslu
2022-01-28 19:06:11 +08:00
@partystart 一个包名多个版本,是希望避免依赖冲突吧。可能是个 X Y 问题,虽然依赖冲突麻烦,但是一包多版本可能更麻烦
sagaxu
2022-01-28 19:49:16 +08:00
反正写过 Kotlin 或者 C#之后就再也不想写 Java 了,真的脏
DOLLOR
2022-01-28 21:13:41 +08:00
@des
就是酸葡萄心理。
等以后新语法出来了还不是要吹得飞起。
hingbong
2022-01-28 21:57:00 +08:00
@sagaxu kotlin 是真的舒服,生态也有
yogogo
2022-01-28 22:39:06 +08:00
能挣钱的才是好东西,管他有啥缺点🐶
ikas
2022-01-28 22:44:02 +08:00
就像国内的软件,非要花拳绣腿什么都搞,真正核心的少的可怜.
各种神奇语法符号,越怪异,越与众不同越会得到期待与满足.
保持克制,发展核心.而不是乱搞什么语法.
随手说几个上面的问题
1.怎么内部隔离依赖?使用 module,不导出即可
2.java 没有 await,
保持使用线程池,同步代码,没必要大改,因为 java 虚拟线程后,不需要关心太多异步,你可以开上万个线程
3.热更新?看看 tomcat 都可以随时加载,卸载 war,为啥..就算是安卓的官方热更新,那也是提供了一个接口给你 classloader,更不说没有限制的 jvm
4.操作 json 复杂,确实,用 js 就是方便,然后随意点,然后出问题狂骂,谁 tm 加的属性...

java 语言就不改么..推荐看看 jep 列表

比如一个草案:

var query = connection."SELECT * FROM \{table}";

编译后,相当于
connection :
T apply(String template, List<Object> parameters);
你可以同时处理参数名,与参数值,与最终 string
tqccc
2022-01-29 00:17:34 +08:00
@golangLover 哥,你这爱 golang 有点魔怔了
zsxeee
2022-01-29 08:18:36 +08:00
要限制写法的话各位不用 lint 的吗
GiantHard
2022-01-29 08:43:40 +08:00
Jackson 反序列化泛型列表

```
CollectionType typeReference =
TypeFactory.defaultInstance().constructCollectionType(List.class, Dto.class);
List<Dto> resultDto = objectMapper.readValue(content, typeReference);
```

放到 JS/C# 里面就非常简单了 JSON.parse / JSONConvert.Deserialize

对比起来,Java 真的太啰嗦了。而且这么一坨代码在没有 Copilot 这种人工智能加持下,Idea 能正确的补全出来吗?
micean
2022-01-29 09:21:02 +08:00
@GiantHard

这种程度的还好不算啰嗦,封装能解决的事。
java 啰嗦主要在于项目里各种人为导致的设计模式的强迫实践,比如一定要写个 interface 再来写 impl ,给参数建各种 class ,注解流行之前还要写各种 xml 等等
我直接赞美 ts 还有人说喜欢建各种 class 的形式 https://www.v2ex.com/t/830210
所以萝卜白菜各有所爱吧……
MakHoCheung
2022-01-29 09:35:12 +08:00
@micean 那这种啰嗦是优点还是缺点呢,帖子的标题就问了
Unicorns96
2022-01-29 09:41:51 +08:00
与其称为啰嗦,我更觉得是结构明确、意义明确、规范统一,个人觉得这是个优点。它更重要的优点就是在 web 领域生态强大,轮子多。当然缺点也很明显,性能相比于其他非虚拟机语言略低,占用内存略大。
yazinnnn
2022-01-29 09:55:14 +08:00
首先,jvm 性能并不差,只是内存占用大而已,但是内存不值钱,带宽值钱

其次,graal 可以让你的程序内存减小很多,起动速度快两个量级,适合云场景,但是如果长时间运行,aot 性能不如 jit ,内存也会暴涨
zxjunz
2022-01-29 10:12:37 +08:00
我觉得啰嗦但是很优雅吧
kur0d3s
2022-01-29 10:36:45 +08:00
@GiantHard
```
List<Object> objs = objectMapper.readValue(json, new TypeReference<List<Object>>(){});

```

觉得 new 太丑,自己封装一下
yazinnnn
2022-01-29 10:49:45 +08:00
java 不配谈优雅,c like 都不配
micean
2022-01-29 11:01:37 +08:00
@MakHoCheung

不能一棒子打死,好坏分开看吧。
lombok 也好,代码生成器也好,javaer 也一直在努力减少啰嗦这个问题。
kotlin 虽然写的很爽,但是看旧代码真的要比 java 更集中注意力才行
hhjswf
2022-01-29 11:22:38 +08:00
@micean 可是你说的这些跟 Java 都没关系啊。。xml 那是 spring 框架的问题,impl 那是规范问题

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

https://www.v2ex.com/t/831086

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

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

© 2021 V2EX