你喜欢使用 Java 下的哪个 web 框架?

8 天前
 kran
看招聘信息的话,springboot 无处不在,你喜欢它吗?还是有其他的选项?有什么原因/理由?
6714 次点击
所在节点    Java
104 条回复
kran
7 天前
@jeesk 大厂有大厂的规范, 作坊有作坊的打法, 个人更是各有喜好, 既然被代替是必然性, 那么考虑一下被什么样子的东西替代也是好的. 论文档的话, spring 的文档实在不值得恭维, 我说它赶不上 php 的文档都不算羞辱, 另外铺天盖地的博客文章来讲解 spring 的某些问题的解决, 某些实现的方法, 也能在一定程度上证明它的文档的缺失. 话说回来, 它的文档描述的更多的是自己创造的问题/概念, 这很难说它的文档很好.
kran
7 天前
@realpg 个人项目用自己熟悉的挺好的
kran
7 天前
@wxw752 yes, 做技术最重要的是舒心~
不过并不是为了统一认知, 这在计算机的巴别塔中, 始终不曾存在.
sagaxu
7 天前
@kran 个人感觉,spring 的文档非常好,“铺天盖地的博客文章来讲解 spring 的某些问题的解决”基本上在官方文档里都有答案。当然,spring 的文档不是给你哪有问题查哪儿的,它需要先系统性的过一遍,把该学的概念都了解个七七八八,然后你才有思路,知道往什么方向查。
kran
7 天前
@sagaxu 其实在上一个回复里最后那句才是真的值得考虑的, 延展开来就是, 一个框架提出了很多的概念, 在这些自创的概念上来补充使用文档, 而这些概念甚至实现到底是在解决问题还是制造问题? 我个人的看法是在 spring 身上, 已经完全超出了解决问题的范畴, 对自动装载或注解的执着, 造成最终考验使用者的不是 java 或编程技巧, 而是在其之上的专门经验, 这可能也是它的任何一个点都会被 blogger 一遍一遍的重复记录.
hahaha121
7 天前
@chuck1in 不是很理解,这种框架收费是什么鬼?
kran
7 天前
@xuld 我倒是不反对设计模式, 一个程序员哪怕没有看过设计模式, 经过很多业务的折磨, 最终也会写出那些业务模式总结出来的形状. 不如说, 设计模式是一种业务表达的结果, 照搬设计模式去套业务才是该反省的地方.
sagaxu
7 天前
@kran Spring 独创了什么概念? IoC 是 1980 年代就广泛使用的技术,AOP 的使用也比 Spring 更早,MVC 是 1970 年代的古董。框架只不过是已有概念的实现,每个概念都用于解决一些问题,熟练掌握之后能提高效率。如果一个框架的学习成本极低,那大概这个框架做不了稍微有点复杂度的项目。

话说,Java 语言的哪一个知识点不被 blogger 一遍一遍的重复记录?如果这都能成为“考验”,没必要死磕,换个别的方向就是了。

之前 Django 被吐槽大而全,于是小而美的 Flask 得到青睐,后来大家因为项目需求变复杂了,就不得不引入各种配套的框架/库,最后再自己组装黏合在一起,重新发明了一个 Django 。Spring 依赖注入那套东西,不知道被多少人在自己的项目中重新发明了一遍,每个人都要做一遍拓扑排序。
NoString
7 天前
我所在的商业化团队 主用 go gin 但公司上百号的人都是 java ,所以我们在奔向 java 的 springboot 我工作 6 年,一直写 java ,但是工作其实 python java go 没那么有所谓 能快速解决问题就行。代码的健壮和优美只和写的人有关系,框架有一些明面的缺陷,团队领导者能因地制宜解决业务问题就是好语言好框架。

对于个人而言,中间 vert.x 给人的感觉很不一样,尤其是我这种只接触过 springboot 的人,生产中有段时间公司有个 slg 的游戏,后端就是 vert.x 框架,但那个游戏后端主程表示 java 就是一坨屎,远不如 c++,他很想用 c++但是业务好像没给他太多时间,公司的所用中间件都是基于 java 设计的,从监控、链路追踪、日志、健康检查、熔断、限流、服务网格这些 都是盯着 java 设计的。

ps:现在我觉得语言什么都行,能帮老板达到业务目的、你能保障这个语言下的 SLA 就行,java 也可以做成本、无非是换一套向上管理的说辞罢了,你省下来的内存会在招聘的时候原封不动花在招聘上,对于业务团队计算 roi ,机器成本、开发成本、人力成本都是在指标内的。
kran
7 天前
@sagaxu ioc ,aop 我也每日使用,并且一样是通过注解的形式去使用。你说的很好,框架来实现概念,那就应该想清楚这个实现的边界。spring 对此的把握如何?他对注解是否在滥用?对 di+自动装配带来的影响是否有过反思?

是的,每一种技术都会被很多人学习记录,但总是要权衡一个值得的界限,在我这 JAVA 比 spring 更值得学习,所以我不死磕,也一样在 JAVA 的方向上。

我大概说清楚了吧。

最后,我相信在 java 里他们会加入 di ,因为 di 是真的解决问题的一个理念。但 flask 到 django 你真的认可吗?思考与不思考后选择 django 都截然不同,更不用说,在实践中组装出适合自己业务的框架。轮子是一定要造的,把所有轮子叫轮子没错,但都叫重新发明了“spring”,“django”就是傲慢。
kran
7 天前
@NoString 一个因地制宜道尽所有。有所思考的选择,和追随潮流的选择一定有所不同。哪怕结果一样。这时受制的是个人见识了,我亦在此列。结贴,睡觉。
sagaxu
7 天前
@kran 在有注解之前,Spring 都是通过 XML 装配,有了注解之后,大家用脚投票投的注解,没几个人想回到动辄手写上千行 XML 的年代。注解的“滥用”是多年下来自然选择的结果,事实上 Spring 除了注解和 XML ,也支持手写代码的方式装配。注解和 DI 是好东西,比较新的框架 quarkus 也选择了这个姿势,注解和 DI 带来的问题大家都知道,Spring 的解题思路是 AOT ,quarkus 的接替思路是 build-time oriented dependency injection ,殊途同归,都把本来运行阶段才做的工作前置到 build 阶段。

每个人习惯不同,我在使用一个框架前,会把文档完整的过一遍,我不觉得看个小几百页文档能影响我学习其它东西。比如我使用 Vert.x 前,官网文档过了一遍,顺便把 netty 也过了一遍,实际也花不了多少时间。这些也都不会白看,后续学习 quarkus 时就流畅的多,甚至第一次学习 php laravel 时有似曾相识的感觉。

各个框架都是现有技术的应用和组合,也许有一些地方做的选择不同,但大体上也就那么几种,用户会用脚投票,经过长时间的检验,淘汰掉那些不那么适合项目的选项。对大部分开发来说,历史包袱不太大的项目,你不能选的那几个选项,可能在项目初期被人权衡利弊之后删掉了。

我经历过几个从小而美轮子演化成大而全的项目,有些甚至在发展了几年后整个丢弃掉,来个大版本升级,直接基于开源方案二次开发了。

现在我对大而全框架没工作头几年那么排斥了,我只有两个要求,我用不到的功能不要消耗我的 CPU 和内存,我要扩展时要有足够的弹性。
fox0001
7 天前
对 SpringBoot ,说不上喜欢。但是其几乎是行业标准,大而全,文档多,对新人友好等等,在 Java 领域且对于公司级别的项目,没有对手。
wupher
7 天前
正常 spring boot ,但相信没几个人会喜欢吧。

小项目有用过 ktor ,挺不错的。但,确实,现在细想起来,用 ktor 的项目,其实完全可以用 golang / rust 等其它语言来替代。
chuck1in
7 天前
@hahaha121 这是我做的产品,具体有什么法律规定这种软件不可以收费吗?
afeiche
7 天前
大部分项目都是 springboot ,毕竟公司的人员结构就是这样,大家都熟悉这一套,去年,不对,前年在一个小项目中用过 vert.x ,主要是我自己搞,不需要关注别人怎么用,用下来,感觉同步转异步的学习成本还是挺高的,而且遇到问题没有现成的解决方案,一个小问题也要折腾挺久的

所以从公司或者管理者角度看,肯定是用 springboot 这一套风险小,对于技术 leader 来说,不同的人有不同的风格,有些人偏保守,不喜欢引入新的东西,有些人喜欢尝试新的事物,但是前提应该都是自己能控制,别最后没人能解决问题。
chuck1in
7 天前
@Rust2015 哈哈,博大精深确实不能够作为文档写的不好借口。
Spring boot 的文档是真的被人诟病,很多地方该写的不写,不该写的写一大堆。说实话这方面相比 js 那边是真的不太行。
fpure
7 天前
就用 springboot 啊,难道 springboot 不好用吗
ThinkCat
7 天前
主业是 java 。做过好几个个人项目,刚开始用的 node ,后面尝试 go ,java 的 webflux 和 vertx ,然后是 rust ,被 rust 的理念和效率折服,后面项目中,主要是用 rust ,结果是各种东西都要自己整合,加上有些 rust 自身的机制要探索,开发效率下降,然后后面迭代维护,常用的中间件工具摸索,经常在这个上面花费时间。现在最新做的项目,还是老老实实用 springboot ,一切都是那么丝滑,缺点就是内存占用。或许是自己精力太分散了,导致另外几个技术栈,没达到丝滑的程度。
lancelock
7 天前
公司的没有选择只能 spring ,个人我都不用 java 了

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

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

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

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

© 2021 V2EX