知其然,不如知其所以然,这个道理其实很多人都懂,只是得到鱼简单,而学会渔就要付出代价了,终究不是那么简单的,可能这就叫做成长吧。
看过很多关于java的培训书籍,像什么从入门到精通,像什么21天学会等等,事实上我也是从这个开始接触java的,就像开了一扇门,从此一发不可收拾的沦陷。
记得书中最开始都会讲JDK的安装和环境变量的配置,于是就会照搬书上的方法,安装,然后配置JAVA-HOME,CLASSPATH,PATH,然后我去编写自己的第一个“hello world”,还能模糊想起最初成功的欣慰,但是每次重新安装的时候还是不得不百度下步骤,要加些具体的什么东东来,实在是记不住,重复安装的次数多了,也慢慢发现了些规律,也明白了一些原理。
首先,发现的规律是什么呢?
* JAVA_HOME只是个代名词,是来代替JDK的安装路径的
至于为什么要代替,隐约感觉静态属性的使用目的也是这么个吧,方便修改是肯定的了,另一方面,java中我们经常用一个字符串标识来代替一长串字符,这个原因我们更可以接受了,方便编写,避免路径太长需要写太多遍字符,从而造成出错几率变大,想想数据库的避免冗余,也就更明白了。
当然在查询过程中,还听说一种说法是方便第三方引用,至于怎样引用的具体事宜,个人道行还有点浅....
这样我们知道了JAVA_HOME的定义,然后呢,就是CLASSPATH和PATH了,这又是什么原理呢?
其实,我们能很容易查到,PATH是功能路径,具体什么意思呢:我们按照我们配置的变量路径来寻找,会很容易发现bin下和jre-bin下都有javac和java的.exe执行文件,还记得这个场景么(如下图)
这样是不是可以理解PATH了呢,就是去哪里找要执行文件,这样理解就简单多了吧。
那剩下的就只有CLASSPATH了,在想这个问题之前,我们来回忆这么一个问题,java是如何运行的呢,或者说java是一种什么类型语言呢?
想必这个大都还能记得,.java文件编译成.class文件,然后虚拟机将.class文件转化成机器码嘛。(说到这里,总能记起最开始将java文件全部放进服务器的尴尬场景,汗)
至于后面的PATH我们想想也能知道是路径的意思了,然后CLASS你能知道什么意思么,哈哈
这里想要强调一点,路径前面的“.;”千万不要忘记了,这个点的意思是告诉JDK,从当前目录找起,至于是为什么呢,据说是LINUX的安全机制引起的,暂时还是不懂,还是道行浅啊,姑且这么记吧。
这样再来看环境变量的配置,还会感觉麻烦么,它又是来干什么的,明白些了么,我是这么理解的,你说呢。