【Java 基础(人话版)】Java SE vs Java EE
Java SE vs Java EE:有什么区别?
最近在学习 Java 的时候,总是会看到 Java SE 和 Java EE 这两个概念。刚开始有点迷糊,后来查了资料、做了一些实验,终于弄清楚了它们的区别。这里记录一下,希望对以后复习或者遇到相同问题的朋友有帮助。
什么是 Java SE?
Java SE(Java Platform, Standard Edition) 是 Java 的标准版,可以理解为 Java 语言的基础。我们平时写 Java 代码用到的 java.lang
、java.util
、java.io
等核心类库,都是 Java SE 提供的。Java SE就是最基础的开发包。
Java SE 适用于开发:
- 桌面应用程序(比如 Eclipse、IDEA 这样的 IDE,或者小型管理系统)
- 简单的服务器端应用(比如用
Socket
开发一个局域网聊天工具)
它包含了 Java 虚拟机(JVM)、编译器(Javac)、JDK 提供的标准 API,还有我们最熟悉的 main
方法的程序入口。它带着你写代码、编译运行,集合框架这种必备工具。
示例:Java SE 应用
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, Java SE!");}
}
这个简单的 HelloWorld
就是标准的 Java SE 代码,可以直接运行在 JVM 上。
再比如,我们想读取一个文件的内容并打印出来:
import java.io.*;public class ReadFileExample {public static void main(String[] args) throws IOException {File file = new File("example.txt");BufferedReader br = new BufferedReader(new FileReader(file));String line;while ((line = br.readLine()) != null) {System.out.println(line);}br.close();}
}
这段代码也是 Java SE 的范畴,主要是用 java.io
相关的类来操作文件。
什么是 Java EE?
Java EE(Java Platform, Enterprise Edition) 是 Java 的企业版,它是建立在 Java SE 之上的,主要用于开发企业级应用。
企业级应用一般会涉及:
- Web 应用开发(比如 SpringBoot 开发的网站后台)
- 分布式系统(比如电商网站的订单系统、支付系统)
- 数据库访问(使用 JPA 或 JDBC 连接数据库)
- 消息队列(JMS 等用于系统间的异步通信)
- 事务管理(银行转账的事务控制)
Java EE 不是一个具体的 JDK,而是一系列的标准和规范,比如:
- Servlet:处理 HTTP 请求的 Java 组件
- JSP:用于编写动态网页
- JPA(Java Persistence API):用于数据库持久化
- JMS(Java Message Service):消息队列
- EJB(Enterprise Java Beans):企业级组件(现在基本被 Spring 取代了)
示例:Java EE Web 应用(Servlet)
假设我们要开发一个 Web 服务,用户访问 http://localhost:8080/hello
,浏览器就会显示 Hello, Java EE!
,用 Java EE 实现的方法如下:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/hello")
public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");response.getWriter().println("<h1>Hello, Java EE!</h1>");}
}
这个 HelloServlet
继承了 HttpServlet
,并使用 @WebServlet("/hello")
注解,意味着当用户访问 /hello
路径时,这个 Servlet 就会被调用,返回 Hello, Java EE!
。
这个示例展示了 Java EE 最基础的 Web 开发能力,而如果是一个完整的企业级应用,通常还需要数据库、事务管理、分布式部署等功能。
Java SE vs Java EE 的主要区别
对比项 | Java SE | Java EE |
---|---|---|
用途 | 开发桌面应用、小型服务器端应用 | 开发 Web 和企业级应用 |
核心库 | 提供基本 API(java.lang 、java.util 、java.io ) | 额外提供 Web、数据库、事务、消息队列等支持 |
是否包含 Web 技术 | 不包含 | 包含(Servlet、JSP、JPA、JMS 等) |
开发环境 | 直接运行在 JVM | 需要应用服务器(如 Tomcat、WildFly) |
示例 | 读取文件、计算器程序 | 在线商城、银行管理系统 |
定位不同
SE像是瑞士军刀的基础款,EE则是专业电工包。有次试着用纯SE写Web项目,结果自己实现了半天Servlet才发现EE早就封装好了(血的教训)。
组件差异
刚开始学EE时被各种缩写吓到:
// EE项目日常
@WebServlet("/hello") // 注解大法好
public class HelloServlet extends HttpServlet {protected void doGet(...) {response.getWriter().println("真香!");}
}
而SE项目可能只是:
public static void main(String[] args) {System.out.println("Hello 单身狗");
}
部署环境
SE程序双击就能跑,EE项目却要伺候Tomcat这种主子。第一次部署时把war包扔错目录,对着404页面怀疑人生了半小时…
什么时候用 Java SE? 什么时候用 Java EE?
- 如果只是写个小工具,比如处理 Excel、批量修改文件、爬取网页数据,那么 Java SE 就够了。
- 如果要开发 Web 网站,比如一个博客系统或者在线商城,就需要用到 Java EE。
现在很多公司用 Spring Boot 作为 Java EE 的替代方案,因为它更轻量级,不需要复杂的应用服务器。但本质上,它依然属于 Java EE 体系。
结论
Java SE 和 Java EE 的区别,其实就是 基础 vs 企业级,如果只是学习 Java 语法或者写一些简单的应用,Java SE 足够了。而如果要做 Web 开发、数据库管理、大规模分布式系统,那么 Java EE 就必不可少。
虽然 Java EE 看起来更复杂,但它的很多概念(如 Servlet、JSP、JPA)依然是现代 Web 开发的基础,理解它们对学习 Spring Boot 甚至微服务架构都会很有帮助。
这篇笔记主要是对 Java SE 和 Java EE 的一些基础知识做个总结,算是对自己学习的一个整理。如果有错误或遗漏的地方,欢迎交流!后续会持续更新相关的 Java 基础内容。
相关文章:
【Java 基础(人话版)】Java SE vs Java EE
Java SE vs Java EE:有什么区别? 最近在学习 Java 的时候,总是会看到 Java SE 和 Java EE 这两个概念。刚开始有点迷糊,后来查了资料、做了一些实验,终于弄清楚了它们的区别。这里记录一下,希望对以后复习…...
Nmap使用指南
Nmap使用指南 Nmap (网络映射器) 是一款强大的应用网络扫描和安全核查工具,适合于网络管理和安全专家。本文将介绍Nmap的基本使用方法,包括基本命令和常用功能。 1. 基本使用方式 Nmap的基本命令格式如下: nmap [选项] 目标地址目标地址 可…...
C#-委托
Action 无返回值,多线程常用 Action<string> action1 (name) > Console.WriteLine($"hello {name}"); action1("tom"); Func 有返回值,扩展方法常用,最后一个参数是输出参数 Func<int, int, double>…...
Qt中如果槽函数运行时间久,避免阻塞主线程的做法
Qt中如果槽函数运行时间久,避免阻塞主线程的做法 一、解决步骤 创建一个工作线程类:继承自QObject,并在其中实现槽函数的逻辑。将工作线程类的实例移动到单独的线程中:通过moveToThread()方法将对象移动到新线程。启动线程&…...
SQLark 数据迁移|断点续迁已上线(Oracle-达梦)
数据迁移是 SQLark 最受企业和个人用户欢迎的功能之一,截止目前已帮助政府、金融、能源、通信等 50 家单位完成从 Oracle、MySQL 到达梦的全量迁移,自动化迁移成功率达 96% 以上。 在 Oracle 到达梦数据库迁移过程中,SQLark V3.3 新增 断点续…...
【学术会议论文投稿】Spring Boot实战:零基础打造你的Web应用新纪元
第七届人文教育与社会科学国际学术会议(ICHESS 2024)_艾思科蓝_学术一站式服务平台 更多学术会议请看:https://ais.cn/u/nuyAF3 目录 一、Spring Boot简介 1.1 Spring Boot的诞生背景 1.2 Spring Boot的核心特性 二、搭建开发环境 2.1…...
【Multipath网络层协议】MPTCP工作原理
常见网络层多路径协议介绍 MPTCP(Multipath TCP) MPTCP 是在传统 TCP 基础上进行扩展的协议,它允许在源端和目的端之间建立多个 TCP子流,这些子流可以通过不同的网络路径传输数据。 例如,一台笔记本电脑同时连接了 W…...
【网络安全】从NA到P1,我是如何扩大思路的?
未经许可,不得转载。 本文涉及漏洞均已修复。 文章目录 正文正文 在这篇文章中,我将向大家展示一个我发现的漏洞,该漏洞利用了一个硬编码的 Basic 认证头,获取了管理员权限。 首先,假设公司域名为“target.com”。 第一步是使用多种工具(如 Amass、subfinder、findoma…...
使用 Postman 访问 Keycloak 端点
1. 引言 在本教程中,我们将首先快速回顾 OAuth 2.0、OpenID 和 Keycloak。然后,我们将了解 Keycloak REST API 以及如何在 Postman 中调用它们。 2. OAuth 2.0 OAuth 2.0 是一个授权框架,它允许经过身份验证的用户通过令牌向第三方授予访问…...
[AI机器人] Web-AI-Robot机器人前瞻版--比奇堡海之霸凯伦
文章目录 简述开源Web-AI-Robot 项目-比奇堡-海之霸-凯伦 技术架构效果预览 简述 本项目配合前端项目bikini_bottom_karen_ui运行,来源于柒杉工作室(截止2025.2,目前我自己)。 打造一个只需要在浏览器上运行的AI智能机器人&#…...
FastAPI 学习笔记
简介: FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 并基于标准的 Python 类型提示。 关键特性: 快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic&…...
CineMaster: 用于电影文本到视频生成的 3D 感知且可控的框架。
CineMaster是一种 3D 感知且可控的文本到视频生成方法允许用户在 3D 空间中联合操纵物体和相机,以创作高质量的电影视频。 相关链接 论文:cinemaster-dev.github.io 论文介绍 CineMaster是一种用于 3D 感知和可控文本到视频生成的新型框架。目标是让用…...
Linux上用C++和GCC开发程序实现两个不同PostgreSQL实例下单个数据库中多个Schema稳定高效的数据迁移到其它PostgreSQL实例
设计一个在Linux上运行的GCC C程序,同时连接三个不同的PostgreSQL实例,其中两个实例中分别有两个数据库中多个Schema的表结构分别与第三实例中两个数据库中多个Schema个结构完全相同,同时复制两个实例中两个数据库中多个Schema里的所有表的数…...
【Qt】ffmpeg照片提取、视频播放▲
目录 一、图像的成像原理: RGB成像原理: YUV成像原理: 二、多线程 三、ffmpeg解码(照片提取) 1.准备工作 (1)在工程文件夹里面新建三个文件夹 (2)在main函数中加…...
大语言模型中的 Token:它们是什么,如何工作?
引言 如果你使用过 ChatGPT 这样的 AI 工具,你可能会好奇:它是如何理解并生成文字的?大语言模型(LLM,Large Language Model)并不是直接处理整个句子或文章,而是拆分成一个个 Token(…...
如何评估所选择的PHP后端框架的性能?
大家在选择PHP后端框架的时候,如果想评估其性能如何,能不能扛得住你的项目?可以根据以下几点进行分析,帮助大家选择到更符合自己心目中的PHP后端框架。 1. 基准测试 基准测试是评估框架性能的基础方法,主要通过模拟高…...
从UNIX到Linux:操作系统进化史与开源革命
从UNIX到Linux:操作系统进化史与开源革命 一、操作系统:数字世界的基石 1.1 什么是操作系统? 操作系统(OS)是计算机系统的核心管理者,承担着三大核心使命: 硬件指挥官:直接管理C…...
神经网络 - 激活函数(Sigmoid 型函数)
激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力,激活函数需要具备以下几点性质: (1) 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数. (2) 激活函数及其导函数要尽可能的简单࿰…...
【AD】3-10 原理图PDF导出
文件—智能PDF 多页原理图导出 导出设置时选择工程,可自行选择导出一页或多页原理图,一般PCB不用导出...
Linux上用C++和GCC开发程序实现两个不同MySQL实例下单个Schema稳定高效的数据迁移到其它MySQL实例
设计一个在Linux上运行的GCC C程序,同时连接三个不同的MySQL实例,其中两个实例中分别有两个Schema的表结构分别与第三实例中两个Schema个结构完全相同,同时复制两个实例中两个Schema里的所有表的数据到第三个实例中两个Schema里,使…...
C进阶 自定义类型
目录 前言 一 结构体 二 结构体的存储 三 位段 四 枚举 五 联合体 总结 前言 我们之前学习的int char double ......都是内置类型,但是我们今天所学习的是自定义类型,比如联合体,结构体,枚举 一 结构体 结构体是一…...
010 rocketmq批量消息
文章目录 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量发送可以提⾼发送性能,但有⼀定的限制: topic 相同 waitStoreMsgOK 相同 (⾸先我们建设消息的iswaitstoremsgoktrue(默认为true), 如果没有异常,我们将始终收到"O…...
【华三】从零开始掌握SR技术:原理、架构与应用全解析
【华三】从零开始掌握SR技术:原理、架构与应用全解析 一、初识SR:路由技术的新革命1.1 传统网络的困扰:从真实案例看技术瓶颈1.1.1 企业网络运维之痛问题2:流量工程实现困难问题3:网络智能化缺失 1.2 SR的诞生意义&…...
安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类
文章目录 引言pom.xmlI 校验注解ApiValidationII token服务TokenService获取当前用户信息的辅助类III 域登录接口响应数据登陆用户信息引言 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO…...
考虑复杂遭遇场景下的COLREG,基于模型预测人工势场的船舶运动规划方法附Matlab代码
考虑复杂遭遇场景下的COLREG,基于模型预测人工势场的船舶运动规划方法附Matlab代码 一、引言 1.1、研究背景和意义 随着全球航运业的迅猛发展,船舶交通密度不断增大,海上交通事故频发,严重威胁到海上航行的安全。国际海上避碰规…...
构建高效系统:API接口设计规范详解
在当今的数字化时代,应用程序接口(API,Application Programming Interface)已成为连接不同软件系统和服务的桥梁,是推动数字化转型的关键技术之一。无论是企业内部系统集成、第三方服务接入,还是面向开发者…...
【文献阅读】A Survey Of Resource-Efficient LLM And Multimodal Foundation Models
发表时间:二〇二四年九月二十三日 摘要 大型基础模型,包括大语言模型(LLMs)、视觉Transformer(ViTs)、扩散模型以及基于大语言模型的多模态模型,正在革新整个机器学习的生命周期,…...
mysql 全方位安装教程
下载 MySQL 【官网下载地址】 注意要选择较大的哪个安装包,小的安装包是一个安装器。 我们不用登录,直接下载 直接运行下载好的安装包 MySQL如果是 安装包安装, 可以图形化界面自主配置 如果是压缩包解压, 可以配置 配置文件, 可以解压安装到指定的…...
【Linux】Linux的进程控制
目录 1. 学习思维导图 2.进程创建(fork) 2.1 fork创建进程失败 3.进程终止 3.1 进程退出情况 3.1.1main函数 3.1.2 退出码 3.2 exit/_exit函数 1. exit() 函数 2. _exit() 函数 4.进程等待 4.1 实现进程等待的方法 wait/waitpid方法 区别&a…...
金融支付行业技术侧重点
1. 合规问题 第三方支付系统的平稳运营,严格遵循《非银行支付机构监督管理条例》的各项条款是基础与前提,其中第十八条的规定堪称重中之重,是支付机构必须牢牢把握的关键准则。 第十八条明确指出,非银行支付机构需构建起必要且独…...
Django模型管理器/QuerySet 常见的方法
模型管理器/QuerySet 常见的方法 get([**kwargs]) 方法 用途:获取满足条件的唯一对象。参数:关键字参数,指定查询条件。返回值:模型对象。异常:如果找到多个对象或未找到对象,将分别抛出 MultipleObjects…...
QT播放视频保持视频宽高比消除黑边
QT播放视频保持视频宽高比消除黑边 1、问题 在播放视频的时候,由于框架的大小发生变化,导致视频出现黑边很不好看。 因此需要像一种方法消除黑边 2、处理 1、读取视频的宽高比 2、设置视频的Widget的大小固定,Widget的宽高比和视频宽高比…...
在Ubuntu中,某个文件的右下角有一把锁的标志是什么意思?
在Ubuntu中,某个文件的右下角有一把锁的标志是什么意思? 在 Ubuntu(或其他基于 GNOME 文件管理器的 Linux 发行版)中,文件或文件夹的右下角出现一把“锁”标志,通常表示 你当前的用户没有该文件/文件夹的写…...
聊聊Java的SPI机制
个人自建博客地址 什么是SPI呢? SPI全称Service Provider Interface,翻译过来就是服务提供者接口。调用方提供接口声明,服务提供方对接口进行实现,提供服务的一种机制,服务提供方往往是第三方或者是外部扩展。 下面…...
【 实战案例篇三】【某金融信息系统项目管理案例分析】
大家好,今天咱们来聊聊金融行业的信息系统项目管理。这个话题听起来可能有点专业,但别担心,我会尽量用大白话给大家讲清楚。金融行业的信息系统项目管理,说白了就是如何高效地管理那些复杂的IT项目,确保它们按时、按预算、按质量完成。咱们今天不仅会聊到一些理论,还会通…...
go并发编程
https://www.bilibili.com/video/BV16A4y1f7EX sync包工具 Mutex:同一时间只有一个goroutine持有锁,其它申请该锁的goroutine会被阻塞。RWMutex:允许多个协程同时读取共享数据,但写入时需要独占锁。WaitGroup:等待一组…...
使用Python开发以太坊智能合约:轻松入门与深度探索
使用Python开发以太坊智能合约:轻松入门与深度探索 随着区块链技术的快速发展,以太坊作为最为成熟和广泛使用的智能合约平台,成为了开发去中心化应用(DApp)的核心工具。智能合约不仅是区块链技术的基础,更…...
Python从0到100(八十九):Resnet、LSTM、Shufflenet、CNN四种网络分析及对比
前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…...
密码学(哈希函数)
4.1 Hash函数与数据完整性 数据完整性: 检测传输消息(加密或未加密)的修改。 密码学Hash函数: 构建某些数据的简短“指纹”;如果数据被篡改,则该指纹(以高概率)不再有效。Hash函数…...
设计模式Python版 备忘录模式
文章目录 前言一、备忘录模式二、备忘录模式示例1三、备忘录模式示例2 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式:…...
CES Asia 2025聚焦量子计算,多领域进展引关注
作为亚洲地区极具影响力的科技盛会,CES Asia 2025第七届亚洲消费电子技术贸易展(赛逸展)将在首都北京举办。本届展会以“创新、智能、互联”为主题,将全方位展示全球消费科技领域的最新成果与发展趋势。其中,量子计算作…...
MySQL索引深度剖析:从数据结构到实际应用
引言 在数据库系统中,索引是提高查询效率的关键技术之一。MySQL作为最流行的关系型数据库之一,其索引机制尤为重要。本文将剖析MySQL索引的数据结构、分类、创建方式以及实际应用场景,帮助读者更好地理解和应用索引技术。 主体部分 1. MyS…...
【deepseek】本地部署+RAG知识库挂载+对话测试
文章目录 前言一、Deepseek模型下载(以7B为例)二、RAG本地知识库挂载三、创建本地对话脚本四、结果展示 前言 本文主要涵盖Deepseek在ubuntu系统中的部署全流程,包括模型的下载、系统部署、本地文档向量化、向量列表存储、RAG知识库挂载、对话测试等内容 一、Deeps…...
Vue.js 组件开发全面详解及应用案例
Vue.js 的组件化开发是其核心特性之一,使得代码复用、维护和扩展变得更加容易。以下是关于 Vue.js 组件开发的全面解析,并附带一个实际应用案例。 一、组件基础概念 1. 什么是组件? 组件是 Vue 应用的基本构建块,封装了 HTML、C…...
java面试场景问题
还在补充,这几天工作忙,闲了会把答案附上去,也欢迎各位大佬评论区讨论 1.不用分布式锁如何防重复提交 方法 1:基于唯一请求 ID(幂等 Token) 思路:前端生成 一个唯一的 requestId(…...
MySQL数据库基本概念
目录 什么是数据库 从软件角度出发 从网络角度出发 MySQL数据库的client端和sever端进程 mysql的client端进程连接sever端进程 mysql配置文件 MySql存储引擎 MySQL的sql语句的分类 数据库 库的操作 创建数据库 不同校验规则对查询的数据的影响 不区分大小写 区…...
【wiki知识库】07.用户管理后端SpringBoot部分
目录 一、今日目标 二、??SpringBoot部分类的添加 2.1 使用逆向工程新增User模块 2.2 UserQueryParam添加 2.3 UserSaveParam添加 2.4 UserResetPasswordParam添加 2.5 UserQueryVo添加 2.6 SnowFlake工具类 三、??后端新增接口? 3.1 /user/list接口添加 3.2 /…...
千峰React:案例二
完成对html文档还有css的引入,引入一下数据: import { func } from prop-types import ./购物车样式.css import axios from axios import { useImmer } from use-immer import { useEffect } from reactfunction Item() {return (<li classNameacti…...
Junit框架缺点
JUnit 是 Java 生态中最流行的单元测试框架,广泛应用于单元测试和集成测试中。尽管它功能强大且易于使用,但也存在一些缺陷和局限性。以下是 JUnit 的主要缺点: 1. 功能相对固定 问题:JUnit 的核心功能相对固定,缺乏灵…...
计算机毕业设计SpringBoot+Vue.js公司日常考勤系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...