Java基础概念解析
引言
什么是Java?这个问题即便是问入行已经多年的老Java开发,也不是所有人都能说出所以然。所以整理出了以下的基础概念,为初入Java海洋的人一点指引。本文部分内容引自网络。
JVM、JRE、JDK
Java通过JVM(虚拟机)来达到跨平台。开发者使用JDK开发程序,通过编译器编译后,JVM调用JRE类库组件针对不同的系统环境对编译码进行解释,并执行程序。
Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。
JDK是开发者使用的,里面包含了各种API。JRE是供JVM虚拟机调用的类库。
JRE及JVM是用户使用的,他们不包含编译程序。
在我们安装JDK的时候,目录中已经包含了JRE及JVM。
注意:跨平台的是 Java 程序,不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM。
由图中可以看出以下几点:
- JDK=JRE+多种Java开发工具
- JRE=JVM+各种类库
- 这三者的关系是一层层的嵌套关系。JDK>JRE>JVM
JVM:
JRE(JRE包含JVM):
JDK(JDK包含了JVM和JRE):
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境
Tomcat
Tomcat是web 服务器。我们做好的web应用程序需要Tomcat才能展现。而Tomcat又需要运行在系统上,就需要JVM(虚拟机系统)。
- 假设tomcat监听8080端口,当一个http请求从主机的8080端口发送过来时,tomcat最先获知。
- tomcat将此请求作为任务加入一个队列中,jvm中有若干工作者线程会从这个队列中获取任务。
- 假设工作线程A取到了这个任务,那么线程A通过分析请求的url,检查已加载的web.xml配置,来判断此请求应该交给应用的哪个servlet处理(假设应用是用servlet实现的)
- 工作线程A调用对应的servlet的方法(service/get/post等),把请求封装成request对象传给servlet
- 此时应用开始干活(实际上干活的还是工作线程,只不过执行的是应用中编写的业务逻辑),解析请求参数,处理业务流程,生成response
- 工作线程A把response回送给请求的发送端。
- 通常情况下,tomcat启动时候使用的jdk的路径默认为环境变量里配置的JAVA_HOME;
- 修改默认jdk:我们都知道启动tomcat可以通过运行bin下的startup.bat,startup.bat会调用catalina.bat文件,而catalina.bat会调用setclasspath.bat文件来获取JAVA_HOME和JRE_HOME这两个环境变量的值,因此若要在tomcat启动时指向特定的JDK,则需在setclasspath.bat文件的开头处加上JAVA_HOME和JRE_HOME。
- eclipse自带编译工具,只需用jre即可(java项目只能运行在jvm上/运行类库) jdk开发工具包
JavaEE、JavaSE、JavaME
使用较多的是JavaEE,主要做web。JavaSE中也有web相关模块,但是比JavaEE弱。
- javase: 即J2SE, java标准版, 主要做一般的java应用, 比如, 应用软件/ QQ之类的通信软件等等.
- javaee: 即J2EE, 主要做企业应用, 比如公司网站, 企业解决方案等;
- javame: 即J2ME, 主要面向嵌入式等设备应用的开发, 比如手机游戏等
IDE-IntelliJ IDEA
主流使用IntelliJ IDEA,分企业版(收费)及社区版(免费)。企业版包含Java EE(Java的企业版)全部内容。
项目管理-Maven
之前主流用Ant,但是目前已经被Maven及Gradle取代。其中,Gradle是最新的项目管理软件,但是国内主要还是以Maven为主。Maven可以用来管理、配置、测试和部署项目,拥有生命周期及仓储概念。它将项目本身所有依赖项通过网络下载到仓储。可以通过修改POM配置文件来随时修改本项目的依赖项,而Maven会实时更新仓储。
版本管理-Git
目前使用的版本管理软件主要有svn及Git。相比前者,由于Git有本地缓存区的概念,可以轻易建立分支(包括离线建立分支),同时可以离线查看历史记录等。 Git的使用者以及越来越多,Git+Maven已经是比较主流的Java开发选择。
Spring Boot
SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。
参考引用:
作者:Mr.Jimmy
出处:https://www.cnblogs.com/JHelius
联系:yanyangzhihuo@foxmail.com
如有疑问欢迎讨论,转载请注明出处