大家可能看到HelloWorld例子是否是都觉得博主头脑是否是有问题,怎样拿这么1个弱智的问题和例子拿来说。实际上其实不是这样的,如果是这样的我相信我就没有写这篇博客意思了。由于当我第1次看到java中第1个例子HelloWorld原来还有这么多内容。自己当时也听的懵逼。固然是这样的,懵逼过后就必须要苏醒,当我醒后第1反应就是写篇博客来记念我当时懵逼的模样。固然希望下次各位不要懵逼,并且很淡定说“HelloWorld始终是HelloWorld永久是那末简单”。
这次开发java这个例子呢,采取的开发工具就是记事本就够了,固然如果你用甚么Eclipse,那就没甚么意思,而且你用的Eclipse用的也是很懵逼的,由于你根本就不晓得Eclipse从编译java到运行Java全部机制进程,只知道写好了,然后“Run as",那是给码农,相信大家都是想成为攻城狮而不是码农吧。成为攻城狮的第1步,先把本博客学下,just for fun 。开始吧
首先,我们先来谈下java环境变量,打开“我的电脑”--->"属性"--->"高级系统设置"--->"环境变量"
大家都很清楚,java的环境变量主要配置3个操作:第1个新建JAVA_HOME环境变量,第2个配置path,第3个配置CLASSPATH
JAVA_HOME="为你的java的JDK中bin文件夹所在的目录",在path最前面追加:"%JAVA_HOME%\bin;%JAVA_HOME%\jre" ,CLASSPATH=".
";相信大家对前面两个为何这么应当容易了解。我相信大多数人对CLASSPATH=“."为何只配置1个点便可。这个点的意思是表示当前目录下意思。我们都知道在java中实际上.java文件先编译成.class文件实际上最后运行的就是.class文件。CLASSPATH=“."表示在履行运行命令的时候,会在当前目录路径下去找到.class文件;可能大家还看过这样去配置CLASSPATH的。CLASSPATH=“.;./bin";这里表示就是先在当前目录下寻觅相应指定的.class文件,如果没找到,再去当前目录下的bin目录中去找。
为何要讲授这个呢?这个原理有助于理解下面我们运行java程序。
讲完环境变量的配置我们就开始来编写我们java中的第1个例子
在写java代码之前,我们首先说下1个java代码中的顶级3元素:package、import、class
可能我们在写代码的时候,不太注意这些,但是这些都是规范。所以这次这个HelloWorld的例子中也会遵守这个规范来。
第1步:先在我的桌面创建1个Demo文件夹,并且在文件夹内分别创建src和bin文件夹,大家都知道src文件夹是寄存源代码的,bin主要寄存编译后的.class文件。
第2步:在src目下新建1个文本文件,修改后缀名为".java"
第3步:打开终端编译
先进入src和bin所在的目录,而不要进入src目录,运行javac编译命令:
大家可能看到为何和我们平时编译命令有些不1样,这里我们通过-d 目录 将编译好的字节码文件放到指定的目录下,这里的意思就是将编译好的字节码文件放到当前目录的bin目录文件夹下。 那末我们可以打开所在目录的bin目录来看看,原来是空的而现在是有1个带包的HelloWorld.class文件,这是由于我们在写代码时候加上了package com.mikyou.test;所以看到下图就不感到奇怪了。
编译完后就是运行了,大家都知道运行我们使用的是java命令就行,是这么直接这么简单吗?大家都知道我们在运行进程中就和.java文件没有关系,我们需要找的是编译后的.class文件,然后直接用java运行便可。
先说下-cp的意思:-cp 路径 指定类加载路径(CLASSPATH),为何要使用-cp呢?这就得从刚开始配置环境变量说起了,就是配置环境变量的时候我们配置了1个CLASSPATH为1个点,并且我们说这个点表示在当前目录下去找.class文件的意思,然后我们当前目录是src和bin所在的目录并没有所要的.class文件,所以如果按系统环境变量中来找的话,肯定是找不到的,所以既然系统中找不到的话,那我们就通过-cp自己来指定类加载的路径。不信我们可以试试
注意: java运行时类加载的方式有3种分别是本地类加载、系统类加载、扩大类加载。他们在类加载的时候遵守双亲拜托机制。
本地类加载-----拜托-->系统类加载(CLASSPATH)-----拜托--->扩大类加载:(双亲拜托)
先是本地类加载拜托给系统类加载系统类加载再拜托给扩大类加载
扩大类加载没有其他的拜托了,那末每次最早查询就是扩大类加载,如果扩大类加载找不到那末就会往上走,查询系统类加载(CLASSPATH)
如果系统类加载(CLASSPATH)找不到往上走本地类加载
接下来就是将我们1个HelloWorld打包成.jar文件
我们先在src和bin目录下然落后入bin,然后再将bin目录下的所有文件和目录都打包成jar
这个jar命令的意思就是将bin目录下的所有文件和目录打包(*就是表这个意思),-cvf (c是表示紧缩命令,v表示显示紧缩的进程信息 f表示 后面要跟上输出文件名称)实际上和Linux系统紧缩文件命令很像。打包后文件放到bin目录里面的上级目录也就是bin所处的那个目录。打包完成后大家可以看到和src,bin所在的同1目录下有1个hello.jar
打包好了后,我们就要把这个jar发给客户,客户怎样去运行呢?
1、 将.jar文件放入某个盘,可直接从盘中根目录运行:假设我放在C盘的根目录下
又使用到了-cp,这个还是蛮有用的吧
另外一种方法就是不管在哪一种路径下,都可以运行这个hello.jar:将.jar文件放入到扩大类加载库(该库所在目录是在你的jdk目录中的jre目录下的libs文件夹内):我的是这个E:\Android\Java\jdk8.0_11\jre\lib\ext: 运行命令: java com.mikyou.test.HelloWorld
会发现不管在哪一个路径下都可以运行。并且这个方法还有1点很好就是,你打开Eclispe会发现,jre中的加载jar包中有1个hello.jar,也就是我们以后可以将我们自己封装1些框架代码打包成1个jar包,然后放在该目录下,每次新建1个程序自动加载就不用每次去新建1个libs然后再去add Build Path了,很是方便。
到这里我们java中1个最简单HelloWorld就完成了,是否是没有我们想象中的那末简单。