Java学习路线,Java SE,EE,ME的区别,SSM框架基本概念

Posted 小哈里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习路线,Java SE,EE,ME的区别,SSM框架基本概念相关的知识,希望对你有一定的参考价值。

1、尚硅谷

视频课程:https://www.bilibili.com/read/cv5216534

初学者可按照尚硅谷公开的JAVA视频最快学习路线:
JavaSE --> mysql–> JDBC --> JavaWeb --> Spring5 --> SpringMVC --> MyBatis --> Maven --> Ssm框架整合案例 --> Git/GitHub --> Redis6 --> MySQL高级优化 --> MyBatisPlus --> Spring注解驱动开发 --> ZooKeeper --> Dubbo --> 消息中间件ActiveMQ --> RabbitMQ -->RocketMQ–>SpringBoot2 --> SpringCloud --> 尚筹网项目 --> 在线教育项目 --> 谷粒商城项目 --> 尚医通项目 --> 尚融宝项目–> 高频面试题第一季 --> 大厂面试题第二季 --> 大厂面试题第三季

Java核心–夯实根基——》》
Java基础:尚硅谷Java入门视频教程(在线答疑+Java面试真题)
IDEA:尚硅谷IDEA教程(idea经典之作,idea安装,idea使用)
MySQL:【宋红康】MySQL数据库(mysql安装/基础/高级/优化)
JDBC:尚硅谷JDBC核心技术视频教程(康师傅带你一站式搞定jdbc)
JavaWeb:尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版
JVM:尚硅谷宋红康JVM全套教程(详解java虚拟机)
JUC:【尚硅谷】大厂必备技术之JUC并发编程

前沿框架–掌控趋势——》》
Spring5:尚硅谷Spring框架视频教程(spring5源码级讲解)
Spring Boot2:尚硅谷雷神SpringBoot2零基础入门springboot全套完整版(spring boot2)
SpringCloud:尚硅谷SpringCloud框架开发教程(SpringCloudAlibaba微服务分布式架构丨Spring Cloud)
K8S:【尚硅谷】Kubernetes(k8s)入门到实战教程丨全新升级完整版
Redis:【尚硅谷】Redis 6 入门到精通 超详细 教程
Docker:【尚硅谷】全新2022版Docker与微服务实战教程(从入门到进阶)
nginx:尚硅谷Nginx教程由浅入深(一套打通丨初学者也可掌握)
MySQL优化:尚硅谷MySQL数据库高级,mysql优化,数据库优化
MyBatis:尚硅谷MyBatis实战教程全套完整版(初学者零基础从入门到精通,好评如潮,资料齐全)
Elasticsearch:【尚硅谷】ElasticSearch教程入门到精通(基于ELK技术栈elasticsearch 7.8.x版本)
Maven:Maven零基础入门教程(一套轻松搞定maven工具)
Git:尚硅谷Git入门到精通全套教程(涵盖GitHub\\Gitee码云\\GitLab)

面试&项目–冲击40w年薪——》》
经典面试题:尚硅谷经典Java面试题第一季(java面试精讲)
大厂面试题第2季:尚硅谷Java大厂面试题第2季,面试必刷,跳槽大厂神器
大厂面试题第3季:尚硅谷Java大厂面试题第3季,跳槽必刷题目+必扫技术盲点(周阳主讲)
尚医通项目:尚硅谷Java微服务+分布式+全栈项目【尚医通】
尚融宝项目:尚硅谷《尚融宝》Java微服务分布式金融项目
尚筹网项目:尚硅谷尚筹网Java项目实战开发教程(含SSM框架,微服务架构,封捷主讲)
谷粒学院项目:尚硅谷_谷粒学苑-微服务+全栈在线教育实战项目
谷粒商城项目(对标阿里P6/P7):Java项目《谷粒商城》Java架构师 | 微服务 | 大型电商项目
云原生实战:云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps

2、Java SE,EE,ME的区别

  • JAVA SE 标准班
    开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。是EE,和ME的基础。一般就是指JDK。
    就是Java的基础语法(变量、方法、类之间的调用、关系,继承、接口、线程之类的),工具包(java.util.* ),或者其他的一些封装
  • JAVA EE 企业版,也叫J2EE
    一套规范接口,是规范,并不是实现。就是用java语言做企业开发(目前看来就是开发一些动态网站,或者对外提供调用服务的网站,或者其他没接触过的。。。)中的一整套规范,比如类怎么封装,网页的请求要用什么方法处理,语言编码一类的处理,拦截器啊什么的定义,请求返回得有什么信息。。。(具体看servlet的接口就知道了)
    比如:tomcat就是按照这套规范开发的容器软件,还有什么weblogic,JBoss、Resin等等
    正因为我们开发网站(使用JSP,Servelet。。或者封装了这些的框架:SSH。。。)可以放在tomcat,也可以放在JBoss。。。。,
    因为都是按照一个规范开发的东西,实际使用的还是JavaSE的那些东西,多出来的就是EE的一些规范类的封装代码。
  • JAVA ME 微型版
    使用在手机啊,小设备啊上面的Java版本,特点就是小,相比JavaSE精简了很大一部分东西,增加了一些小设备上的专有API。
  • se写桌面应用,ee写web应用,me写移动应用。

3、JVM与JDK、JRE

  • jdk是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境JRE。
    JRE是JAVA程序运行时需要的运行环境,就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。
    JDk、JRE内部都包含JAVA虚拟机JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等。
  • 它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
    JVM是Java平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行时操作不同的内存区域。 JVM通过抽象操作系统和CPU结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方法、主机硬件、主机操作系统无关。
    JVM的主要工作是解释自己的指令集(即字节码)到CPU的指令集或对应的系统调用,保护用户免被恶意程序骚扰。 JVM对上层的Java源文件是不关心的,它关注的只是由源文件生成的类文件(.class文件)。

4、JUC是什么

  • JUC是 在Java 5.0添加的 java.util.concurrent包的简称,目的就是为了更好的支持高并发任务,让开发者利用这个包进行的多线程编程时可以有效的减少竞争条件和死锁线程

5、Java Web是什么(Java EE)

  • 可以粗略地认为JavaWeb就是JavaEE的一部分,是成为JavaEE大师过程中的第一站。
    JavaEE的技术包括两个部分,开发B/S架构(网站)和C/S架构(客户端)的内容,也就相当于QQ网页版和QQ的区别,B/S架构的那一套也就是我们所说的JavaWeb,C/S架构也就是桌面应用(客户端),所以说JavaEE包含了JavaWEB,这也就是JavaEE和JavaWeb的区别。

  • 是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。

  • Java web的工作流程
    Web浏览器发送HTTP请求到web服务器(tomcat)。
    服务器(tomcat)调用servlet对请求信息进行处理(单纯的业务逻辑处理,例如参数解析、请求转发)。
    servle再将逻辑处理结果交给jsp,动态输出HTML内容。
    动态生成的html内容返回到浏览器显示。

  • JSP:JSP就是在HTML内容中嵌入Java代码,因为HTML是没有逻辑处理能力的,只能向用户展示元素(文字,图片,输入框)。JSP规避了Servlet在生成HTML内容方面的劣势。

  • servlet:tomcat才是与客户端直接打交道的家伙,他监听了端口,请求过来后,根据url等信息,确定要将请求交给哪个servlet去处理,然后调用那个servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。

对servlet的一点补充:

我们为什么能通过Web服务器映射的URL访问资源?肯定需要写程序处理请求,主要3个过程:
接收请求
处理请求
响应请求

其中接收请求和响应请求是共性功能,且没有差异性。接收的都是?brandNo=1,响应给浏览器的都是JSON数
据。于是,大家就把接收和响应两个步骤抽取成Web服务器。
但处理请求的逻辑是不同的。没关系,抽取出来做成Servlet,交给程序员自己编写。
随着后期互联网发展,出现了三层架构,所以一些逻辑就从Servlet抽取出来,分担到Service和Dao。
但是Servlet并不擅长往浏览器输出HTML页面,所以出现了JSP。

等Spring家族出现后,Servlet开始退居幕后,取而代之的是方便的SpringMVC。SpringMVC的核心组件DispatcherServlet其实
本质就是一个Servlet。但它已经自立门户,在原来HttpServlet的基础上,又封装了一条
逻辑。



————————————————————————————————————————————————————————
Filter(过滤器)
当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter“放行”,那么会继承执行用户请求的
Servlet;如果Filter不“放行”,那么就不会执行用户请求的Servlet。
Listener(监听器)
监听器实际上就是接口回调。实现特定接口的普通Java程序,这个程序专门用于监听一个java对象的方法调用或
属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。


我所理解的JavaWeb三大组件(Servlet、Listener、Filter)
+ 不知道从什么时候开始,我们已经不再关心、甚至根本不知道到底谁调用了我写的这个程序,反正我写了一个
类,甚至从来没new过,它就跑起来了...
+ 我们把模糊的记忆往前推一推,没错,就是在学了Tomcat后!从Tomcat开始,我们再也没写过main方法。以
前,一个main方法启动,程序间的调用井然有序,我们知道程序所有流转过程。
+ 但是到了Javaweb后,Servlet/Filter/Listener一路下来我们越学越沮丧。没有main,也没有new,写一个类然后
在web.xml中配个标签,它们就这么兀自运行了。


6、Java Spring /SpringMVC 是什么

  • spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单 的Java对象(Plain Old Java Object,POJO)实现了EJB的功能

  • 虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配 置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入 了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。

  • Spring 两大核心 IOC 跟 AOP
    Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。
    DI—Dependency Injection,即“依赖注入”:由容器动态的将某个依赖关系注入到组件之中。
    面向切面编程AOP

  • Spring最早是由Rod Johnson这哥们在他的《Expert One-on-One J2EE Development without EJB》一书中提出的用来取代EJB的轻量级框架。随后这哥们又开始专心开发这个基础框架,并起名为Spring Framework。
    随着Spring越来越受欢迎,在Spring Framework基础上,又诞生了Spring Boot、Spring Cloud、Spring Data、Spring Security等一系列基于Spring Framework的项目。本章我们只介绍Spring Framework,即最核心的Spring框架。后续章节我们还会涉及Spring Boot、Spring Cloud等其他框架。

  • Spring Framework主要包括几个模块:
    支持IoC和AOP的容器;
    支持JDBC和ORM的数据访问模块;
    支持声明式事务的模块;
    支持基于Servlet的MVC开发;
    支持基于Reactive的Web开发;
    以及集成JMS、JavaMail、JMX、缓存等其他模块。

一点补充:

什么是AOP切面?
什么是切面?你可以这样想:一个公司有多个销售部,都需要行政帮忙搞定日常的订文具、机票、办公室、出差
酒店什么的,都需要财务搞定报销、收付款什么的事务吧,要仓库帮忙发货什么的。不可能每个销售部都去招几
个行政、财务和仓管什么吧,销售部门只要做好业务就行了,订文具什么的事情交个专门的部门去办就行。在
Spring AOP 中,把这些公共的事务,也就是这个例子中的行政啊、财务啊、仓管啊,看成一个个切面,让你的
开发的时候,专注于核心业务。


Tomcat和Spring什么关系?SpringMVC和Servlet什么关系?

简单总结Tomcat/SpringMVC/Spring/SpringBoot的关系
+ Tomcat是一个Web应用服务器,可以作为Servlet容器。它的作用是,解析客户端client发起的request,
并组装出HttpRequest、创建HttpResponse,将二者交于内部的HttpServlet处理和填充。
+ Tomcat映射处理请求的Servlet是通过web.xml做的。
+ SpringMVC使用一个DispatcherServlet来接收所有的请求,并把它们分发到不同的controller中来做进
一步处理。
+ SpringMVC = Spring + Web框架,Spring这部分主要是AOP/IOC容器。
+ SpringBoot是Spring的扩展,简化了Spring的配置,通过starter的方式简化了常用组件依赖的引入,使
其更加易用。
+ SpringBoot内置了tomcat。


Spring/SpringMVC的关系
+ 可以把spring看成是一个工具箱,里面有各种工具,springmvc只是其中的一把扳手。
+ Spring整体框架的核心思想是容器,用来管理bean的生命周期,而一个项目中会包含很多容器,并且它们分
上下层关系,目前最常用的一个场景是在一个项目中导入Spring和SpringMVC框架,而Spring和SpringMVC
其实就是两个容器,Spring是父容器,SpringMVC是子容器,Spring父容器中注册的Bean对SpringMVC子容
器是可见的,反之则不行。
+ 简单走个流程的话,http请求一到,由容器(如:tomact)解析http搞成一个request,通过映射关系(路
径,方法,参数啊)被spring mvc一个分发器去找到可以处理这个请求的bean,那tomcat里面就由spring管
理bean的一个池子(bean容器)里面找到,处理完了就把响应返回回去。


MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型
(Model)、视图(View)和控制器(Controller)。
1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。
2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。
3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的
数据,然后对其进行相应的操作,产生最终结果。
比如一家商场,完全可以分成三部分。一部分是仓库,负责提供商品,这是"功能层"(或者"数据层");另一部
分是零售铺面,负责销售商品,这是它的"外观层";两者之间就是"机制层",包括柜台和仓库之间一切互动的机制。

7、MyBatis是什么

  • MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
  • mybatis 就是你写了sql可以直接转对象,不用你手工转,而且支持一对一,一对多的关系表的orm(把面向对象的概念跟数据库中表的概念对应起来)
一点补充


Ssm框架是什么?
SSM框架是Spring MVC ,Spring和Mybatis框架的整合,是标准的MVC模式,将整个系统划分为View层,
Controller层,Service层,DAO层四层,使用Spring MVC负责请求的转发和视图管理,Spring实现业务对
象管理,Mybatis作为数据对象的持久化引擎。

如果我们把 SSM + 另外一些功能的框架看成一台台式电脑,主机上插了键盘、鼠标、显示器、优盘、音响……那
么 Spring 框架好像是电脑的主机,Spring MVC类似于显示器(Web交互很漂亮,对不对),MyBatis好比是
个硬盘(移动硬盘、优盘),其他的功能框架如安全框架 Shiro 好比是个指纹登录器。这些东西是不是都是插
主机上的?




8、Maven是什么

  • Maven是 Apache 下的一个纯 Java 开发的开源项目。
    用于项目构建,管理,jar包下载。
  • mvn compile 下载jar 并编译项目
    mvn test 执行test
    mvn dependency:sources 尝试下载source文件
    mvn eclipse:eclipse 生成eclipse的工程配置文件
我要做一盘红烧排骨,我需要下列材料:(瞎写的,别计较)

小排500克。
酱油20克
盐5克。
糖20克。
茴香5克。
姜,一个。
那么,我就要先去菜市场买小排,去超市买酱油,去南北货店买茴香。而且我还要自己去记。麻烦吗?

这个时候,有个超市,卖一个红烧排骨的一个包,把这些材料打包好,放在橱柜里卖。你要做的就是:

去超市
买这个红烧排骨包,里面包含了小排和所有要用到的材料。
然后,你就可以开始烧红烧小排了。至于这个红烧小排的配料怎么配,不用你操心,这个是超市做个包的配菜师
傅的事情。当然,你要宫保鸡丁的配料,这个师傅也会给你配好。

Maven就是这个超市,只是它卖的不是红烧排骨,而是一个jar包已经和它有依赖关系的其他jar包。这样,你就
不用再开撸java代码前,去各个网站下载各种不同的jar包了,也不用考虑它们之间的依赖关系。

这个就是Maven的作用。

其实就是BOM(Bill of Material)物料清单,也就是以数据格式来描述产品结构的文件。

9、更多数据处理

Elasticsearch(Elastic搜索)

  • 一个分布式的、开源的搜索分析引擎,支持各种数据类型,包括文本、数字、地理、结构化、非结构化。基于 Apache Lucene 。
  • 其中的工具可以帮助你实现可视化(Kibana)、接入(Beats、Logstash)和管理存储在 Elasticsearch 中的数据
  • 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。
    它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。

Redis6(远程字典服务)

  • Redis是现在最受欢迎的NoSQL数据库之一,一个使用ANSI C编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库

  • 基于内存运行,性能高效
    支持分布式,理论上可以无限扩展
    key-value存储系统

  • 哪些大厂在使用Redis?
    github
    twitter
    微博
    Stack Overflow
    阿里巴巴
    百度
    美团
    搜狐

  • Redis的应用场景有哪些?
    Redis 的应用场景包括:缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统。
    Redis提供的数据类型主要分为5种自有类型和一种自定义类型,这5种自有类型包括:String类型、哈希类型、列表类型、集合类型和顺序集合类型。

以上是关于Java学习路线,Java SE,EE,ME的区别,SSM框架基本概念的主要内容,如果未能解决你的问题,请参考以下文章

新手如何学习Java——Java学习路线图

新手如何学习Java——Java学习路线图

新手如何学习Java——Java学习路线图

java SE,EE,ME区别

请问Java SE EE ME等有啥区别?

Java SE ,Java EE和Java ME 的区别