杰瑞科技汇

Java与Java Web的核心区别是什么?

核心比喻:盖房子

为了让你有一个直观的理解,我们先用一个比喻:

Java与Java Web的核心区别是什么?-图1
(图片来源网络,侵删)
  • Java (Java SE - Standard Edition) 就像是 “盖房子的工具和建材”

    • 你有锤子、钉子、钢筋、水泥(Java语法、面向对象、集合、多线程、IO等)。
    • 你可以用这些工具和建材,在 本地 盖一个 桌面应用程序,比如一个计算器、一个文本编辑器,这个程序运行在你的个人电脑上,不依赖网络。
  • Java Web (Java EE - Enterprise Edition,现在叫 Jakarta EE) 就像是 “盖一个完整的、现代化的、可容纳很多人的商业大厦”

    • 它不仅包含了“盖房子的工具和建材”(Java SE的所有功能),还提供了更多 专门用于盖大厦的“蓝图和高级设备”
    • 这些高级设备包括:电梯(Servlet/JSP)、中央空调(EJB)、安保系统(安全框架)、物业管理(JPA/Hibernate)、水电系统(JDBC)等。
    • 这个大厦是为 “网络上的用户” 服务的,用户通过浏览器(客户端)访问大厦里的各种服务(服务器端程序)。

Java是基础,Java Web是建立在Java基础之上,专门用于开发网络应用的技术体系。


详细区别对比

下面我们从几个关键维度进行详细对比:

Java与Java Web的核心区别是什么?-图2
(图片来源网络,侵删)
对比维度 Java (通常指 Java SE) Java Web (通常指 Jakarta EE / Spring 等框架)
运行环境 客户端,程序直接在用户的操作系统上运行,如 Windows, macOS, Linux。 服务器端,程序部署在服务器上(如 Tomcat, Jetty, WebLogic),用户通过浏览器等客户端访问。
主要用途 开发 桌面应用程序移动应用(Android)、嵌入式系统等。 开发 网站后端企业级应用Web服务(API)微服务等。
核心技术 - 基础语法: 类、对象、继承、多态等。
- 核心库: java.lang, java.util, java.io, java.net 等。
- 虚拟机: JVM。
- 常见技术: Swing, AWT (桌面UI), JavaFX。
- Web容器/Servlet: Servlet, JSP (JavaServer Pages)。
- 企业级API: EJB (Enterprise Java Beans), JMS (Java Message Service)。
- 持久层框架: JDBC, JPA (Java Persistence API), Hibernate, MyBatis。
- Web框架: Spring MVC, Spring Boot, Struts。
- 依赖注入: Spring IoC/DI。
交互方式 直接交互,用户直接操作程序界面(如点击按钮、输入文本),程序直接响应用户操作。 间接交互,用户通过浏览器(或App)发送HTTP请求,服务器上的Java Web程序处理请求,然后返回HTML、JSON或XML等响应数据,再由浏览器渲染后展示给用户。
程序入口 public static void main(String[] args),每个应用程序都有一个唯一的 main 方法作为入口点。 Servlet容器,没有固定的 main 方法,程序由Web容器(如Tomcat)启动和管理,容器根据用户的HTTP请求URL,调用对应的 Servletservice()doGet()/doPost() 方法。
状态管理 通常是无状态的,或者状态保存在本地内存中。 需要处理 会话状态,服务器需要识别和管理不同用户的会话,通常使用 SessionCookie 等技术来记录用户状态。
开发复杂度 相对简单,项目结构清晰,主要关注业务逻辑和本地UI。 相对复杂,需要考虑分层架构(表现层、业务逻辑层、数据访问层)、高并发、安全性、事务管理、分布式等问题。

一个简单的例子来感受区别

假设我们要做一个“用户登录”功能。

用 Java SE 开发(桌面版)

  • 界面: 使用 Java Swing 创建一个登录窗口,上面有“用户名”输入框、“密码”输入框和“登录”按钮。
  • 交互流程:
    1. 用户在本地电脑上打开这个程序。
    2. 在窗口里输入用户名和密码,点击“登录”按钮。
    3. 程序触发一个按钮点击事件。
    4. 程序的代码(在 main 方法所在类或其事件监听器里)获取输入框的值。
    5. 程序将这个值与 本地文件或本地数据库 中的数据进行比对。
    6. 如果匹配,弹出一个“登录成功”的对话框;否则,弹出“用户名或密码错误”。

用 Java Web 开发(网站版)

  • 界面: 网页(HTML + CSS + JavaScript)。
  • 交互流程:
    1. 用户在浏览器中输入网址,打开登录页面。
    2. 用户在网页的输入框里输入用户名和密码,点击“登录”按钮。
    3. 浏览器将用户名和密码打包成一个 HTTP POST 请求,发送到服务器的 /login 这个URL上。
    4. 服务器上的 Web容器(如Tomcat) 接收到请求,发现请求URL是 /login,于是调用我们编写的 LoginServlet
    5. LoginServletdoPost() 方法被触发,它从HTTP请求中解析出用户名和密码。
    6. LoginServlet 调用 业务逻辑层 的代码,再调用 数据访问层 的代码(如JPA/MyBatis),去 远程数据库 中查询用户信息。
    7. 数据库返回查询结果。
    8. LoginServlet 根据结果,生成一个HTTP响应,如果成功,可以重定向到主页;如果失败,可以返回登录页面并附带错误信息。
    9. 浏览器接收到HTTP响应,并根据响应内容更新页面,展示给用户。

总结与学习路径

  • Java 是基础:学习Java Web之前,必须扎实地掌握Java SE的基础知识,包括语法、面向对象、集合、IO、多线程等,没有Java SE,Java Web就是空中楼阁。
  • Java Web是应用:Java Web是Java技术在特定领域(Web开发)的延伸和应用,它引入了大量的新概念和技术来解决网络环境下的开发问题。

给初学者的学习建议路径:

  1. 第一步:学习 Java SE,把基础打牢,能独立用Java Swing/AWT写一些小的桌面程序。
  2. 第二步:学习Web基础,了解HTTP协议、HTML、CSS、JavaScript的基本知识,知道浏览器是如何和服务器通信的。
  3. 第三步:学习Java Web核心,从最基础的 Servlet 和 JSP 开始,理解Web容器的工作原理,如何处理请求和响应。
  4. 第四步:学习主流框架,学习 Spring Framework,特别是 Spring MVC,它极大地简化了Java Web开发,现在更推荐学习 Spring Boot,它让配置和部署变得异常简单。
  5. 第五步:学习持久层和数据库,学习 JDBC 原理,然后掌握一个主流的持久层框架,如 MyBatisSpring Data JPA
  6. 第六步:学习项目构建与版本控制,学习使用 MavenGradle 管理项目依赖,使用 Git 进行代码版本控制。

希望这个详细的解释能帮助你彻底理解Java和Java Web的区别!

Java与Java Web的核心区别是什么?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇