积跬步,聚小流-------那第一个程序得到了啥

来源:互联网 发布:南京java培训 知乎 编辑:程序博客网 时间:2024/05/22 15:24

JDK-------Java Developers Kits -------------Java开发工具包

JRE-------Java Runtime Environment-------Java运行环境

JVM------Java Virtual Machine -------------Java虚拟机 

 

事实上,这三个单词的理解可以通过一次java的运行过程来进行解释,这样就以我常些的第一个java程序来分析吧:

搭建环境变量我们肯定很熟悉了:

JAVA_HOME:新建jdk路径;

CLASSPATH:新建.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

PATH:新增;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

这样我们就可以开始我们的第一个程序了:

 

1、在d盘新建一个txt文件,然后编写程序后改名为Test.java

2、运行-cmd-cd /d d:进入我的d盘

3、在D盘下运行javac Test.java我们可以看到在D盘下多了一个.class文件

4、我们继续运行java,这样我们就看到了实际效果

这样我们就完成了我们的第一个程序,然后我们来进行剖析程序的运行过程

1、我们对java文件的编译,我们都知道它是为了编译成.class文件来供机器识别,那么我们运行的javac在哪呢,又是怎么找到的呢?

我们再来打开我们之前安装的JDK的文件夹,我们会看到bin、jar、include、lib等文件夹,然后我们再来打开bin文件夹的时候我们会发现javac.exe这个执行文件,这样我们知道了,原来我们是执行的这个文件,但是它是怎么样找到的呢

其实当你在命令提示符窗口操作代码时,操作系统就会从当前系统和PATH变量目录查找相应的应用程序并且进行执行,自然我们就想到了我们在设置变量中的PATH中的原因了,我们通过这个路径找到的javac,并且通过执行这个文件对.java文件进行的编译,生成了.class文件

2、然后我们又通过java操作,对.class文件进行解释,然后得到了结果,那他又是怎么找到这些的呢?

同样我们可以再上面的文件夹中找到java.exe文件,这我们很容易理解而这个.class文件我们又是怎么找到的呢,毕竟上面说的是在这些路径下找到执行文件,而.class文件并不是执行文件

这样我们就会记起对环境变量CLASSPATH的设置了,它是干什么的呢,对了,它就是来寻找.class文件的,而我们的.class文件并没有放在lib和tools.jar中,那它怎么找的呢,不要忘记我们最前面的“.;”啊,这就是告诉JDK,搜索.class文件先搜索当前目录下,据说是由于LINUX的安全机制引起的,LINUX暂时还不懂,姑且就这么记着吧

3、关于JAVA_HOME的环境变量设置

相信大多数人都看出来了,它就像是一个代名词,只是用来替代jdk的安装路径的,至于是为了什么:a、为了方便编写,万一你的路径很长呢,你需要写的太多了,而只用它来写的话就简单多了;b、为了方便修改,如果一旦出现修改,我们只需要修改这一个地方就好了;c、据说是为了第三方的引用,这个我道行还比较浅,暂时只是听说,听说.....

 

上面分析了java的运行过程和环境变量的关系,然后我们再回到正题上JDK/JRE/JVM

 

我们看到了JDK的bin文件夹下的执行文件,同时呢,我们还会发现jre文件夹,而这个文件夹呢,下面同样有两个文件夹bin和lib:实际上这里的bin我们就可以把它看成JVM了,而lib只是解释.class文件时我们所需要的一些类库,也就是说JVM+lib几乎就是我们所说的JRE了,而JRE就是.class文件解释的地方,就像是我从一个叫JDK放满了各种工具的大房子里,在房子里的这个叫JRE的电脑上进行对某种事物的解释,而所谓的“解释”就是我们只能看到照片底片上的黑色荧光,而洗照片后我们能看到照片一个原理吧。

而 这个地方还对我们最为有用来记忆的一句话是“一处编写,到处运行”,原理就在这里了,JRE里有一个JVM,而JVM与实际电脑的操作系统交互,抽象操作系统和cpu结构,让JRE在解释的时候不用顾虑主机硬件、主机操作系统等等,当然我们在下载JRE的时候我们会看到不同的版本,那是就是针对不同操作系统的,所以你只要下载正确版本信息的JRE即可,不用再操心.class文件的解释方法了,而事实上我们在上传服务器的时候也只是将.class文件和lib下面的类拷进去(虽然我曾经办过将.java文件整个拷过去的蠢事,汗)

到这里这次的记录也就要截止了,大致上就是对JDK/JRE/JVM几个概念的个人认识,然后就是初学时候环境搭建的具体原因的一些个人认识,感觉自己理解的比以前透彻点了,感觉很高兴,但是前路漫漫,仍然要加油啊...

 

 

0 0
原创粉丝点击