JDK安装、配置及认识Java
JDK多版本安装及管理,相关博客:
如果卸载jdk,不要忘记清除环境变量
配置环境变量
JAVA_HOME
:jdk根目录
CLASSPATH
:%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;.
Path
:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
注意:windows10以上版本添加Path环境变量时,需要以;为分隔符,单独新建
打开cmd,输入以下指令测试是否成功
java -version
认识Java
三大版本
JavaSE(Java Standard Edition)
:标准版,定位在个人计算机上的应用意思是为了开发桌面应用(像C++的QT开发那样),但是Java发展最失败的地方就是开发桌面应用
但是JavaSE能做的远不止这些,而且他作为一个标准版,也是我们作为基础去学习的一个版本JavaEE(Java Enterprise Edition)
:企业版,定位在服务器端的应用这个版本的Java涵盖了各个领域的开发任务。使用范围非常的广。而且很多Java程序员在学完JavaSE之后,首选的也都是JavaEE
JavaME(Java Micro Edition)
:微型版,定位在消费性电子产品的应用上这个版本的应用领域也越来越小了,因为随着当今时代的发展,物联网已经逐步被人们所知晓。而物联网的发展就是基于安卓系统的
注意:JavaME和安卓开发是两种东西
JavaEE包含了JavaSE,但是JavaME和JavaSE之间只有一部分是共通的,剩下就是JavaME自身的东西了
而JavaEE和JavaME之间一点关系都没有
编译型 和 解释型
高级语言的运行机制
计算机高级语言按程序的执行方式可分为编译型(如C语言)和解释型(如Python)两种。
Java程序的运行机制
Java语言是一种特殊的高级语言,它既具有编译型语言的特征,也具有解释型语言的特征。Java程序要经过 先编译
、后解释
这两个步骤
编译型语言
是指使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式的语言。
特点:
在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如 exe
格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行 exe
文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。
解释型语言
是指使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。
特点:
解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。
Java和其他的语言不太一样,由Java编写的程序需要经过编译步骤(javac
),但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(也就是*.class
文件),这种字节码文件不是可执行的,必须使用Java解释器来解释执行。因此可以认为:Java语言既是编译型语言,亦是解释型语言。或者是,Java既不是纯粹的编译型语言,也不是纯粹的解释型语言。Java程序必须经过先编译、后解释这两个步骤。
注意:Java并不和操作系统直接挂钩,而是由jvm
或者说是jre
和操作系统挂钩
类加载器,字节码校验器,解释器。这三个是jre
的功能
可以理解为jre
包含了jvm
JVM、JRE和JDK
JVM(Java Virtual Machine)
就是一个虚拟的用于执行 bytecode
字节码的虚拟计算机。他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM负责将Java字节码解释运行,边解释边运行,这样,速度就会受到一定影响
不同的操作系统有不同的虚拟机。Java虚拟机机制屏蔽了底层操作平台的差别,实现了一次编译,随处运行
Java虚拟机是实现跨平台的核心机制
JRE(Java Runtime Environment)
包含:Java虚拟机、库函数、运行Java应用程序所必须的文件
JRE是java的运行时环境
JDK(Java Development Kit)
包含JRE,以及增加编译器和调试器等用于程序开发的文件
注意:我们提到了,java的源代码文件写完之后我们需要通过编译器将源码编译为字节码文件,然后将字节码文件给到JRE,然后由JVM来解释执行。最后由JVM来和操作系统进行联系
关于JDK闭源
可以回滚JDK版本
相关博客:https://blog.csdn.net/weixin_51773382/article/details/142279849
也可以使用OpenJDK
亚马逊OpenJDK相关博客:https://blog.csdn.net/jnbbwyth/article/details/133579516