【剧前爆米花--爪哇岛寻宝】初识Java,了解Java代码的运行机制及JDK,JRE,JVM等

作者:困了电视剧

专栏:《JavaSE语法与底层详解》

文章分布:这是一篇知识点较为基础的文章,我会先将JavaSE相关的知识给罗列一遍,然后在后续的文章中会对其中重要的点再逐一进行底层剖析,欢迎订阅我的专栏!

508146b4bd8242669a67b7613675c672.jpeg

 

目录

认识JDK,JRE,JVM

Java代码的编译与运行

 javac程序的作用

java程序的作用

JVM虚拟机的作用

 

大家好!这里是困了电视剧,欢迎来到我的博客!今天我将和大家一起开始学习一门全新的语言——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程序在运行时的环境,可以把他理解为一个虚构出来的计算机。

893a3db7cb11407b820fab790a4c89db.png

 他们三者的关系如图所示。

JDK,JRE,JVM这三个东西中有很多学问,感兴趣的同学可以详细了解,在这里,我着重介绍三个方面--带大家去剖析一段java代码从编译到运行的步骤。

Java代码的编译与运行

要想更好地了解Java的运行机制,我们抛开常用的IDEA,eclipse等集成开发环境,用记事本写一段代码来直观感受一下。

982bf63f103a4fde8d28bea540d08327.png

 

我在我的电脑里新建了一个文本,现在我在这个文本中写上一段符合java语法的代码:

fc66807c87244f79a065bac3938c5e65.png

 

代码写好了,如图所示的一段代码,现在我们要做的事情是什么呢,我们改一下这个文件的属性,即把.txt后缀名改为.java后缀名:

79dbfbb0449e4ac88e2d51c5daf1f41e.png

 

好的,这一步完成后,我们的准备工作就完成了,接下来开始揭秘! 

 javac程序的作用

JDK中包含一个名为javac的应用程序,这个程序值在JDK中,JRE中没有,它的作用是什么呢?他可以将你写的java程序编译成一个字节码文件,即.class结尾的文件,具体是怎么做的?我们一步一步的进行:

56bd2f36d54f442695a2674be9518953.png

首先打开控制台,输入cmd打开命令行:

7b5056344c2a40daa67c2169b5a654b4.png

会看到如图所示的界面,然后我们赋值这个文件的地址找到这个文件:

92e31c1910c54b9b86066b03db379a3f.png

 我们还可以输入dir来查看这个目录下面有哪些文件:

30ba496b81964385837d3cd00115edbf.png

 好,找到文件后接下来就是见证奇迹的时刻;

7ae39e17dd5f43bd804be7dc8c7ab1af.png

我用javac对这个 Java文件进行编译,然后我们就会发现我们存放文件的目录下面多了一个新的文件:

a81ad317a37247069181590c4f5152bf.png

这就是javac将java文件编程成字节码文件的过程。

java程序的作用

JRE中包含了一个java程序,这个程序的作用就是将字节码文件即.class文件运行,完成我写的代码的内容:

2df19432a4c641dfa511334ddc47fd19.png 这样我的一个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虚拟机,从而实现了“一次编译,到处运行”。

以上就是本期的内容,如果对你有帮助的话,还请三连!

 

 

 

 

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值