00:01
行了,那么接下来咱们继续再往下了。呃,那么咱们呢,今天的第四大知识点是干什么呢?哎,我们这块啊,要初步的先去了解一下我们Java的加载与执行啊,初步的先去了解一下我们Java的加载执行,就是对于我们这个Java程序来说,它是一个怎样的过程啊,就是从编写到最后运行有一个怎样的过程,我把这个呢,嗯,跟大家呢,在这里呢,详细讲一下,这是一个,这是一个什么呀,这个是一个编写。代码之前的一个比较重要的一个理论啊,比较重要一个理论,咱们把这个理论呢说一说啊。就是关于就是对Java的载与执行的理解。啊。这个呢,这个理论啊,呃,比较重要啊,理论比较重要,大家听一下这个理论就可以了啊对的,加载与执行的一个理解就是Java程序从什么呢?从编写到最终运行经历了。
01:10
经历了啊哪些过程啊,经历哪些过程是这样好了,那么这块的话,咱们就继续再往下了啊,再往下初步了解Java的加载与执行,来咱们看这个图,各位啊,看这个图。嗯,这块呢,我打开一个。画笔啊,哎哟。这个丢了呀。这个没了。嗯。找一下啊,找一找。使用工具。教学必备里边找一下啊,有这么一个工具啊。拿一下我过来啊,放哪呢?放到这个地方吧。
02:04
然后双击一下。好,那么接下来呢,我们继续了啊,这是一个我我我们讲师用的一个工具啊,大家就不用管了啊。嗯。卡住了。卡屏了。有这个画笔可能在这不能用啊,不能用。那不能用,我就退了啊,退掉。行先不用了啊呃,是这样的,同学们,咱们这个Java程序啊,它分为两个阶段,两个阶段啊,一个阶段是编译阶段啊,一个是运行阶段。啊,编译阶段和运行阶段,那么这个。
03:00
这两个阶段啊,呃,首先啊,要说的是它可以在不同的操作系统上去完成。啊,Java程序。非常重要的两个阶段啊,一个叫编译阶段。编译阶段,一个叫运行阶段。Java程序员注意啊,Java程序员直接编写的Java代码,这种普通文本啊,普通文本。Java代码是无法直接被JVM识别的。那Java程序员编写的Java代码这种普通文本必须经过一个编译啊,将这个。
04:00
普通。文本代码变成什么呢?变成所谓的一个术语啊,我们叫字节码。啊,这个必须将普通文本代码变成什么呀,字节码JVM能够识别字节码。那么Java代码这种普通文本。变成什么呀,自写码的过程。被称为什么呀,便宜。啊被称为编译。就是说假如说你在这里呢,你写了一个程序啊,你在这里,你假如说在这里。我们写了一个程序,对吧,Public class对不对?哎,然后T写了public sta void man主方法写上,那么摆在大家面前的这个是我们人类可以读懂的,我们可以看到的啊,像这个,诶知道这些单词的,你看它这个表示公开,Class表示类是吧?哎,然后呢,再往下,再往下,这个是普通文本。
05:13
但是比较悲剧的是啥呢?这种普通文本啊,你不能直接放到我们刚才所说的什么呀,叫做JVM,就是没有办法直接扔到这个JM里边,执行Java程序呢,它得需要经过一个什么过程呢?需要经过一个编译的过程,那有同学就不理解了,老师,什么叫编译,就是摆在你面前的这个程序啊,这是一个,这是个原程序啊。源程序,源程序啊,Java代码这种普通文本被称为什么呀,Java源代码啊,所以说一系列的这个术语呢,就上来了啊,你编写的这个程序就是Java源代码啊,你编写的代码是源代码啊,源代码就是换句话说,源代码不能直接执行。
06:03
啊,需要先进行编译,生成源代码对应的字解码。啊,GM可以识别,刚才说过了,可以识别的是字解码啊,那么在这里呢。我讲解了什么呢?讲解了就是说我们这个Java程序啊。哎,有两个重要的阶段。这两个阶段一个叫编译阶段,一个叫运行阶段,编译这个词我刚才解释了,是我们的原源代码,源程序啊,经过我们的编译啊,才会生成我们所谓的字节码,而字节码这种东西啊,它是Java虚拟机可以识别的啊,可以识别的好了,那么现在我要问大家一个问题啊,就是什么呢?就是编译阶段和运行阶段可以在不同的。操作系统上完成吗?编译阶段和运行阶段可以在不同的操作系统上完成吗?
07:06
这个可以吗?嗯。这个可以吗,同学们。比如说在。Windows上。编译。编译之后生成了字节码。把什么呢,自己码。放到哪儿啊?Linux。Linux上运行。就在Windows上编译,编译之后生成字节码啊,然后把字解码放到另一串运行。完全可以啊,因为Java是跨平台的。可以做到什么呀?一次编写到处运行啊,编写到处运行是这样啊,刚才我们已经讲过了啊,那么现在我再问大家一个问题,Java程序或者Java源代码一旦编译之后。
08:10
源代码可以删除吗?只留下字解码可以执行吗?就是这个也是需要大家注意的,我们在这个图上呢,有这个编译阶段和运行阶段,而这个编译阶段呢,我们会编写源代码,而编写的这个源代码将来会经过一个编译的过程,生成我们的字节码。那么。假如说我们现在把这个之前写的这个原代码删掉了,会不会影响我们程序的执行,这个答案是不会影响。啊,不会影响,不会影响啊,只留下自己码可以执行吗?诶完全可以执行,因为源代码不参与程序的执行过程。
09:00
啊,参与程序执行过程的是字解码啊,但是最好不要删除源代码啊,源代码,因为有可能执行结果不是你需要的。啊,当执行结果不是你需要的时候,你可以重新打开源代码进行修改,然后重新编译生成新的字节码,再重新执行。啊,这样会有新的执行效果或者是执行结果。啊,就是这个源代码这个东西啊,你不要删,你说我这个源代码没用,我叭给它删掉吧,那你删它干啥呀,因为你源代码编写完之后,你编译生成自解码,运行是自解码,但是你不要把源代码删掉,你删掉源代码的话,你这块你万一运行之后结果不是你需要的,对不对啊,那这个时候你回头是不是还得改源代码呀,你改完这个源代码要不要重新再编译啊,你还得把这个源代码重新编译一下,生成新的字节码,然后我们再去运行才会有新的效果啊,才有新的效果字解码可以变回原代码不,当然可以啊,这个叫反编译,反编译啊,反编译啊,这个阿豪同学你这个比较先进啊,这个这个咱们这个后期在接触啊,现在先不用管啊,现在先不用管啊,可能有些同学考虑不到这个事儿啊,呃,但阿豪同学考虑到了啊,这是比较牛的啊,比较牛的。
10:39
好了,那这一块的话,咱们这个后期会接触,现在呢,咱就先不说这个啊,先不说这个,总之呢,在这里给大家聊的是什么呢?就是说我们啊,哎,要知道我们Java程序呢这块啊,它这个包括两个非常非常重要的阶段,一个叫编译阶段,一个叫预警阶段,大家呢。在我讲的过程当中,你记住了多少,这个很关键啊,就是说。
11:03
编译期和运行期,这两个期可以在不同的操作系统上运行,这个是必须要记住的。啊,然后还有什么什么可以删对吧,什么不能删,最后Java虚拟机运行的到底是什么,这个东西你都要理解的啊,都要去理解的。哎哟,这又提到反射机制了,这更牛了,这个行了,那个后期再说吧,啊后期再说吧,你说说这个反射机制大家都不知道啊,大家都不知道。好了,那这块的话,咱们这个,呃,这个编译和运行我们就说到这儿,但是还有很多很多细节,我在这里并没有给大家解释啊,也没有说我们接下来说一说,首先呢,我们的原代码啊,呃,放源代码的文件扩展名必须是。某某某点加。啊,必须是某某点加,并且需要注意的是并且。需要注意的是。
12:04
切换一下这个输入法啊,好,并且需要注意的是。编译生成的字节码文件。扩展名是某某某点class,没有为什么,死记硬背吧,啊,这个死记硬背就行啊,这个你不要问我为啥说老师为啥这个Java原文件叫什么什么点Java,为什么编译生成的自行码文件叫什么什么什么点class,这个没有为什么,这就是王八的屁股规定啊,就是。就是这样规定的,你这样记就行了啊,记就行了啊,原文件就是点Java文件啊,自己码文件就是class文件。就是点Java文件,点Java文件啊,就是原文件。啊,这个文件中编写源代码。然后呢,点class文件就是自解码文件啊,这个文件是。
13:07
啊,编译源代码而得到的。啊,编译源代码得到的。对,王王王八的屁股嘛,规定嘛,对不对啊,规定这个点Java文件就是原文件,这个文件中编写原代码,点class文件就是字节码文啊,一个文件是一个,呃,这个这个这个点class文件是咱们编译原代码得到的,得到啊呃,另外需要注意的是,一个Java源文件是可以编译生成多个。Class文件的。最终运行的是class文件啊文件。自解码文件。嗯,编译过程在哪里进行,编译过程在我们的这个。
14:06
当我们安装了JDK之后啊,它会有一个命令啊,它会有个工具,这个工具叫做Java c啊,这个工具它可以通过这个工具把我们的Java源文件编译生成我们的自解码文件啊,这个编译过程肯定是在一个操作统上完成啊,另外你可以在另外一个操作系上去运行它啊,是没有任何问题的,没有何问题的啊,那么这块呢,我刚才提了一下,一个Java源文件是可以编译生成多个,大家尽可能去记啊,但我觉得可能我讲了这么多东西也不一定说都能记住啊,你最好就是在你的笔记上能点的点一下,能点点一下啊,我在这里就给大家记一下笔记,但是你也别偷懒啊,别偷懒,需要注意的是一个加va原文件是可以编译生成多文件的,哎,我这里还有一个问题,我要问一下同学们啊,就是说。呃,这个。自解码文件?自解码文件是二进制文件吗?
15:04
这个字解码文件是二进制文件吗?思考,然后再答啊。不是不是。自解码文件不是二进制文件,自解码文件啊,不是二进制文件。如果是二进制的话,就不需要Java虚拟机了。因为操作系统可以直接执行二进制。注意啊。就是刚才呢,我们这个。刚才有个图啊,这个图呢,我再打开一下。在这把这个图打开,就是说。我们如果说生成的这个Java程序,就是这个Java程序啊,这个Java程序如果它是二进制的话。
16:06
自解码文件啊,它如果是一个二进制的话,那我就不需要Java虚拟机了。那我还需要Java虚拟机干嘛干嘛呀,对不对,因为操作系统可以直接解解释执行这个二进制,可以和二进制直接打交道。所以呢,这个字解码它不是二进制啊,它不是那个10011001对1001,它呢,诶就被称为一个被被称为一个特殊的一个词语嘛,叫什么叫自解码,你需要把自解码扔到这个Java虚拟机里边,它Java虚拟机它负责把这个。字解码翻译成1001的,1001的这种二进制,然后把这个二进制给了谁呢?操作系统,操作系统去执行这个二进制,再和这个硬件平台进行交互,它实际上是这样的。啊,它实际上是这样的,对。呃,系统也不要分吗?这是这个不是这样,同学们啊,因为你这是Windows版的Java虚拟机,而你是Mac版的Java虚拟机,Mac版Java虚拟机在解释这个资金码的时候,解释出的那个二进制。
17:10
给了这个Mac系统。啊。呃,现在有声音吗?现在有没有声音?有延迟是吧,声音吗?有是吧,好好咱们继续了啊。嗯。行,咱们继续。就刚才说到哪,说到这个Java的程序啊,叫做自解码字解码这种东西,我再强调一下,它不是二进制。他呢,是。就是他也可以理解的是一,就刚才同学所说的就是一堆乱码,但是不能说是乱码啊,这个叫自解码,对这个自解码这个东西呢,它给了Windows版的加码区,你Windows版的加码会把这个最码翻译成Windows能够识别的二进制,然后呢,我们的Mac版的加码虚拟会把我们的这个。
18:03
Java资基码翻译成Mac系统可以能够执行的这个二进制码,总之Java逊尼在这负责就是一个解释,解释之后呢。我们的操作系统去执行我们的二级码,来和我们的硬件平台完成交互。对,操作系统是可以识别二进制的,这个操作系统Windows和OS都是可以识别二进制的,没有任何问题啊,所以我们这个不是二进制啊,这就是说嘛,这个不是二进制,字节码不是二进制,文件不是二进制啊。自解码它需要通过Java虚拟机的一个解释啊,通过Java虚拟机的解释有个过程叫解释啊。好,大家看啊,首先我们Java程序员需要在硬盘上。新建一个点Java文件。
19:01
啊。来这个是一个问题啊,就说到这儿。呃。行,这个先告一段落啊。我们先休息一下,好吧,休息这个15分钟。
我来说两句