作者:困了电视剧
专栏:《JavaSE语法与底层详解》
文章分布:这是一篇知识点较为基础的文章,我会先将JavaSE相关的知识给罗列一遍,然后在后续的文章中会对其中重要的点再逐一进行底层剖析,欢迎订阅我的专栏!
目录
大家好!这里是困了电视剧,欢迎来到我的博客!今天我将和大家一起开始学习一门全新的语言——Java。作为当今世界上最火的语言之一,想要掌握Java还是需要下很多功夫的,我将在我以后的博客中持续分享我在学习中的发现和见解,如有疏漏和错误还请同学们指出和补充,好了,现在让我们开始今天的学习吧!
认识JDK,JRE,JVM
这三个可以说是Java语言的根本,我们从这三个点开始认识Java。JDK是Java的开发工具包,是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JRE(Java Runtime Environment)是Java运行环境,包含JVM标准实现及Java核心类库。
JVM(Java Virtual Machine)是java虚拟机,是java程序在运行时的环境,可以把他理解为一个虚构出来的计算机。
他们三者的关系如图所示。
JDK,JRE,JVM这三个东西中有很多学问,感兴趣的同学可以详细了解,在这里,我着重介绍三个方面--带大家去剖析一段java代码从编译到运行的步骤。
Java代码的编译与运行
要想更好地了解Java的运行机制,我们抛开常用的IDEA,eclipse等集成开发环境,用记事本写一段代码来直观感受一下。
我在我的电脑里新建了一个文本,现在我在这个文本中写上一段符合java语法的代码:
代码写好了,如图所示的一段代码,现在我们要做的事情是什么呢,我们改一下这个文件的属性,即把.txt后缀名改为.java后缀名:
好的,这一步完成后,我们的准备工作就完成了,接下来开始揭秘!
javac程序的作用
JDK中包含一个名为javac的应用程序,这个程序值在JDK中,JRE中没有,它的作用是什么呢?他可以将你写的java程序编译成一个字节码文件,即.class结尾的文件,具体是怎么做的?我们一步一步的进行:
首先打开控制台,输入cmd打开命令行:
会看到如图所示的界面,然后我们赋值这个文件的地址找到这个文件:
我们还可以输入dir来查看这个目录下面有哪些文件:
好,找到文件后接下来就是见证奇迹的时刻;
我用javac对这个 Java文件进行编译,然后我们就会发现我们存放文件的目录下面多了一个新的文件:
这就是javac将java文件编程成字节码文件的过程。
java程序的作用
JRE中包含了一个java程序,这个程序的作用就是将字节码文件即.class文件运行,完成我写的代码的内容:
这样我的一个java程序就运行完毕了。
JVM虚拟机的作用
看到这里,有些同学可能会问了,这一个程序都走完了,怎么没见到用jvm呀!现在开始揭秘,jvm是java运行时的环境,也就是说,字节码文件在被java程序执行时是在jvm中执行的,也正是因为这一点,java才有那句“Write once,Run anywher”的特性。
学过C语言的童鞋们知道,在C语言的运行中,简单来说就是,一个.c程序被编译成汇编语言,然后电脑通过汇编语言执行该程序,那么就会有一个问题,那就是不同配置的计算机(字长不同等)会在运行同一段代码中按照不同的规则,就比如,在16位系统上,C语言中int类型就占两个字节,而在32位和64位中则占4个字节,这就造成了一个问题:无法跨平台使用。而java不同,java是将java文件编译成字节码文件,然后在jvm虚拟机中运行,这就无关计算机本身的配置了,所以就可以硬性规定int就占4个字节等,这样就是java程序在任何地方都能兼容,只要这个系统中含有jvm虚拟机,从而实现了“一次编译,到处运行”。
以上就是本期的内容,如果对你有帮助的话,还请三连!