[Java] Class1 — Java運作原理&撰寫第一隻java程式
文章推薦指數: 80 %
Java運作過程 · 原始碼(Source code / .java) eg: 以java語法了一個java class, 並存成.java檔。
· 編譯器(Compiler) 執行javac程式來編譯Example.java檔。
GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWrite[Java]Class1—Java運作原理&撰寫第一隻java程式首先你得安裝Java環境:…..(待補)Java運作過程source:Book<>原始碼(Sourcecode/.java)eg:以java語法了一個javaclass,並存成.java檔。
eg:Example.java編譯器(Compiler)執行javac程式來編譯Example.java檔。
編譯完後,會產生「bytecode」,存成Example.class的檔案產生成bytecode什麼是bytecode呢?是JAVA虛擬機器(JVM)能識別的code,JVM會幫我們把bytecode轉換成裝有JVM的各種不同裝置機器能理解的形式,讓機器運行程式在裝有JVM的機器上執行codeJVM會將bytecode轉譯成各平台可執行的machinecode(讓開發者可以透過JVM,就能夠在各種不同平台.OS上執行java)source:https://stackoverflow.com/questions/21810538/c-and-java-virtual-machine-code-executionWhat’sJVM&JRE&JDK這篇講得很清楚了~JVM、JRE與JDK不要只用程式語言的角度來看Java,這只會看到「冰山一角」,這可以用JavaSETechnologies中的圖來印證:如果你安裝...openhome.cc簡述一下:JVM:讓bytecode可以在各種不同os上運作的虛擬機器環境。
為什麼需要JVM這一層呢?因為每個OS機器上,他們的指令的機器碼的定義不一樣。
你在window上編譯了某種語言並產生的執行檔,放到mac上是無法執行的。
JAVA是高階語言,讓開發者及想執行java程式的人,不用擔心這些東西。
在每一種JAVA支援的OS上安裝JVM後,JVM會自己幫你把bytecode轉成各平台認得的機器碼來執行。
但JVM是個規格,實際上實作,有不同大廠會依照這個規格實作JAVAVM。
JVM被包含在後面說的JRE&JDK裡面(而我們平常安裝JAVA環境,就是選擇JREorJDK做安裝,所以安裝完後,裡面就有JVM囉!)JRE:包含了JVM&JAVASEAPI。
我們常寫的第一個程式:就是印出helloworldSystem.out.println(“HelloWorld”);先前曾經談過,Java是個標準,System、out、println這些名稱,都是標準中所規範的名稱,實際上必須要有人根據標準撰寫出System.java,編譯為System.class,如此你才能在撰寫第一個Java程式時,使用System類別(Class)上out物件(Object)的println()方法(Method)。
誰來實作System.java?誰來編譯為.class?可能是Oracle、IBM、Apache,無論如何,這些廠商必須根據相關的JSR標準文件,將標準程式庫實作出來,如此你撰寫的第一個Java程式,在Oracle、IBM、Apache等廠商實作的JVM上運行時,引用如System這些標準API,你的第一個Java程式,才可能輕易地運行在不同的平台。
在上圖中右邊可以看到JavaSEAPI,涵蓋了各式常用的程式庫,像是通用的群集(Collection)、輸入輸出、連線資料庫的JDBC、撰寫視窗程式的AWT與Swing等,這些都是在各個JSR標準文件規範之中,JavaRuntimeEnvironment就是Java執行環境,簡稱JRE,包括了JavaSEAPI與JVM。
只要你使用JavaSEAPI中的程式庫,在安裝有JRE的電腦上就可以直接運行,無需額外在你的程式中再包裝標準程式庫,而可以由JRE直接提供。
JDK:你寫的新的.java檔,是誰把他編譯成.class檔呢?是javac!他被包含在JDK裡面,JDK就是JavaDevelopmentKit!對於要開發JAVA的工程師來說,需要編譯java檔.需要javadoc等工具提示你javalib的函式定義等等。
正如上圖所示,JDK包括了javac、appletviewer、javadoc等工具程式,對於要開發Java程式的人,必須安裝的是JDK,如此才有這些工具程式可以使用,JDK本身包括了JRE,如此你才能執行Java程式,所以總結就是「JDK包括了Java程式語言、工具程式與JRE,JRE則包括了部署技術、JavaSEAPI與JVM」。
簡單來說:撰寫Java程式的人才需要JDK,如果你的程式只是想讓朋友執行呢?那他只要裝JRE就可以了,不用安裝JDK,因為他不需要javac這些工具程式,但他需要JavaSEAPI與JVM。
撰寫第一隻JAVA程式並執行來點簡單的,如何寫第一隻JAVA程式開啟記事本,寫下第一支程式:publicclassMyFirstJavaClass{publicstaticvoidmain(String[]args){System.out.println("helloworld!");}}存成MyFirstJavaClass.java(記得:檔名要與className相同!)於commandline中執行:javacMyFirstJavaClass.java或想看編譯過程發生什麼事,可以下-verbosejavac-verboseMyFirstJavaClass.java若順利執行完(編譯過程沒發生錯誤),會產生MyFirstJavaClass.class檔(bytecode)執行.class檔javaMyFirtstJavaClassCommandLine應該就會印出helloworld!上面四個過程,就是一開始說的「JAVA運作方式」的四個步驟囉!MorefromChia-wenHouFollowhiLovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedChia-wenHou43FollowershiFollowHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1Java類檔案- 維基百科,自由的百科全書
Java類別檔案是一個包含Java位元組碼的可由Java虛擬機器執行的檔案(副檔名為.class)。Java類別檔案是由Java編譯器編譯包含Java類別的用Java語言編寫的原始檔(.java...
- 2檔案副檔名CLASS : Java Class File 是什麼? 如何開啟?
檔案副檔名CLASS是一種由Oracle開發的Java Class File。 支援的作業系統和可以開啟該檔案類型的相關軟體或應用程式. Windows, Oracle Java Runtime...
- 3Java編譯後產生class檔案的命名規則 - 程式人生
今天剛好有同學問了下Java編譯後產生的.class檔名的問題,雖然一直都在使用Java做開發,但是之前對編譯後產生的.class檔名的規範也基本沒做了解過,也 ...
- 4查詢Java 程式的class 檔編譯的JVM 版本 - Tony Blog
Java 專案編譯的class 檔使用的版本,必須等於或小於執行環境的JVM 版本, ... more recent version of the Java Runtime (class fil...
- 5JVM真香系列:.java檔案到.class檔案_osc_5p8bxoq2 - 古詩詞庫
javap 是Java class檔案分解器,可以反編譯(即對 javac 編譯的檔案進行反編譯),也可以檢視 java 編譯器生成的位元組碼。 新建一個 User.java 原始檔, ...