導航:首頁 > 源碼編譯 > c語言編譯和java編譯

c語言編譯和java編譯

發布時間:2023-05-25 19:47:09

java:關於java和C語言C++編譯方式的不同

是的。所謂的「位元組碼」就是中間代碼,它可以很快地被告知桐翻譯成機器碼,但是中間代碼本身不包含與機器或操作系統相關的信息,這些信息只有虛擬機清楚。所以中間代碼只是說「我要做什麼」,由虛猛陵擬機根據機器和操作系統翻譯成「怎麼做」然後去執行。因此在linux下編譯的java代碼也可以直接運行在Windows或者其它裝有虛擬機的系統下,反之亦然。而C或C++直接編譯成與機器和操作系統相關的襪坦代碼,所以C語言編譯的程序沒有跨平台性,就算沒有使用到操作系統相關的API,在不同的系統下也必須重新編譯才能運行。

㈡ 詳解Java和C語言的區別在哪裡

1Java與C語言各自的優勢

C語言是面向過程的語言,執行效率高;Java是面向對象的語言,執行效率比C語言低。

C語言最關鍵的是比Java多了指針,這也說明了Java的健壯性,還有Java的多線程機制使程序可以並行運行,Java程序多用於網路。

C語言的安全性不如Java,C語言沒有Java的垃圾回收機制,申請的空間要手動釋放。

Java的通用性好,可以跨平台直接移植,只要有安裝Java虛擬機(JVM)就可以了。

2Java和C語言誰的通用性會比較好

在速度上,C語言編寫的程序要優於Java,因為Java必須運行在虛擬機的環境中,但是因為虛擬機,Java獲得的平台無關性,而C語言的程序有可能需要重新修改編譯才能實現平台的移植,

另一方面,C語言比Java語言更「底層」,因此可以用C編寫例如硬體的驅動,而Java卻不行。Java和C語言還有個明顯的不同就是C語言注重的是演算法,但是Java卻不一樣,想用的時候導包就可以了。

C語言的演算法很重要,但是Java中的演算法沒有C語言那麼復雜。列印的方法:C語言是printf("??.");而Java是System.out.print("??."),也可以用println,ln表示換行。

Java程序中的基本數據類型(boolean,char,byte,short,int,long,float,double),是對對象的引用;C語言也有許多種基本類型,還有struct,union,enum,數組和指針。

在Java沒有枚舉、聯合類型。Java採用Unicode字元集,C語言通常採用的是ASCII字元集,A—65,a—97。C語言的變數可以不進行初始化,但Java的變數要進行初始化。

在C語言中,char類型佔一個位元組,在Java中char類型佔2個位元組。

3Java和C語言各自的特徵

Java面向對象的特徵主要有封裝,繼承,多態。類的繼承關系是單一的、非多重的,一個子類只有一個父類,子類的父類又只有一個父類。C語言支持「運算符的重載」,這是它的一個很重要的多態特徵,是數據抽象和泛型編程的利器。它允許直接對對象進行四則運算,正像基本數據類型那樣Java不支持這種多態機制,也是為降低復雜性。

Java可以支持方法重載和重寫,所謂重載就是一個類具備多個相同屬性行為;重寫就是在繼承關系中父類的行為在不同的子類上有不同的實現。在Java中比C語言多了一些修飾符,如訪問修飾符Public(公共的)、Private(私有的)、Protected(受保護的)、默認。

Java有super關鍵字,指代父類對象,通常被用於調用父類的構造方法或一般方法C語言則沒有super關鍵字,兩者都有this,指代當前對象。

在Java中,除了static、final、private是靜態綁定以外,所有方法一律按動態綁定處理。Java中可以將類組織起來用Package打包,而C語言沒有。

㈢ java語言和c語言的區別有哪些

java語言和c語言的區遲談別有單文件的編譯時間java比c語言快;c語言可以直接操作內存,java不能直接操作;c語言可以封裝動態庫,java不行;c語言有指針,java沒有指針;c語言可以直接操作串口,java需要第三方jar包支持等等。

c語言和java的區別

1、c語言可以直接操作串口,java需要第三方jar包支持;

2、c語言的線程更加靈活,java的線程都已經封裝好了;

3、c語言做單獨功能,可以增加效率,java適用做web應用開發;

4、unix是c語言編寫的,java也是c語言編寫的;

5、JAVA做web開發的時候,已經有很多成型的框架技術,c語言很少,且需要處理底層內容,對應不熟悉計算機原理的開發者難度很大;

6、JAVA的開源包太多了,c語言也有但是偏少,而且面向某個業務應用領域的框架沒java多。

c語言和java哪個比較好

Java是在c語言的基礎上,拋棄了一些指針之類的東西,和c完全不同的是Java是一門面向對象的語言,Java是跨平台的,Java是安全的,許多要求安全的企業對Java需求很大,Java也一直排名語言榜第一位。它的不足是不夠簡潔,不是底層語言,不能直接操作硬體,有些事情沒有辦法做的很好,比如硬體編程,嵌入式之類的等。

c語言更像是計算機程序語言的基礎,所以學會c語言向其他語言轉移也是非常簡單的,c語言是完全底層的語言,比如驅動、通信協議之類,在Unix和Linux環境中也是不可或缺的,另外在嵌入式領域廳旦辯也大有作為,而且c語言效率極高。c語言也有一些問題,因為是面向過程的,所以不像面向語言的Java靈活,尤其在團隊開發的時候,不是跨平台扮缺的,具有不可移植性。由於過於底層,所以對硬體依賴很高,導致一旦硬體環境變化,會出現一些問題,c語言的輸入輸出相對復雜等等問題。

㈣ 淺析C語言和Java語言的異同

【摘 要】 文章根據本人多年對C語言和Java語言教學過程中遇到的一些實際問題,諸如Java語言是不是C語言發展和衍生的產物等。基於此,文章將從它們的起源、特點、開發環境、程序調試過程、應用領域等方面的異同進行比較、歸納。
中國論文網 http://www.xzbu.com/8/view-4409732.htm
【關鍵詞】 C語言 Java語言 異同 比較 歸納
1 舉例
(1)C程序。
#include 「stdio.h」
void main()
{printf(「大家好!\n」);
}
(2)Java程序。
public class java1
{
public static void main(String args[])
{ System.out.println(「大家好!」);}
}
從以上程序代碼上看,二者既有相似之處,又有不同。相似的是二者完成的都是向輸出終端輸出字元串「大家好!」,不同的是前者是用C語言的main函數來實現的,C語言中main函數是程序執行的入口;後者用Java語言的類方法main的定義實現的, Java程序中main方法是程序執行的入口。
2 起源
C語言是在70年代初由兩位程序員B.W.Kernighan和D.M.Ritchit在美國貝爾實驗室研究讓隱段出來的。後來由美國國家標准學會制定了一個C語言標准,於1983年發表。通常稱之為ANSI C,是當代最優秀的程序設計語言。
Java語言是在1995年5月由Sun Microsystems公司推出的面向對象的程序設計語言。
3 特點
3.1 C語言的特點
C語言具有簡潔、緊湊,方便、靈活;運算攜裂符豐富;數據類型豐富;具有結構化的流程式控制制語句(if、switch、for、while語句等);語法限制不是很嚴格,程序設計自由度大;允許直接訪問物理地址,能進行位操作,能夠實現匯編語言的一些功能,可以直接對計算機硬體進行操作。因此有人又把它稱作中級語言。生成目標代碼的質量高,程序執行效率也非常高;程序可移植性非常好[1]。
3.2 Java語言的特點
Java語言的特點可以概括為:平台無關性、簡單、面向對象、分布式、解釋執行、健壯、安全性等[2]。
平台無關性是指Java語言能運行於不同的計算機平台,數據類型也與機器無關。安全性是指Java程序運行時,內存由操作系統分配,可以避免病毒侵入。另外,Java還對程序提供了安全管理器,防止非法訪問;面向對象是指Java將數據和類封裝在一起,利用類的特點,實現程序的簡潔性和可維護性。通過類的繼承性和封裝性的特性,使程序代碼只需編譯一次,然後就可以反復利用。分布式是指Java建立在TCP/IP網路平台上。庫函數提供了使用FTP和HTTP協議傳送和接受信息的方法。健壯性是指Java主要致力於檢查程序在編譯和運行時的錯誤。由於Java本身操縱內存,這樣會大大減少內存出錯的可能性。
4 開發環境
C是面向過程的語言,運行環境主要有:TC、VC、Visual C++等,現主要使用Visual C++,它是一個功能非常強大的集成開發環境。
Java是面向對坦譽象的語言,JDK是許多初學者使用的開發環境,由一個標準的類庫和一組測試及建立文檔的Java應用程序組成。在Java語言學習的初期,可以在普通的文本編輯器編寫Java源程序,利用Javac命令完成編譯,利用Java命令完成程序的解釋執行。在具備一定的的程序開發基礎後,可以選擇一些集成開發環境如Eclipse、NetBeans等,以便提高開發效率。
5 程序調試過程
(1)C語言程序調試以Visual C++6.0為例:下載Visual C++6.0並安裝、運行,
進入後,點擊文件(File)->打開(Open),選擇你要打開的C語言文件,點擊打開選擇打開文件後,依次點擊Build->Compile,編譯文件無誤後,按Ctrl+F5運行程序。
(2)Java語言程序調試介紹兩種方法:
dos命令行運行步驟:
1)下載並安裝JDK、環境變數設置:PATH、CLASSPATH和 JAVA-HOME。
2)編寫:在記事本中編寫Java代碼,存為.java文件,文件名為代碼入口類的名稱。
3)編譯:運行CMD進入dos系統。
輸入javac代碼文件名.java生成.class文件。
4)運行java程序:java*(*為主文件名)。
Eclipse運行步驟:
1)下載並安裝JDK->下載並安裝Eclipse 並運行,進入後點擊文件(File)->新建(New)->Java項目(Java project)->輸入項目名稱->確定。
2)右鍵單擊包資源管理器右鍵單擊1)中的項目下的src節點,依次選擇
新建(New)->類(class)->輸入類名稱->確定。
3)編寫Java程序並保存。
4)運行Java程序:右鍵單擊創建好的類文件,依次選擇「run as」 ->「Java Application(Java 應用程序)」—>確定。
6 應用領域
C語言是即具有高級語言的特點,又具有匯編語言的特點。它已先後被移植到大、中、小及微型機上。它可以作為系統設計語言,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫圖形、動畫和系統軟體。
Java語言的應用領域:(1)行業和企業的信息化:如現在正在以驚人的速度發展起來的Android,它就是基於Java語言實現的手機操作系統。通過J2ME讓手機可以運行Java程序,Java在手機世界的興起對手機時代起著劃時代的作用。(2)嵌入式設備及消費類電子產品:通過將Java虛擬機嵌入到其他設備中,就可以讓Java在這些設備中發揮強大的作用。比如,非智能手機、機頂盒、嵌入式晶元及其他低功耗設備中都有Java的影子。(3)辦公自動化:目前基於Java技術設計的辦公自動化系統應用也非常廣泛,如:軍隊辦公自動化系統、網上書店系統、銀行網上代繳費管理系統等。(4)輔助教學:遠程教學系統、遠程教育、互動式電站模擬系統等。
7 結語
在多年的C語言和Java語言課程的教學過程中,通過不斷探索、學習和閱讀文獻,我對兩種編程語言從以上幾方面進行歸納,並將上述內容運用到教學中,採取比較式教學法,取得了較好的教學效果。
參考文獻:
[1]姜雷,施澤全.C/C++程序設計教程.中國鐵道出版社,2007,2-3.
[2]劉志成.Java程序設計實例教程.人民郵電出版社,2010,4-5.
轉載請註明來源。原文地址:http://www.xzbu.com/8/view-4409732.htm

㈤ java程序的編寫、編譯、和運行與C語言程序有何不同

java是面向對象的,而c是面向過程的,java運行需藉助於java虛擬機,可跨平坦運行,
Java是解釋型語言,所有代碼都會翻譯成統一的、與系統無關的bytecode,然後放到JVM上運行;而C是編譯式語言,代碼要先通過編譯器轉換成與系統相關的中間代碼,然後才能運行。

㈥ C語言和JAVA編程或者其他類型的編程有什麼區別嗎

兩個都是高級語言,但是C語言更偏機器底層一點,比較萬能,但是編寫應用程序往往比JAVA復雜的多,性能高。JAVA建立在JAVA虛擬機之上,不用考慮指針,大多數小的喊肆操作都可以直接用別人寫蔽豎好的類,編寫應用較簡宏滲大單,但是由於不能直接處理底層操作,導致性能不高

㈦ 如何用java調用c語言編譯器實現在線編譯c語

要在java中調用c語言的庫,需要使用Java提供了JNI。
舉例說明
在c語言中定義一個 void sayHello()函數(列印Hello World);然後在Java中調用這個函數顯示Hello Word.
現在分別從Java和C語言兩部分說明:
1. Java 部分
首先定義一個HelloNative,在其中申明sayHello函數,函數要申明為Native 類型的.如下:
public class HelloNative {
public native void sayHello();
}

編譯這個類,生成class文件:
javac HelloWorld.java

利用javah生成需要的h文件
javah HelloNative

生成的 h文件大概如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */

#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_sayHello
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

可以看一下上面自動生成的程序,程序include了jni.h,這個頭文件在 $JAVA_HOME下的include文件夾下. 還可以發現生成的函數名是在之前的函數名前面加上了Java_HelloNative。
2. C語言部分
根據上面生成的h文件編寫相應的代碼實現,建立一個 HelloNative.cpp用來實現顯示Hello World的函數.如下:

#include <stdio.h>
#include "HelloNative.h"

JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)
{
printf("Hello World!\n");
}

代碼編寫完成之後,我們再用gcc編譯成庫文件,命令如下;
gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp

這樣就會在當前目錄下生成一個libHelloNative.so的庫文件.這時需要的庫已經生成,在C語言下的工作已經完成了.
接下來需要在Java中編寫一個程序測試一下.在程序前,需要將我們的庫載入進去.載入的方法是調用Java的 System.loadLibrary("HelloNative");

public class TestNative
{
static {
try {
System.loadLibrary("HelloNative");
}
catch(UnsatisfiedLinkError e) {
System.out.println( "Cannot load hello library:\n " + e.toString() );
}
}
public static void main(String[] args) {
HelloNative test = new HelloNative();
test.sayHello();
}
}

但是再編譯後,運行的時候,問題又出現了.
Cannot load hello library:
java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V
at HelloNative.sayHello(Native Method)
at TestNative.main(TestNative.java:13)

載入庫失敗,但是庫明明就是放在當前文件夾下的,怎麼會載入失敗呢?
用System.getProperty("java.library.path")查看,發現java.library.path中並不u存在當前的目錄.主要有以下的幾個解決辦法:
1) 將生成的庫復制到java.library.path有的路徑中去,當然這樣不是很好
2) 設置環境變數export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,將當前的目錄加入到LD_LIBRARY_PATH中
3) 設置java 的選項,將當前的目錄加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
這樣之後程序就能夠成功的運行了.可以看見顯示的"Hello World!"了

閱讀全文

與c語言編譯和java編譯相關的資料

熱點內容
中國移動長沙dns伺服器地址 瀏覽:249
wifi密碼加密了怎麼破解嗎 瀏覽:596
linux命令cpu使用率 瀏覽:67
linux實用命令 瀏覽:238
傳奇引擎修改在線時間命令 瀏覽:109
php取域名中間 瀏覽:897
cad命令欄太小 瀏覽:830
php開發環境搭建eclipse 瀏覽:480
qt文件夾名稱大全 瀏覽:212
金山雲伺服器架構 瀏覽:230
安卓系統筆記本怎麼切換系統 瀏覽:618
u盤加密快2個小時還沒有搞完 瀏覽:93
小米有品商家版app叫什麼 瀏覽:94
行命令調用 瀏覽:436
菜鳥裹裹員用什麼app 瀏覽:273
窮查理寶典pdf下載 瀏覽:514
csgo您已被禁用此伺服器怎麼辦 瀏覽:398
打開加密軟體的方法 瀏覽:156
雲存儲伺服器可靠嗎 瀏覽:967
2核1g的雲伺服器能帶動游戲嘛 瀏覽:898