20 条回复  ·  2239 次点击
gongym 小成 2025-10-31 14:47:25
Spring ( Springboot )是一个大而全的框架,基本包含了 Java 服务端开发的所有工具和库,已经是事实标准了 大多数人用?基本 Java 服务端开发都会使用 强制? Java 开发基本没有强制的说法
gongym 小成 2025-10-31 14:51:28
Netty 是一个网络开发工具包,一般用于开发 Socket 服务端,比较底层,性能也很好 ----文档说同等功能的还有 undertow 、tomcat-embed 说的是 Netty 也可以用于开发 Http 服务端,在这个使用场景上可以说功能同等 ----也只是基于内置 NIO 实现的“实时标准”框架吗 是
newaccount 小成 2025-10-31 15:13:00
Java EE 是规范,你这么理解 你做网站服务器(tomcat),他也做网站服务器(undertow) 那我要开发网站需要在你俩的服务器上运行,如果你们俩各玩各的,我是不是得根据你俩的规范单独开发 如果现在有一套规范(接口),你俩都保证实现这个接口定义的功能,我就只需要调用这套接口就行了,实际运行在 tomcat 还是 undertow 是无所谓的 这套规范就是 Java EE 以前这套玩意在 javax 包下面,由于 Sun 被 Oracle 这专利老流氓收购了之后,别人不能用 javax 这名字,后来 Oracle 终于非常“大度”的表示,新的规范我不管了,但你们得开个新服,不能继续在 javax 下面,这个新的名字就是 jakarta spring 你暂时把它理解为跟 Java EE 同级别的东西,由于早期对 Java EE 的唾弃而开发出来的 pro max ultra 超级无敌至尊加强版,不仅仅是规范,更是一套最佳开发实践,你照着它给你定好的套路填东西就行,无脑用 netty 太底层了,不用管,等你啥时候觉得 http 协议太烂打算重新开发一套的时候再去看也不急
kzfile 初学 2025-10-31 15:20:37
其他语言里似乎没有一种像 spring 这样巨大的东西,已经不仅仅是 web 框架了
vvtf 初学 2025-10-31 15:23:34
我补充几点吧, 1. spring 是一个框架也可以理解一个生态. 有很多组件, 与大多数的中间件有实现. 经过了很多开发者的验证与实践的, 比如你们老板让你对接一个 mqtt,对接 kafka 就可以看下 spring 有实现没, 有的话就可以直接生产用. 2. netty 还是很重要的, 与物联网打交道的用的很多, 自己只关心协议的编解码就行了, 很强大. 用的也很多.
dzdh 楼主 小成 2025-10-31 15:26:56
@vvtf 我看 new 了一个 httpcodec 的东西。不看源码,就盲猜,是不是在 accept 一个 conn 后第一步的操作,解析完数据后再传给下一个处理器。而这个 httpcodec 就是解析 http 的 header 头,生成 request 对象再把 body 再往下传。 如果我开发物联网。我就自己写一个 customIotCodec 的东西,从第一个字节的数据包开始解析完成预处理工作再传给接下来的 handler
dzdh 楼主 小成 2025-10-31 15:27:57
那放到 go 。就是 pipe.add( httpcodec{}); for { fd = conn.accept(); pipe.run(fd) }
cnhongwei 小成 2025-10-31 15:35:30
jdk 只有基本功能,如文件读写,数据库 sql 的执行,加密,桌面等。但这些用来写企业级应用还不够方便,企业需要 web 服务器,数据库访问,消息处理,远程调用等,所以就有了 JakartaEE(原来叫 JavaEE),但这些不在 jdk 的范围内,这些只是一些规范,各个厂商有自己的实现,当然 oracle(原来的 sun)有 glassfish 来实现 JakartaEE ,但当时 javaee 太复杂了,特别是 EJB 这一块,很复杂而且开发不方便,所以有些就只实现了 jakartaee 的一部分,主要就是 web 这一部分,tomcat, undertow, jetty 就是这样出来的。 而 spring 就基于 web 这一块的实现,加上 Jpa(数据库)等,做了一个大而全的,使用 JakartaEE 一部分规范(不包括 EJB),实现了企业级开发的各种功能,大家都爱用,所以 spring 成了 java 开发互联网应用,企业应用的事实标准,但你可以不用,就像你不用 fastapi 来,自己使用 python 从头来实现 web 服务器也是可以的。 所在类比的话,spring 是类似于 python 的 fastapi 之类的框架,当然也有其它的框架,只是使用没有 spring 多而已。 因为 spring 中的 web 功能是基于 tomcat 或 undertow 或 jetty 来实现的,所以以前生成的企业应用要放到 tomcat 这样的应用进去部署,比较麻烦,所以就出来 spring boot ,spring boot 是集成了 tomcat 或 undertow 或 jetty ,部署的时候就更方便了,所以现在学习 spring ,就直接学习 spring boot 了。
vvtf 初学 2025-10-31 15:35:55
@dzdh #15 是的,大概就是这样,netty 会处理连接信息,开发人员只关心具体数据(in/out)就行了. netty 内置了很多标准协议的 codec, 如 http,websocket,mqtt,redis,stomp 等. 有很多的解码方式处理沾报/半包等.如固定头,固定长度等. 还有内置心跳等之类的.
EeveeRibbon 初学 2025-10-31 16:10:32
感觉 Spring 在 Java 语言里已经是垄断级别的地位了,其他别的语言应该没有像这样的吧
返回顶部