【JavaEE】JavaEE、web 开发、框架(Spring) 、Maven

news2024/12/27 9:01:36

文章目录

  • 一、JavaEE 发展历程
  • 二、什么是 web 开发
    • 1、什么是 web 开发?
    • 2、web 网站的工作流程
  • 三、框架
    • 1、什么是框架?
    • 2、为什么要学框架?
    • 3、框架的优点(Spring Boot VS Servlet)
  • 四、Maven

一、JavaEE 发展历程

JavaSE: Java标准开发,适合所有行业,主要是 Java 语法。
JavaEE: Java企业开发,主要面向企业开发。

Java EE(Java Platform Enterprise Edition),Java 平台企业版。是 JavaSE 的扩展,用于解决企业级的开发需求,所以也可以称之为是一组用于企业开发的Java技术标准。所以,学习JavaEE 主要是学习 Java 在企业中如何应用。

  1. 最早的时候,Java 企业扩展还是核心 JDK 的⼀部分(核心 JDK 通常指 Java SE)
  2. 到了 1999 年,Java 企业扩展被剥离出 Java SE,成为了 Java 2的⼀部分,也就是 J2EE,或者Java 2 平台企业版(Java 2 Platform Enterprise Edition)。J2EE 这个称呼⼀直维持到2006年。
  3. 2006年,J2EE 被重命名为 Java EE,或者说 Java 平台企业版(Java Platform Enterprise Edition)。
  4. 2017年,Oracle 决定将 Java EE 捐赠给 Eclipse 基金会,但是附加条件是不允许开源组织使用Java的名号。
    这就迫使 Eclipse 基金会不得不对JavaEE进行改名。但是,在给项目命名的时候,Eclipse基金会⼀筹莫展。为了起出合适的名字,Eclipse决定开始⺠意投票,并给出了 “Jakarta EE” 和 “Enterprise Profile” 两个备选名字。最后,Jakarta 以 64.4% 的票数获胜。从此之后,Java EE 正式更名为 Jakarta EE(雅加达)。
  5. 2018年3月更名为 Jakarta EE
    但其实Jakarta这个名字并不新鲜,⼀个早期的 Apache 开源项⽬就叫 Jakarta,也是为Java而生。从民意投票上来看,Jakarta 这个名字其实也是重新回归⼤众了。
    Jakarta EE 的前世今生参考:http://www.mybatis.cn/archives/857.html

二、什么是 web 开发

Java 更多场景是业务开发,更狭义点可以理解为 web 开发。

1、什么是 web 开发?

web(World Wide Web(www))即全球广域网,也称为万维网。简单来说,就是可以通过浏览器来和我们的程序进行交互,⽐如京东,淘宝,天猫,美团等网站项目。

2、web 网站的工作流程

目前用户对PC端应用的开发结构模式主要分为 C/S 和 B/S 结构。

CS 即 Client/Server(客户机/服务器)结构。常见的 C/S 架构的应用比如 QQ,微信,各种网络游戏等等,⼀般需要安装并且与服务器进行网络通信的都属于此类。

BS 即 Browser/Server(浏览器/服务器)结构。B/S 架构全称是浏览器/服务器(Browser/Server)结构,分为 Web 浏览器、服务器程序、数据库服务三部分,可以理解为是对 C/S 架构⼀种改进,由于所有的业务逻辑都由服务器程序处理,所以客户端仅使用浏览器就可以完成所有操作,大大降低了客户端的维护成本。

架构优点缺点
C/S① 大部分业务都可以在客户端完成,充分利用本地的计算机资源;② 响应速度快;③ 个性化定制能力强;④ 面向相对固定的用户群,对信息安全的控制能力强① 需要安装客户端才能使用;② 维护成本高,任何⼀台电脑上的客户端出现问题都需要进行维护,升能过程繁琐
B/S① 客户端零维护,只需要安装⼀个浏览器即可;② 所有业务都集中在服务器端,业务扩展非常方便;③ 维护成本低,只需要维护服务器即可① 服务器安全与业务处理能力需要花费很大精力与成本;② 不同浏览器支持不尽人意

B/S 架构

  1. 通过浏览器访问前端程序,前端程序返回前端代码
  2. 前端程序调用后端程序,进行数据的获取(也可能由浏览器进行访问)
  3. 后端返回数据后,前端根据后端返回的数据进行页面渲染,显示页面

三、框架

1、什么是框架?

随着技术的发展,无论是后端开发还是前端开发,开发的时候都很少使用原生的代码,比如:JDBC、JS 等。取而代之的是各种开发框架,如:后端框架:Spring,SpringBoot,Mybatis等,前端常用的框架:Vue、Node等。这些框架都有⼀个共同的特点,就是简单、高效,这极大的提高了我们的开发效率。

那什么是框架呢?
框架(Framework),意思是框架、机制、准则。最早是源于建筑行业,是一个框子——指其约束性,也是一个架子指其支撑性,是一个基本概念上的结构,用于去解决或者处理复杂的问题。在计算机领域,可以看做是为应用开发者定制的应用骨架。

通俗的来讲:框架是实现某种功能的半成品,他提供了⼀些常用的工具类,我们在框架的基础上,可以更加高效的进行开发。也就是一些程序员把之前你需要写的,一些复杂的功能写好了,并且封装了起来,放在那里,你只需要调用他提供的接口就可以实现⼀些之前你需要花费很大功力才能实现的功能。框架就是一个封装了很多功能的东西,我们可以使用框架里的内容,然后也可以自定义一些自己的东西,就像继承重写一样。

Servlet 就是一个框架,Spring、Spring Boot、Spring MVC、Mybatis 都是一个框架。但是 Servlet 是一个旧一点的框架,Spring 开发比他高效的多,所以 Servlet 现在基本上不用了。而 Spring、Spring Boot、Spring MVC 可以看做是一家人,它们都是 Spring 家族的产品。Mybatis 是一个持久层框架,主要是用来帮助我们更好的操作数据库,通俗的来讲就是数据存在内存中只要服务器重启就会被清除,那么我们将数据存入硬盘里,也就是数据库,这样子就算服务器重启,内存中的数据被清除,我们也可以从数据库里面拿到原来的数据,这就是持久化的意思,而 Mybatis 就是一个让我们更好的来操作数据库的框架。

2、为什么要学框架?

  1. 学习框架相当于从 “小作坊” 到 “工厂” 的升级,小作坊什么都要自己做,工厂是组件式装配,特点就是高效。
  2. 框架更加易用、简单且高效。

3、框架的优点(Spring Boot VS Servlet)

使用 Spring Boot 项目框架相比于 Servlet 所具备的以下优点:

  1. 无需配置 Tomcat,点击 “运行” 按钮就可以运行项目,Spring Boot 内置了 Web 容器(可直接运行)。
  2. 快速添加外部 jar 包。
  3. 快速发布项目(使用 java -jar 方式就可以发布)。
  4. 对象自动装配。

四、Maven

这是作者写的 Maven 详解:https://blog.csdn.net/2301_79765510/article/details/144039274,所以本文就不详细介绍了,可以移步 Maven 详解篇了解 Maven

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用guzzlehttp异步多进程实现爬虫业务

Python和PHP核心技术共享平台 背景 小哥近来在通过动态代理池爬取一些公司需要的大文件pdf规格书的处理。遇到的难点,如何保证服务器CPU、连接数等正常情况下,多进程、异步快速处理这些业务并且保证准确。下面小哥就给看官唠嗑一下,我使用gu…

redis揭秘-redis01-redis单例与集群安装总结

文章目录 【README】【1】安装单机【1.1】安装环境【1.2】安装步骤 【2】redis集群主从模式配置【2.1】集群架构【2.2】redis集群主从模式搭建步骤【2.3】redis集群主从模式的问题(单点故障问题) 【3】redis集群哨兵模式配置【3.1】集群架构【3.2】redis…

蓝牙定位的MATLAB仿真程序|基于信号强度的定位,平面、四个蓝牙基站(附源代码)

这段代码通过RSSI信号强度实现了蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。它涵盖了信号衰减模型、距离计算和最小二乘法估计等基本概念。通过图形化输出,用户可以直观地看到真实位置与估计位置的关系。 文章目录 蓝牙定位原…

【网络篇】HTTP知识

键入网址到网页显示,期间发生了什么? 浏览器第一步是解析URL,这样就得到了服务器名称和文件的路径名,然后根据这些信息生成http请求,通过DNS查询得到我们要请求的服务器地址,然后添加TCP头、IP头以及MAC头&…

文件比较和文件流

文件比较和文件流 一、文本比较工具 diff1.基本用法1.1输出格式 2.常用选项 二、文件流1.文件的打开模式2.文件流的分类ifstreamofstreamfstrem区别 3.文件流的函数1. 构造函数2. is_open 用于判断文件是否打开3. open4. getline5. close6. get()7. read8. write9. put10. gcou…

使用ECharts创建带百分比标注的环形图

在数据可视化领域,环形图是一种非常有效的图表类型,它能够清晰地展示各部分与整体的关系。今天,我们将通过ECharts来创建一个带百分比标注的环形图,并详细解释如何实现这一效果。 1. 数据准备 首先,我们定义了一些基础…

win10环境mysql8.4免安装版配置

下载后解压 dos管理员,进入bin目录 mysqld -install net start mysql 出现错误,服务无法启动 MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。 services.msc,查看服务…

时频转换 | Matlab基于S变换S-transform一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式基本介绍 时频转换 | Matlab基于S变换S-transform一维数据转二维图像方法 程序设计 clear clc % close all load x.mat % 导入数据 x =

vue3项目中使用星火API

在node环境epxress中使用讯飞ai接口进行二次封装,通过ai对话回复提取,获得ai提取的文章摘要 本文章只是简单使用,更复杂功能比如调用星火API制作对话机器人可以查看文档,对于初次使用星火AI接口或许有帮助 讯飞星火大模型API-大模…

Leetcode - 周赛425

目录 一,3364. 最小正和子数组 二, 3365. 重排子字符串以形成目标字符串 三,3366. 最小数组和 四,3367. 移除边之后的权重最大和 一,3364. 最小正和子数组 本题可以直接暴力枚举,代码如下: …

linux系统信号简介

原文地址:linux系统信号简介 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 介绍 信号是一种重要的进程间通讯方式,这些信号有的有特定的用法,有的可作为扩展和自定义使用。并且大多数信号是可以被重新定义…

Linux 各个目录作用

刚毕业的时候学习Linux基础知识,发现了一份特别好的文档快乐的 Linux 命令行,翻译者是happypeter,作者当年也在慕课录制了react等前端相关的视频,通俗易懂,十分推荐 关于Linux的目录,多数博客已有详细介绍…

JavaScript对象笔记

JavaScript对象笔记 什么是JavaScript对象 JavaScript对象是一组键值对的集合,其中键是字符串(通常是字符串,但也可以是符号),值可以是任何数据类型。 特点 动态性:可以在运行时添加、删除或更改属性。灵…

如何快速使用Unity 的UPR---1资源检测保姆级

关于我们的性能检测工具已经有很多了,比如UWA的或者是我们的Unity 的UPR 都是很好的,今天说一下UPR吧 官方网址 :UPR - Unity专业性能优化工具 这个是官方给的Demo 选择你的平台就可以 这个可以作为一个参考但是不是很建议用官方的因为我们…

Qt桌面应用开发 第九天(综合项目一 飞翔的鸟)

目录 1.鸟类创建 2.鸟动画实现 3.鼠标拖拽 4.自动移动 5.右键菜单 6.窗口透明化 项目需求: 实现思路: 创建项目导入资源鸟类创建鸟动画实现鼠标拖拽实现自动移动右键菜单窗口透明化 1.鸟类创建 ①鸟类中包含鸟图片、鸟图片的最小值下标和最大值…

【实体配置】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

Pytorch-GPU版本离线安装

最近在复现一项深度学习的工作,发现自己的pytorch是装的cpu版的(好像当时是直接加清华源,默认是cpu版本)。从官网在线下载速度太慢,还时不时断开连接,我们可以配置conda的清华源去这个问题,但是考虑到是在用…

聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透

一、触发器(Trigger) Trigger 决定了一个窗口(由 window assigner 定义)何时可以被 window function 处理。 每个 WindowAssigner 都有一个默认的 Trigger。 如果默认 trigger 无法满足你的需要,你可以在 trigger(…) 调用中指定自定义的 tr…

[Redis#12] 常用类型接口学习 | string | list

目录 0.准备 1.string get | set set_with_timeout_test.cpp set_nx_xx_test.cpp mset_test.cpp mget_test.cpp getrange_setrange_test.cpp incr_decr_test.cpp 2.list lpush_lrange_test.cpp rpush_test.cpp lpop_rpop_test.cpp blpop_test.cpp llen_test.cpp…

网络安全之IP伪造

眼下非常多站点的涉及存在一些安全漏洞,黑客easy使用ip伪造、session劫持、xss攻击、session注入等手段危害站点安全。在纪录片《互联网之子》(建议搞IT的都要看下)中。亚伦斯沃茨(真实人物,神一般的存在)涉…