當前位置:首頁 » 編程語言 » java性能

java性能

發布時間: 2022-01-09 11:13:44

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性能優化權威指南怎麼樣

下面給你提供一些在JAVA程序的設計和編碼中,經常採用的一些方法和技巧,可以提高JAVA程序的性能:

1.對象的生成和大小的調整。

JAVA程序設計中一個普遍的問題就是沒有好好的利用JAVA語言本身提供的函數,從而常常會生成大量的對象(或實例)。由於系統不僅要花時間生成對象,以後可能還需花時間對這些對象進行垃圾回收和處理。因此,生成過多的對象將會給程序的性能帶來很大的影響。

例1:關於String ,StringBuffer,+和append

JAVA語言提供了對於String類型變數的操作。但如果使用不當,會給程序的性能帶來影響。如下面的語句:

String name=new String("HuangWeiFeng");
System.out.println(name+"is my name");

Ⅲ 為什麼java性能比C#好那麼多

有這一說法,也許我們只看到JAVA寫了許多的桌面軟體,而C#寫了桌面的話性能慘不忍睹。也不知用C#寫的PAINT.NET怎樣樣了,也許是這個大學的學生寫著玩的吧。

Ⅳ 網上說 Java 的性能已經達到甚至超過 C++,是真的嗎

看看這些軟體有幾個是Java開發的:游戲服務端,金融交易服務端,資料庫服務端。

Java的運行效率不可能超過C++(前提都是設計良好的情況下),因為Java到機器之間還有個jvm,這個難道不是顯而易見的嘛?

開發效率的提高必然遠離機器語言,因為接近機器語言怎麼可能開發效率高呢?

Ⅳ 為什麼java開發游戲性能和效率差

java面向對象,所有方法都是封裝在類里的,要調用方法就得實例類,而游戲主要側重的是邏輯
對象就像是很多功能的機器,但是我的游戲邏輯只要每台機器的其中一個功能,但要用的話必須把這一整台機器製造出來。這就是面向對象的缺陷吧
而c是面向過程的可以更加靈活地設計過程邏輯,少去很多多餘東西,大大提高性能
java的長處就是利用各種現存的類包,達到復用的效果,大大提高開發效率,
當然java也可以只針對邏輯來設計類,但那不是java的長處,沒有多大的意義
所有可以總結為:java開發的高效率導致的缺點是性能的降低,當然這不是絕對的,大部分情況下是這樣

Ⅵ 試述javascript和java在性能上的差異

java是面對對象的編程,javascript是一種可以嵌入Web頁面中的基於對象和事件驅動的解釋性語言,用來向頁面添加交互效果,使頁面動態化。
java是需要進行預編譯的,javascript不需要預編譯,在程序的運行過程中逐行進行解釋,由瀏覽器解釋執行。
java定義變數需要定義數據類型,而js中沒有數據類型,以賦值為准。

Ⅶ 如何提高Java性能

提高JAVA的性能,一般考慮如下的四個主要方面:
(1) 程序設計的方法和模式
一個良好的設計能提高程序的性能,這一點不僅適用於JAVA,也適用也任何的編程語言。因為它充分利用了各種資源,如內存,CPU,高速緩存,對象緩沖池及多線程,從而設計出高性能和可伸縮性強的系統。
當然,為了提高程序的性能而改變原來的設計是比較困難的,但是,程序性能的重要性常常要高於設計上帶來的變化。因此,在編程開始之前就應該有一個好的設計模型和方法。
(2) JAVA布署的環境。
JAVA布署的環境就是指用來解釋和執行JAVA位元組碼的技術,一般有如下五種。即解釋指令技術(Interpreter Technology),及時編譯的技術(Just In Time Compilier Technology), 適應性優化技術(Adaptive Optimization Technology), 動態優化,提前編譯為機器碼的技術(Dynamic Optimization,Ahead Of Time Technology)和編譯為機器碼的技術(Translator Technology).
這些技術一般都通過優化線程模型,調整堆和棧的大小來優化JAVA的性能。在考慮提高JAVA的性能時,首先要找到影響JAVA性能的瓶頸(BottleNecks),在確認了設計的合理性後,應該調整JAVA布署的環境,通過改變一些參數來提高JAVA應用程序的性能。具體內容見第二節。
(3) JAVA應用程序的實現
當討論應用程序的性能問題時,大多數的程序員都會考慮程序的代碼,這當然是對的,當更重要的是要找到影響程序性能的瓶頸代碼。為了找到這些瓶頸代碼,我們一般會使用一些輔助的工具,如Jprobe,Optimizit,Vtune以及一些分析的工具如TowerJ Performance等。這些輔助的工具能跟蹤應用程序中執行每個函數或方法所消耗掉的時間,從而改善程序的性能。
(4) 硬體和操作系統
為了提高JAVA應用程序的性能,而採用跟快的CPU和更多的內存,並認為這是提高程序性能的唯一方法,但事實並非如此。實踐經驗和事實證明,只有遭到了應用程序性能的瓶頸,從而採取適當得方法,如設計模式,布署的環境,操作系統的調整,才是最有效的。
3.程序中通常的性能瓶頸。
所有的應用程序都存在性能瓶頸,為了提高應用程序的性能,就要盡可能的減少程序的瓶頸。以下是在JAVA程序中經常存在的性能瓶頸。
了解了這些瓶頸後,就可以有針對性的減少這些瓶頸,從而提高JAVA應用程序的性能
4. 提高JAVA程序性能的步驟
為了提高JAVA程序的性能,需要遵循如下的六個步驟。
a) 明確對性能的具體要求
在實施一個項目之前,必須要明確該項目對於程序性能的具體要求,如:這個應用程序要支持5000個並發的用戶,並且響應時間要在5秒鍾之內。但同時也要明白對於性能的要求不應該同對程序的其他要求沖突。

Ⅷ 提高Java性能的幾個高效用法

1.循環

■ 在重要的循環里,消除循環終止判斷時的方法調用。。。
例如:將...

for( int i = 0; i < collection.size(); i++){
...
}

替換為…

for( int i = 0; n = collection.size(); i < n; i++){
...
}

通常,把與循環index不相關的移到循環的外面

for( int i = 0; terminal = x.length; i < terminal; i++){
X[i] = x[i] / scaleA * scaleB
}

應該該成:

Double scale = scaleb / scaleA;
for( int i = 0; terminal = x.length; i < terminal; i++){
X[i] = x[i] * scale
}

2.字元串

■ 消除字元串連接
■ 創建長字元串時,總是使用StringBuffter代替String
■ 預先分配StringBuffer空間
StringBuffer sb = new StringBuffer(5000);

3.基本數據類型

■ 在重要的循環里使用基本數據類型(int型數據通常比long/double型數據更快)
■ 基本數據類型(Boolean,Integer,etc)的包裝類主要用在當傳遞的方法參數必須是一個對象的引用時(而不是一個基本數據類型)
■ 對所有的常量代數表達式使用static final修飾符
一 使常量更容易引用(編譯器預先計算常量表達式)

4.異常

■ 異常只用於單個真正的錯誤條件
一 拋出一個異常和執行一個catch代碼塊花費是很高的(主要由於當創建一個異常時要獲得線程棧的一個快照)
一 只當條件真的異常時才拋出一個異常
■ 使編譯器和運行時最優化,將幾個方法調用放在一個try/catch塊中,而不是為每個方法調用實現幾個try/catch塊

try{
Some.method1(); //Difficut for javac
} catch (method1Exception e) { //and the JVM runtime
//Handle exception 1// to optimixe this code
}

try{
Some.method2();
} catch (method2Exception e) {
// Handle exception 2
}

try{
Some.method3();
} catch (method3Exception e) {
// Handle exception 3
}

try{
Some.method1();
Some.method2();
Some.method3(); // easier to optimize
} catch (method1Exception e) {
// Handle exception 1
} catch (method2Exception e) {
// Handle exception 2
} catch (method3Exception e) {
// Handle exception 3
}

5.基準

■ 注意,所有這些技巧會因不同的平台和虛擬機而不同
一 例如:在有些servlet容器內,通過一個OutputStream作為位元組輸出會更快
一 在其它的容器內,通過一個PrintWriter輸出字元會更快
■ 這些技巧描述的是最可移植的建議
■ 你可能需要運行一些基準來判斷在你的平台上怎麼樣是最快的

Ⅸ Java性能優化

望君滿意,利用哈希表。
public class Test {
public static void main(String[] args) {
String[] s = new String[1000000];
for (int i = 0; i < 1000000; i++) {
s[i] = "a" + i;
if (i == 800000)
s[i] = "a" + 100;
}
long beginTime = System.currentTimeMillis();
HashMap<String, String> map = new HashMap<String, String>();
for (int i = 0; i < s.length; i++) {
map.put(s[i], s[i]);
}
Object[] objArray = map.entrySet().toArray();
s = null;
s = new String[objArray.length];
for (int i = 0; i < objArray.length; i++) {
@SuppressWarnings("unchecked")
Entry<String, String> entry = (Entry<String, String>) objArray[i];
s[i] = entry.getValue();
}
long endTime = System.currentTimeMillis();
System.out.println(map.size() + "||" + s.length + "||cost time:"
+ (double) (endTime - beginTime) / 1000);
}
}

Ⅹ 怎樣利用Java開發高性能

1、開發高性能Java程序的原則和方法:
決定一個Java程序性能的好壞,是多方面的因素,包括前期的系統結構設計、底層平台架構設計、應用開發中的代碼編寫以及技巧的使用,系統平台的軟體配置,系統平台的硬體性能等等。這里只給出代碼編寫方面的一些原則和方法。
相對於Java的其他方面,在性能領域Java飽受的非議可能最多。許多人認為,Java如果想更好的發展下去必須解決性能問題。然而真正的事實是Java在編譯器、JVM以及運行期優化方面確實在不斷的進步,Java正在運行的越來越快。實際上很多的性能問題,是由於設計不佳引起的,與Java本身並無關系。在拙劣的設計和編碼面前,無論你使用多少運行期優化,無論你的編譯技術多麼先進,無論你的硬體平台性能多麼強大,最後的代碼運行依然低效。
同樣無論運行期優化技術、編譯技術以及硬體平台多麼強大,運用一些已被驗證對Java運行性能有益的技術,總是能獲得非常好的收益。
優化程序代碼的注意事項:
1.除非必須優化,否則不要輕易改動;
2.改動之後要進行仔細的測試;
3.在各個JVM產品中,優化的方式是有區別的;
2、高性能Java的編碼原則:
(1)、先把焦點放在設計、數據結構和演算法身上;
(2)、不要依賴於編譯器編譯期優化技術,正確理解運行期代碼優化技術以及正確使用運行期代碼優化;
(3)、使用StringBuffer類完成字元串連接;
(4)、將對象創建成本降至最低,即盡量創建輕量級對象;
1、合理設計對象大小
2、合理設計類的繼承深度
3、類的構造函數要短小精幹
4、不要創建非必要的對象
5、將對象的創建拖延到最後一刻,即延遲載入技術
6、可能的話要自己實現一個對象緩沖管理池,將對象的創建與回收控制在一個合理的范圍內
(5)、降低同步化帶來的影響;
1、合理識別是否一定要使用同步控制,盡量從設計上避免
2、注意控制同步代碼范圍,避免對線程活躍度造成影響
3、合理使用鎖變數,做到線程分離,提高程序並發度,更進一步提高程序吞吐量
4、用於鎖變數的對象不宜過多,當要使用多個對象作為鎖變數時,一定要確保在代碼中自始自終按照同樣的順序鎖定它們,否則可能導致死鎖
(6)、盡可能使用Stack變數和基本類型完成必要的任務;
(7)、使用static、final、private方法以促成inlining;
(8)、實例變數初始化一次就好;(即一定義就會有一個初始值,下面不需要再進行一次初始化)
(9)、集群類對象的處理;
(10)、盡可能重用對象;(11)、使用延遲載入技術;

熱點內容
密碼子的原料是什麼 發布:2024-09-19 09:11:42 瀏覽:347
半夜編程 發布:2024-09-19 09:11:36 瀏覽:103
海康威視存儲卡質量如何 發布:2024-09-19 08:55:35 瀏覽:940
python3默認安裝路徑 發布:2024-09-19 08:50:22 瀏覽:516
環衛視頻拍攝腳本 發布:2024-09-19 08:35:44 瀏覽:418
sqlserveronlinux 發布:2024-09-19 08:16:54 瀏覽:256
編程常數 發布:2024-09-19 08:06:36 瀏覽:952
甘肅高性能邊緣計算伺服器雲空間 發布:2024-09-19 08:06:26 瀏覽:162
win7家庭版ftp 發布:2024-09-19 07:59:06 瀏覽:717
資料庫的優化都有哪些方法 發布:2024-09-19 07:44:43 瀏覽:269