javac速度比
ecplipse編譯慢,並不是說編譯的工具慢,是由於工程代碼很多,導致內存短時間產生不夠的現象,表現出來的就是很慢。
很多程序在進行大數據的計算或者資料庫的操作,都需要很多的內存來計算或者保存數據,編譯環境這時候就會很卡。
2. JAVA的技術特點是什麼
JAVA的技術特點是什麼?
Java由美國SUN公司(被oracle公司收購)發明於1995年,是目前業界應用最廣泛、使用人數最多的語言,連續多年排名世界第一,可以稱之為「計算機語言界的英語」。
那麼Java這么高的評價它的特點有哪些,下面我來為題主解答:
一、跨平台/可移植性
這是Java的核心優勢。Java在設計時就很注重移植和跨平台性。比如:Java的int永遠都是32位。不像C++可能是16,32,可能是根據編譯器廠商規定的變化。這樣的話程序的移植就會非常麻煩。
Java首先利用文本編輯器編寫 Java源程序,源文件的後綴名為.java;再利用編譯器(javac)將源程序編譯成位元組碼文件,位元組碼文件的後綴名為.class; 最後利用虛擬機(解釋器,java)解釋執行。如下圖所示:
二、安全性
Java適合於網路/分布式環境,為了達到這個目標,在安全性方面投入了很大的精力,使Java可以很容易構建防病毒,防篡改的系統。比如Java取消了強大但又危險的指針。由於指針可進行移動運算,指針可隨便指向一個內存區域,而不管這個區域是否可用,這樣做是危險的。
三、面向對象
面向對象是一種程序設計技術,非常適合大型軟體的設計和開發。由於C++為了照顧大量C語言使用者而兼容了C,使得自身僅僅成為了帶類的C語言,多少影響了其面向對象的徹底性!Java則是完全的面向對象語言。
四、簡單性
Java就是C++語法的簡化版,我們也可以將Java稱之為「C++-」。跟我念「C加加減」,指的就是將C++的一些內容去掉;比如:頭文件,指針運算,結構,聯合,操作符重載,虛基類等等。同時,由於語法基於C語言,因此學習起來完全不費力。
五、高性能
Java最初發展階段,總是被人詬病「性能低」;客觀上,高級語言運行效率總是低於低級語言的,這個無法避免。Java語言本身發展中通過虛擬機的優化提升了幾十倍運行效率。比如,通過JIT(JUST IN TIME)即時編譯技術提高運行效率。 將一些「熱點」位元組碼編譯成本地機器碼,並將結果緩存起來,在需要的時候重新調用。這樣的話,使Java程序的執行效率大大提高,某些代碼甚至接近C++的效率。
因此,Java低性能的短腿,已經被完全解決了。業界發展上,我們也看到很多C++應用轉到Java開發,很多C++程序員轉型為Java程序員。
六、分布式
Java是為Internet的分布式環境設計的,因為它能夠處理TCP/IP協議。事實上,通過URL訪問一個網路資源和訪問本地文件是一樣簡單的。Java還支持遠程方法調用(RMI,Remote Method Invocation),使程序能夠通過網路調用方法。
七、多線程
多線程的使用可以帶來更好的交互響應和實時行為。 Java多線程的簡單性是Java成為主流伺服器端開發語言的主要原因之一。
八、健壯性
Java是一種健壯的語言,吸收了C/C++ 語言的優點,但去掉了其影響程序健壯性的部分(如:指針、內存的申請與釋放等)。Java程序不可能造成計算機崩潰。即使Java程序也可能有錯誤。如果出現某種出乎意料之事,程序也不會崩潰,而是把該異常拋出,再通過異常處理機制加以處理。
以上幾種特性你了解到啦嗎? 記得給個贊!
當然這些還沒完,Java除啦這些特性還有一些其他的特點我也來給你講一講!!
1.java的風格類似C++,從某種意義上講,java是C++的一個變種。但是java摒棄了C、C++中的容易引發錯誤和難以理解的指針,結構,以及內存管理等;
2.java是一種強類型的語言,比C/C++檢查還要嚴格,java區分大小寫字母;
3.java禁止非法訪問內存,因為java沒有指針,內存的申請和釋放;
4.對於不同的操作系統,會有不同的java虛擬機,這也就決定了java的可移植性;
5.java提供了自動垃圾回收機制gc,有效避免了C、C++的內存泄漏問題;
記得給個贊!
3. Java 代碼的運行效率是由Java虛擬機決定,還是由我們的PC速度決定
運行效率分兩個部分,一個是編譯的效率,一個是執行的效率。
編譯的效率是由jvm和pc兩部分影響的,編譯後的class文件的執行速度就完全由pc決定了,這個和你的代碼中是否有循環沒有直接關系,執行所耗費的時間是按照計算機計算一個二進制基礎運算的基礎來衡量的。這裡面還有class文件解釋成機器碼的時間,這個就是按語句的多少來算了,因為java是逐行逐句解釋的。所以我們說class文件的運行時間也包含了class文件解釋成機器碼的時間。
不過java運行效率再快,也沒有c代碼快,這個不是說c代碼精煉就運行快的原因。
java代碼通過jvm編譯成class文件,這時候還不能說是編譯成機器碼了,class碼呢還是一種中間碼,還需要被解釋成機器碼,這也是為什麼java是跨平台的語言的原因。而c代碼,只需要直接一次性編譯成機器碼就可以了。這也是為什麼在某種平台下寫的c代碼不能再跨平台的原因。
希望我已經解釋清楚了。