• 新手JAVA小白咨询几个问题
  • 发布于 6小时前
  • 15 热度
    8 评论
  • 亦東風
  • 0 粉丝 53 篇博客
  •   
学了大概一周做了点桌面小玩意儿,做了几个 demo 网站,有些许疑惑有没有 java 前辈指点一下。我知道 java ee 是个规范(这个规范是书面文档而已,是个倡议?还是一些具体的 API 且内置的?) 然后 JavaEE 交给了 Eclipse 现在叫 JakartaEE 我看到有一些包名是 jakarta.* 所以应该是一些具体的 jdk 内置的包?或三方包?

spring 是个什么东西?是类似 php 的 laravel ,python 的 fastapi ,go 的 gin ,rust 的 tokio 吗?只是在某个领域的事实标准,只是大多数人用,但不强制?
netty 又是个啥?文档说同等功能的还有 undertow 、tomcat-embed ,也只是基于内置 NIO 实现的“实时标准”框架吗?
用户评论
  • APAC
  • Jakarta EE 是一个规范集合,你可以在 https://jakarta.ee/specifications/ 找到该集合下的各类规范。规范的原初形式是文档,有 HTML 和 PDF 两个版本,其次,对于可以通过 Java API 表述的部分,他们在中央仓库上发布了 API 定义 Jar 包,你可以直接使用。(请注意,这个包一般来说只包含定义不包含实现)

    Spring 是一个框架生态体系( aka.品牌)其包含各类用于开发的软件包,依赖注入、Web 、安全、工具链等等。他们实现了各类标准,Jakarta EE 是一个重要的标准组成部分。

    Netty 是一个基础 IO 库,它在生态地位(aka.产业链)上更接近 Rust 的 tokio 。undertow tomcat 则是实现了 Jakarta EE 标准的 Web Server ,比 Netty 地位高一点。
  • 2025/11/1 14:36:00 [ 0 ] [ 0 ] 回复
  • 弄潮儿
  • 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 了。
  • 2025/11/1 14:34:00 [ 0 ] [ 0 ] 回复
  • 原木风
  • 我补充几点吧,
    1. spring 是一个框架也可以理解一个生态.
    有很多组件, 与大多数的中间件有实现.
    经过了很多开发者的验证与实践的, 比如你们老板让你对接一个 mqtt,对接 kafka 就可以看下 spring 有实现没, 有的话就可以直接生产用.
    2. netty 还是很重要的, 与物联网打交道的用的很多, 自己只关心协议的编解码就行了, 很强大. 用的也很多.

  • 2025/11/1 14:33:00 [ 0 ] [ 0 ] 回复
  • 李明发
  • ava EE 是规范,你这么理解
    你做网站服务器(tomcat),他也做网站服务器(undertow)
    那我要开发网站需要在你俩的服务器上运行,如果你们俩各玩各的,我是不是得根据你俩的规范单独开发
    如果现在有一套规范(接口),你俩都保证实现这个接口定义的功能,我就只需要调用这套接口就行了,实际运行在 tomcat 还是 undertow 是无所谓的
    这套规范就是 Java EE
    以前这套玩意在 javax 包下面,由于 Sun 被 Oracle 这专利老流氓收购了之后,别人不能用 javax 这名字,后来 Oracle 终于非常“大度”的表示,新的规范我不管了,但你们得开个新服,不能继续在 javax 下面,这个新的名字就是 jakarta
    spring 你暂时把它理解为跟 Java EE 同级别的东西,由于早期对 Java EE 的唾弃而开发出来的 pro max ultra 超级无敌至尊加强版,不仅仅是规范,更是一套最佳开发实践,你照着它给你定好的套路填东西就行,无脑用
    netty 太底层了,不用管,等你啥时候觉得 http 协议太烂打算重新开发一套的时候再去看也不急
  • 2025/11/1 14:32:00 [ 0 ] [ 0 ] 回复
  • 张蜚
  • Netty 是一个网络开发工具包,一般用于开发 Socket 服务端,比较底层,性能也很好
    ----文档说同等功能的还有 undertow 、tomcat-embed
    说的是 Netty 也可以用于开发 Http 服务端,在这个使用场景上可以说功能同等
    ----也只是基于内置 NIO 实现的“实时标准”框架吗

  • 2025/11/1 14:24:00 [ 0 ] [ 0 ] 回复
  • 一杯忘情
  • Spring ( Springboot )是一个大而全的框架,基本包含了 Java 服务端开发的所有工具和库,已经是事实标准了
    大多数人用?基本 Java 服务端开发都会使用
    强制? Java 开发基本没有强制的说法
  • 2025/11/1 14:22:00 [ 0 ] [ 0 ] 回复
  • 独白情歌
  • Jakarta EE 是个规范,也可以理解成所谓的"最佳实践",可以遵循也可以不遵循。Spring 是个框架,和你提到几个类似。可以不用,但是大部分写 Java 的都用。Netty 也是个框架。
  • 2025/11/1 12:18:00 [ 0 ] [ 0 ] 回复