農林漁牧網

您現在的位置是:首頁 > 農業

C語言和Java的區別

2022-09-24由 郎哥程式設計課堂 發表于 農業

c語言源程式可以直接執行嗎

有很多初學程式設計的同學,在選擇程式語言上比較困惑,本文重點詳述C語言和Java語言的區別。

C語言和Java的區別

起源不同

C語言的前身是B語言,B語言由美國 AT&T 貝爾實驗室研發,使用該語言編寫的程式可以在當時小型的計算機上執行,貝爾實驗室的研究員丹尼斯·裡奇於1969年~1973年在B語言的基礎上又開發了C語言,後來C語言逐漸取代了B語言,成為世界上通用的高階語言之一。

1991年,在SUN公司的詹姆斯高斯林和一群技術人員建立了一個名為Oak的專案,旨在開發運行於虛擬機器的程式語言。隨著網際網路技術的發展,在1994年詹姆斯高斯林等人決定將該技術應用於網際網路,1995年將Okay更名為Java。

應用不同

C 語言是一門工程實用性極強的語言,提供了對作業系統和記憶體的精準控制,編譯後的程式執行效率相比Java、Python等語言要高效的多,對理工科學生來說它也是一門必修課。C語言多用於計算機底層系統程式設計,計算機作業系統一般都由C語言編寫而成,如Windows作業系統、Linux作業系統等。

Java語言多用於企業應用開發,特別是網際網路應用,因為Java易學、安全性,可移植、跨平臺等特點,大多數網際網路企業及傳統企業都採用了Java語言開發系統,特別是在電信、金融、保險、證券、銀行、交通、能源、航天等這些行業,多數用Java開發系統。

開發方法不同

C語言是一種結構化語言,採用的是結構化開發方法。在結構化開發方法中。首先要調查並識別系統需求,然後使用資料流圖建立功能需求模型,再採用自頂向下的程式設計,把複雜的程式分解為多個程式模組,每個程式模組只有一個入口和一個出口,在模組內部內部採用順序、選擇、重複三種基本控制結構。

Java語言是面向物件的開發語言,採用的是面向物件的開發方法。面向物件開發方法儘可能模擬人類習慣的思維方式來分析軟體專案,並按照現實世界的問題域來構建解決現實問題的系統。面向物件開發方法中的物件是結構化開發方法中的實體、資料和程式模組的組合體,它具有屬性和行為,同時可以對系統發出的訊息進行響應。

編譯方式和執行環境不同

C語言的主要目標是計算機底層系統開發,因此透過C語言編譯的程式與計算機硬體環境和作業系統相關性較強,C語言程式碼會直接編譯為可在計算機上直接執行的機器程式碼,執行效率非常高效,缺點是程式在不同作業系統間的相容性差。C語言的編譯過程如下圖所示:

C語言和Java的區別

編寫完成的C語言原始碼,首先經過編譯預處理器規範程式碼和預編譯,然後透過編譯器轉換為彙編程式碼,再由彙編器轉換為機器程式碼,最後由連結器將有關的機器程式碼檔案進行相互連結,構建可執行的C程式。

Java語言的目標主要是應用系統開發,要求可運行於不同的作業系統。因此Java的原始碼首先被編譯成位元組程式碼,然後依賴各種不同平臺上的虛擬機器來解釋執行位元組碼,因為Java程式需要直譯器來解釋執行,因此相對於C語言來說執行效率比較低,優點是程式可以相容不同的作業系統。Java語言的編譯、解釋、執行過程如下圖所示:

C語言和Java的區別

Java編譯將Java原始碼檔案編譯為class檔案(位元組碼檔案),JVM(Java虛擬機器)的類裝載器載入class檔案,由直譯器解釋執行,直譯器會將位元組碼解釋為適用於作業系統執行的機器程式碼。

C語言入門教程

郎哥程式設計課堂

購買專欄

Java零基礎入門

郎哥程式設計課堂

購買專欄