導航:首頁 > 軟體知識 > java程序由什麼負責解釋執行

java程序由什麼負責解釋執行

發布時間:2022-11-28 20:42:48

① Java有什麼特點和特質

今天,對於新手來說,對Java還不了解。今天我們主要來學習一下Java這門語言的特點和特質。

Java是1995年6月由Sun公司引進到我們這個世界的革命性的編程語言。1990年Sun公司成立了由JamesGosling領導的開發小組,開始致力於開發一種可移植的、跨平台的語言,該語言能生成正確運行於各種操作系統、各種CPU晶元上的代碼。他們的精心專研和努力促成了Java語言的誕生。

Java具有如下特點:

1、簡單

Java要比C++簡單,C++中許多容易混淆的概念,或者被Java棄之不用了,或者以一種更清楚更容易理解的方式實現。

2、面向對象

Java是面向對象的編程語言。

3、平台無關

在一個計算機上編譯得到的位元組碼文件(.class文件)可以復制到任何一個安裝了Java運行環境的計算機上直接使用。位元組碼由Java虛擬機負責解釋運行,即Java虛擬機負責將位元組碼翻譯成本地計算機的機器碼,並將機器碼交給本地的操作系統來運行。

一、平台與機器指令

這里所指的平台是由操作系統(OperatingSystem,OS)和處理器CPU所構成。

與平台無關是指軟體的運行不因操作系統、處理器的變化而無法運行或出現運行錯誤。

每個平台都會形成自己獨特的機器指令,所謂平台的機器指令就是可以**被該平台直接識別、執行的一種由0,1組成的序列代碼。**相同的CPU和不同的操作系統所形成的平台的機器指令可能是不同的。

比如,某個平台可能用8位序列代碼00001111表示加法指令,以10000001表示減法指令,而另一種平台可能用8位序列代碼10101010表示加法指令,以10010011表示減法指令。

二、Java虛擬機與位元組碼

位元組碼並不是機器指令,因為它不和特定的平台相關,不能被任何平台直接識別、執行。Java針對不同平台提供的Java虛擬機的位元組碼指令都是相同的,Java虛擬機負責將位元組碼翻譯成虛擬機所在平台的機器碼,並讓當前平台運行該機器碼。

4、多線程

Java的特點之一就是內置對多線程的支持。多線程允許同時完成多個任務。

5、動態

Java程序的基本組成單元就是類,有些類是自己編寫的,有一些是從類庫中引入的,而類又是運行時動態裝載的,這就使得Java可以在分布環境中動態地維護程序及類庫。

有很多同學在參加Java培訓還是不參加之間徘徊,參加吧,要付出學費,不參加吧,感覺自己Java開發相關知識又欠缺許多,自己學的話可能效果不好。那麼到底應不應該參加Java培訓呢?

這里給大家一些建議,如果你的底子非常好,屬於那種一學就通的人,那你可以去互聯網下載一些Java視頻跟著學習,你可以閱讀原文向小編索取昆明北大青鳥免費試聽課程。

如果你的底子不好,或者是想快速掌握Java開發知識的話,建議你參加Java培訓,4個月的時間里,有老師帶著你學習,這樣的學習效果會非常高,並且掌握的知識也很全面,因為很多沒有經過Java培訓的同學,在工作時,基本上只用那麼幾種技術,所以經過Java培訓的同學掌握的技術要比那些沒有經過Java培訓的同學多很多。

最後祝那些打算從事Java軟體開發相關的同學早日找到理想工作。學習Java最好的選擇就是到昆明北大青鳥IT培訓,品牌決定質量,實力決定就業,你敢來我就敢讓你高薪就業!

② java程序是由操作系統負責解釋執行的嗎

不是的,是編譯器編譯,虛擬機執行的

③ 在Java中,負責對位元組代碼解釋執行的是什麼

在Java中,負責對位元組代碼解釋執行的是虛擬機,虛擬機將得到的位元組代碼進行編碼運行

④ Java程序設計語言是什麼意思

Java是由SunMicrosystems公司於1995年推出的一門面向對象程序設計語言。2010年Oracle公司收購SunMicrosystems,之後由Oracle公司負責Java的維護和版本升級。

其實,Java還是一個平台。Java平台由Java虛擬機(JavaVirtualMachine,JVM)和Java應用編程介面(,API)構成。

Java應用編程介面為此提供了一個獨立於操作系統的標准介面,可分為基本部分和擴展部分。在硬體或操作系統平台上安裝一個Java平台之後,Java應用程序就可運行。

Java平台已經嵌入了幾乎所有的操作系統。這樣Java程序只編譯一次,就可以在各種系統中運行。Java應用編程介面已經從1.1x版本發展到1.2版本。常用的Java平台基於Java1.6,最新版本為Java1.8。

Java發展至今,就力圖使之無所不能。按應用范圍,Java可分為3個體系,即JavaSE、JavaEE和JavaME。

(4)java程序由什麼負責解釋執行擴展閱讀

Java語言的特點

Java語言的風格很像C語言和C++語言,是一種純粹的面向對象語言,它繼承了C++語言面向對象的技術核心,但是拋棄了C++的一些缺點,比如說容易引起錯誤的指針以及多繼承等,同時也增加了垃圾回收機制,釋放掉不被使用的內存空間,解決了管理內存空間的煩惱。

1、面向對象

Java是一種面向對象的語言,它對對象中的類、對象、繼承、封裝、多態、介面、包等均有很好的支持。為了簡單起見,Java只支持類之間的單繼承,但是可以使用介面來實現多繼承。使用Java語言開發程序,需要採用面向對象的思想設計程序和編寫代碼。

2、平台無關性

平台無關性的具體表現在於,Java是「一次編寫,到處運行(WriteOnce,RunanyWhere)」的語言,因此採用Java語言編寫的程序具有很好的可移植性,而保證這一點的正是Java的虛擬機機制。在引入虛擬機之後,Java語言在不同的平台上運行不需要重新編譯。

Java語言使用Java虛擬機機制屏蔽了具體平台的相關信息,使得Java語言編譯的程序只需生成虛擬機上的目標代碼,就可以在多種平台上不加修改地運行。

3、簡單性

Java語言的語法與C語言和C++語言很相近,使得很多程序員學起來很容易。對Java來說,它舍棄了很多C++中難以理解的特性,如操作符的重載和多繼承等,而且Java語言不使用指針,加入了垃圾回收機制,解決了程序員需要管理內存的問題,使編程變得更加簡單。

4、解釋執行

Java程序在Java平台運行時會被編譯成位元組碼文件,然後可以在有Java環境的操作系統上運行。在運行文件時,Java的解釋器對這些位元組碼進行解釋執行,執行過程中需要加入的類在連接階段被載入到運行環境中。

5、多線程

Java語言是多線程的,這也是Java語言的一大特性,它必須由Thread類和它的子類來創建。Java支持多個線程同時執行,並提供多線程之間的同步機制。任何一個線程都有自己的run()方法,要執行的方法就寫在run()方法體內。

⑤ java程序不能執行

Java程序的運行過程(執行流程)分析
1、編寫:是指在 Java 開發環境中進行程序代碼的輸入,最終形成後綴名為 .java 的 Java 源文件。
2、編譯:是指使用 Java 編譯器對源文件進行錯誤排査的過程,編譯後將生成後綴名為 .class 的位元組碼文件,不像C語言那樣生成可執行文件。
3、運行:是指使用 Java 解釋器將位元組碼文件翻譯成機器代碼,執行並顯示結果。
位元組碼文件是一種和任何具體機器環境及操作系統環境無關的中間代碼。它是一種二進制文件,是 Java 源文件由 Java 編譯器編譯後生成的目標代碼文件。編程人員和計算機都無法直接讀懂位元組碼文件,它必須由專用的 Java 解釋器來解釋執行,因此 Java 是一種在編譯基礎上進行解釋運行的語言。

Java 解釋器負責將位元組碼文件翻譯成具體硬體環境和操作系統平台下的機器代碼,以便執行。因此 Java 程序不能直接運行在現有的操作系統平台上,它必須運行在被稱為 Java 虛擬機的軟體平台之上。

Java 虛擬機(JVM)是運行 Java 程序的軟體環境,Java 解釋器是 Java 虛擬機的一部分。在運行 Java 程序時,首先會啟動 JVM,然後由它來負責解釋執行 Java 的位元組碼程序,並且 Java 位元組碼程序只能運行於 JVM 之上。這樣利用 JVM 就可以把 Java 位元組碼程序和具體的硬體平台以及操作系統環境分隔開來,只要在不同的計算機上安裝了針對特定平台的 JVM,Java 程序就可以運行,而不用考慮當前具體的硬體平台及操作系統環境,也不用考慮位元組碼文件是在何種平台上生成的。

JVM 把這種不同軟、硬體平台的具體差別隱藏起來,從而實現了真正的二進制代碼級的跨平台移植。JVM 是 Java 平台架構的基礎,Java 的跨平台特性正是通過在 JVM 中運行 Java 程序實現的。Java 的這種運行機制可以通過下圖來說明。
Java 語言這種「一次編寫,到處運行」的方式,有效地解決了目前大多數高級程序設計語言需要針對不同系統來編譯產生不同機器代碼的問題,即硬體環境和操作平台的異構問題,大大降低了程序開發、維護和管理的開銷。

提示:Java 程序通過 JVM 可以實現跨平台特性,但 JVM 是不跨平台的。也就是說,不同操作系統之上的 JVM 是不同的,Windows 平台之上的 JVM 不能用在 Linux 平台,反之亦然。

⑥ 簡述Java的特點

Java是一種可以撰寫跨平台應用程序的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。

Java語言是易學的。Java語言的語法與C語言和C++語言很接近,使得大多數程序員很容易學習和使用Java。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特別地,Java語言不使用指針,而是引用。並提供了自動的廢料收集,使得程序員不必為內存管理而擔憂。
Java語言是強制面向對象的。Java語言提供類、介面和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持介面之間的多繼承,並支持類與介面之間的實現機制(關鍵字為implements)。Java語言全面支持動態綁定,而C++語言只對虛函數使用動態綁定。總之,Java語言是一個純的面向對象程序設計語言。
Java語言是分布式的。Java語言支持Internet應用的開發,在基本的Java應用編程介面中有一個網路應用編程介面(java net),它提供了用於網路應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分布式應用的重要手段。
Java語言是健壯的。Java的強類型機制、異常處理、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
Java語言是安全的。Java通常被用在網路環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網路下載的類具有一個安全防範機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、位元組代碼檢查,並提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。
Java語言是體系結構中立的。Java程序(後綴為java的文件)在Java平台上被編譯為體系結構中立的位元組碼格式(後綴為class的文件),然後可以在實現這個Java平台的任何系統中運行。這種途徑適合於異構的網路環境和軟體的分發。
Java語言是可移植的。這種可移植性來源於體系結構中立性,另外,Java還嚴格規定了各個基本數據類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的。[7]
Java語言是解釋型的。如前所述,Java程序在Java平台上被編譯為位元組碼格式,然後可以在實現這個Java平台的任何系統中運行。在運行時,Java平台中的Java解釋器對這些位元組碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運行環境中。
Java是性能略高的。與那些解釋型的高級腳本語言相比,Java的性能還是較優的。
Java語言是原生支持多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。通常有兩種方法來創建線程:其一,使用型構為Thread(Runnable)的構造子將一個實現了Runnable介面的對象包裝成一個線程,其二,從Thread類派生出子類並重寫run方法,使用該子類創建的對象即為線程。值得注意的是Thread類已經實現了Runnable介面,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。Java語言支持多個線程的同時執行,並提供多線程之間的同步機制(關鍵字為synchronized)。
Java語言是動態的。Java語言的設計目標之一是適應於動態變化的環境。Java程序需要的類能夠動態地被載入到運行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。

⑦ java編程的填空題,java程序經過編譯後生成的文件的後綴是( ),由(

java編程的填空題,java程序經過編譯後生成的文件的後綴是( .class),由(Java 虛擬機 )負責解釋執行。

⑧ 為什麼說java程序是邊解釋邊執行的

java應用程序的開發周期包括編譯、下載、解釋和執行幾個部分。java編譯程序將java源程序翻譯為jvm可執行代碼--位元組碼。這一編譯過程同c/c++的編譯有些不同。當c編譯器編譯生成一個對象的代碼時,該代碼是為在某一特定硬體平台運行而產生的。因此,在編譯過程中,編譯程序通過查表將所有對符號的引用轉換為特定的內存偏移量,以保證程序運行。java編譯器卻不將對變數和方法的引用編譯為數值引用,也不確定程序執行過程中的內存布局,而是將這些符號引用信息保留在位元組碼中,由解釋器在運行過程中創立內存布局,然後再通過查表來確定一個方法所在的地址。這樣就有效的保證了java的可移植性和安全性。運行jvm位元組碼的工作是由解釋器(java命令)來完成的。解釋執行過程分三部進行:代碼的裝入、代碼的校驗和代碼的執行。裝入代碼的工作由"類裝載器"(classloader)完成。類裝載器負責裝入運行一個程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被其調用的類。當類裝載器裝入一個類時,該類被放在自己的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其他類。在本台計算機上的所有類都在同一地址空間內,而所有從外部引進的類,都有一個自己獨立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運行效率,同時又保證它們與從外部引進的類不會相互影響。當裝入了運行程序需要的所有類後,解釋器便可確定整個可執行程序的內存布局。解釋器為符號引用同特定的地址空間建立對應關系及查詢表。通過在這一階段確定代碼的內存布局,java很好地解決了由超類改變而使子類崩潰的問題,同時也防止了代碼對地址的非法訪問。隨後,被裝入的代碼由位元組碼校驗器進行檢查。校驗器可發現操作數棧溢出,非法數據類型轉化等多種錯誤。通過校驗後,代碼便開始執行了。java位元組碼的執行有兩種方式:1.即時編譯方式:解釋器先將位元組碼編譯成機器碼,然後再執行該機器碼。2.解釋執行方式:解釋器通過每次解釋並執行一小段代碼來完成java位元組碼程序的所有操作。通常採用的是第二種方法。由於jvm規格描述具有足夠的靈活性,這使得將位元組碼翻譯為機器代碼的工作具有較高的效率。對於那些對運行速度要求較高的應用程序,解釋器可將java位元組碼即時編譯為機器碼,從而很好地保證了java代碼的可移植性和高性能。java宣稱的一處編寫隨處運行就是由jvm來完成.在sun的網站上你可以下載到基於各種cpu和各種操作系統的jdk和jre的下載版本,只要尋找到合適你使用的版本,以前你所編寫的class文件到其他的機器上可以直接運行JAVA,不需要再編譯.其實j2se是一種規范,這種規范約定了其跨平台執行的所需要關注很多實現,基於該規范開發人員可以任意編寫自己的java代碼而不需要關心這個程序可能在其他的機器和cpu上無法很好運行問題.其實你也可以看到ibm和weblogic都有基於j2se規范的自己實現的java虛擬機.而且sun所宣稱的不需要編譯而可以直接用class文件在各個jvm上直接運行並不精確,博格曾經遇到過用sunjre開發的class文件在ibmjre上有一個自動轉換的過程,然後這個類可以很好的工作了,幸好這種情況是自動完成,否則我們又要陷入類似於各種cc++的版本編譯器兼容性問題中.以下下摘錄了幾個主要的概念:jvmjavavirtualmachine(java虛擬機),它是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能來實現的。java虛擬機有自己完善的硬體架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。jvm屏蔽了與具體操作系統平台相關的信息,使得java程序只需生成在java虛擬機上運行的目標代碼(位元組碼),就可以在多種平台上不加修改地運行。java虛擬機在執行位元組碼時,實際上最終還是把位元組碼解釋成具體平台上的機器指令執行。jrejavaruntimeenvironment(java運行環境),運行java程序所必須的環境的集合,包含jvm標准實現及java核心類庫。,和jdk以及j2se等同。jdkjavadevelopmentkit(java開發工具包):包括運行環境、編譯工具及其它工具、源代碼等,基本上和j2se等同。j2mejava2microedition(java2精簡版)api規格基於j2se,但是被修改為可以適合某種產品的單一要求。j2me使java程序可以很方便的應用於電話卡、尋呼機等小型設備,它包括兩種類型的組件,即配置(configuration)和描述(profile)。j2eejava2enterpriseedition(java2企業版),使用java進行企業開發的一套擴展標准,必須基於j2se,提供一個基於組件設計、開發、集合、展開企業應用的途徑。j2ee平台提供了多層、分布式的應用模型,重新利用組件的能力,統一安全的模式以及靈活的處理控制能力。j2ee包括ejb,jta,jdbc,jca,jmx,jndi,jms,javamail,servlet,jsp等規范。j2sejava2standardedition(java2標准版),用來開發java程序的基礎,包括編譯器、小工具、運行環境,sun發布的標准版本中還包括核心類庫的所有源代碼。

⑨ Java程序的執行方式是怎樣的

1.應用程序先把原文件即擴展名是java的文件用javac編譯為位元組碼文件及class文件(如:javac HelloWorld.java),然後用java命令運行次文件(如:java HelloWorld),當然要是用IDE開發,環境會自帶這些按鈕.
2.APPLET小程序先編譯為class文件,然後寫一個html文本調用即可格式<applet code="class文件" height=200 width=200></applet>,然後用瀏覽器測試,若不行可用appletviewer hh.html

閱讀全文

與java程序由什麼負責解釋執行相關的資料

熱點內容
買新車一般怎麼交易 瀏覽:798
宣化職業技術學院男女比例是多少 瀏覽:717
微信程序怎麼寫的 瀏覽:747
美股怎麼交易騰訊ADR 瀏覽:748
監理屬於委託代理什麼 瀏覽:219
紅辣椒市場怎麼樣 瀏覽:2
東莞生豬批發市場在哪裡 瀏覽:780
阜新開發小程序多少錢 瀏覽:896
程序員如何轉型運維 瀏覽:742
小程序如何恢復還原 瀏覽:312
數據保留單位怎麼取出 瀏覽:324
重慶墊江菜市場在哪裡 瀏覽:406
南寧哪裡有古董古玩交易 瀏覽:107
為什麼會不想回復別人信息 瀏覽:19
安碩信息最高股價是多少錢 瀏覽:162
虎牙交易平台是什麼 瀏覽:1202
舊貨市場都有什麼好玩的 瀏覽:1216
長沙信息發布平台有哪些 瀏覽:895
怎麼發布非約定產品 瀏覽:912
社會市場經濟的基本特徵是什麼 瀏覽:1381