zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    AcWing 225. 矩阵幂求和 (矩阵快速幂+分治)打卡
    AcWing 220.最大公约数 欧拉函数打卡
    2019 牛客暑期多校 B generator 1 (矩阵快速幂+倍增)
    2019 牛客暑期多校 G subsequence 1 (dp+组合数)
    LINUX查看文件大小
    TFTP error: 'Only absolute filenames allowed' (2)
    zmediaboard-Hi3518参数及配置
    移植RTL8188CUS USB-WIFI(移植失败)
    如何安裝繁體暴雪應用程式
    MySQL添加用户、删除用户与授权
  • 原文地址:https://www.cnblogs.com/JHelius/p/11970382.html
Copyright © 2011-2022 走看看