大家可能看到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就完成了,是否是沒有我們想象中的那末簡單。