【Java基础篇】Java重要特性,JDK,JRE,JVM区别和联系,环境变量

博主简介 是瑶瑶子啦 ,一名大一计科生,目前在努力学习C进阶、数据结构、算法、JavaSE。热爱写博客~正在努力成为一个厉害的开发程序媛!
所属专栏: Java基础
往期博文回顾: 【Git篇】一文带你快速弄懂:Git、gitee、github简介、区别、关系,以及什么是版本管理?
️‍♂️ 近期目标:成为百粉小博主。持续输出JavaSE、C进阶、数据结构、算法相关的优质博客,
‍♀️ 写博客理念:力求用自己的语言加上自己的理解去阐述知识知识、技术(费曼学习法)。喜欢画图、思维导图去描述过程和知识之间的联系。
您的 点赞 关注 收藏 评论 ,是对我最大的激励和支持!!!
:“再牛的程序员也是从小白开始,既然开始了,就全身心投入去学习技术”

什么是程序?

个人认为:语言是用于沟通的,而高级程序语言就是用于人和计算机来进行沟通的(但又是间接沟通的)。用高级语言编写的程序(理解为人给计算机布置的一个任务),我们能看得懂每一句话什么意思,但是计算机看不懂。所以这个任务,也只能叫做一个任务,当经过编译之类的行为后(把这个任务用机器能看懂的语言翻译一下),生成了可执行程序,其实就是叫做:计算能够完成的任务。

Java的4个重要特性:

  • 面向对象(oop:object oriented programing)

  • 封装(encapsulation)--隐藏对象的内部属性和行为,但提供相应的方法,让其他的对象来访问/改变/获取它内部的数据/行为。

  1. 好处1:隐藏对象的属性,所以保护对象内部的状态

  1. 好处2:提高代码的可用性和可维护性(改起来比较方便):可以单独的去改变、扩展对象的行为(对象具有的方法)

  1. 好处:禁止对象之间不良交互,提高模块化(这个目前还没有太get到)

  • 继承(inheritance)--给对象从基类(父类)获取字段(属性)和方法(行为)的能力。提供了代码的重用性(也可以理解为简化了书写),在不修改类的情况下,给目前有的类,添加新的特性。

  • 多态(polymorphism)

  • 抽象(abstraction)--由具体抽取而来。(比如接口的创建,就是抽象的体现。目的是,分离类的行为和具体的实现细节

  • 健壮性:强类型机制、异常处理、垃圾回收机制

  • 解释型语言:

  • 和C语言不同,编译后的可执行文件可以直接被机器执行。java编译后生成的,class文件不能直接被机器执行,需要被jvm(java virtual machine)中的解释器(interpretor)来执行(虚拟机将.class文件解释给本地系统执行)。但正是这点,也就成就了java的一次编译,随处运行。

  • 跨平台性

  • 根本原因:jvm--做翻译&解释工作

【Java基础篇】Java重要特性,JDK,JRE,JVM区别和联系,环境变量_第1张图片

注意:不同平台所安装的jvm版本不同

JVM介绍--什么是JVM

JVM(java virtual machine)是一台虚拟计算机, 具有指令集,并使用不同的存储区域。包含在JDK(Java Developer's Kit)
  • 作用:执行指令,管理数据、内存、寄存器。

  • JVM是由c/c++编写而成,所以不同的平台需要安装不同的jvm(c/c++不能跨平台)

  • JVM屏蔽了底层运行平台的差别,实现了”一次编译,随处运行“

JDK介绍--什么是JDK

JDK(Java Developer's Kit) --java 开发者的工具集。通俗来说,就是 开发人员开发Java程序时所需要用到的工具(比如常见的:javac.exe \ java.exe) ,JDK 包含了JRE(Java Runtime Enviroment) &&开发工具集 (Toos&Tool APIs)-----编辑Java源码的编辑器-javac、Java程序调试和分析工具(JConsole,Web Services等工具软件)。
  • 作用:

  • JRE:

【Java基础篇】Java重要特性,JDK,JRE,JVM区别和联系,环境变量_第2张图片

来源--网图

JRE介绍--什么是JRE

JRE(Java Rountime Enviroment)--java运行工具,包括:JVM&&Java基础类库(Java SE API)

JDK&&JRE&&JVM

包含关系:

  • JDK=JRE+Tools&Tool APIs(开发者工具)

  • JRE=JVM+Java SE API(Java类库)

使用时的执行流程:

  • 开发者视角(需要开发java程序):需要安装JDK

  1. 首先使用JDK调用Tools&Tool APIs(开发者工具)编写好Java程序--xxx.java

  1. 再次调用Tools&Tool APIs中的javac.exe(编译程序)来编译.java文件(将java文件编译成字节码.class文件)

  1. 调用java.exe来启动JRE

  1. 在JRE上运行JAVA字节码(加载特定的.class文件,调用这个class文件中的main方法(让.class文件跑起来))--JVM解释器解释字节码文件,在解释的同时还要调用Java SE类库,再在虚拟机上执行.

虚拟机运行加载class,需要先找到main函数入口,才会执行后面的程序和功能

  • 使用者视角(不开发,只想直接运行编写好的java程序):只需要安装JRE

a. 同上d

【Java基础篇】Java重要特性,JDK,JRE,JVM区别和联系,环境变量_第3张图片

根据我的理解,画的流程图

JDK-配置环境变量

windows系统下:

  • 为什么要配置环境变量?

使在命令行执行命令时,不管在哪个目录下,jdk相关命令都能生效

在WIn10系统上,如果在当前目录下,执行的程序没有找到,win10系统会在系统已有的一个名为Path的环境变量中去查找,如果仍为找到,则会报错.
  • Windows的环境变量窗口在哪里?

此电脑-->属性-->高级系统设置-->高级-->环境变量

  • 用户变量&系统变量的区别?(通常"环境变量"指的是"系统环境变量")

  • 用户环境变量:只对当前用户起作用.

  • 系统环境变量:对所有用户起作用

  • 关系:系统一般会先检查用户环境变量,之后再检查系统环境变量.如果有同名变量名,并不会合并.

因为java.exe和javac.exe都在bin目录下,所以环境变量要配到bin目录,方可在任意目录启动java.exe和javac.exe

【Java基础篇】Java重要特性,JDK,JRE,JVM区别和联系,环境变量_第4张图片
【Java基础篇】Java重要特性,JDK,JRE,JVM区别和联系,环境变量_第5张图片

Linux系统下:

因为Linux系统目前用的不多,但是考虑到之后要学习,这里暂记一下

Linux环境变量配置全攻略

今天就先到这儿啦,如果觉得文章有用还请大家 点赞,评论,收藏~
虽然之前匆匆忙忙过了一遍JavaSE但基础肯定没有打牢,这次重新学习的话,对很多知识理解了不少,但
可能在理解方面可能会存在不正确或者理解偏了的情况,还请各位大佬多多指出,我会很高兴去的~

你可能感兴趣的:(java,开发语言)