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(虚拟机系统)。

  1. 假设tomcat监听8080端口,当一个http请求从主机的8080端口发送过来时,tomcat最先获知。
  2. tomcat将此请求作为任务加入一个队列中,jvm中有若干工作者线程会从这个队列中获取任务。
  3. 假设工作线程A取到了这个任务,那么线程A通过分析请求的url,检查已加载的web.xml配置,来判断此请求应该交给应用的哪个servlet处理(假设应用是用servlet实现的)
  4. 工作线程A调用对应的servlet的方法(service/get/post等),把请求封装成request对象传给servlet
  5. 此时应用开始干活(实际上干活的还是工作线程,只不过执行的是应用中编写的业务逻辑),解析请求参数,处理业务流程,生成response
  6. 工作线程A把response回送给请求的发送端。
  7. 通常情况下,tomcat启动时候使用的jdk的路径默认为环境变量里配置的JAVA_HOME;
  8. 修改默认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。
  9. 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是一个服务于框架的框架,服务范围是简化配置文件。

 

 

参考引用:

http://c.biancheng.net/view/5607.html

http://www.cnblogs.com/wangzhongqiu/

posted @ 2019-12-02 14:22  Hi-Jimmy  阅读(311)  评论(0编辑  收藏  举报