當前位置:編程學習大全網 - 編程語言 - 為什麽Java不適合遊戲開發?

為什麽Java不適合遊戲開發?

作為壹個多年遊戲服務端開發者,我來回答壹下這個問題。只要妳仔細去招聘網站看,會發現遊戲招java的非常少(我希望杠精不要擡杠,我說的少,而且非常少,並不是說沒有)。那麽為什麽在其他領域的霸主在遊戲行業連喝口湯的資格都沒有呢?其實主要有兩個原因,而且這兩個原因都和程序員最關心的效率有關系,壹個是開發效率,壹個是運行效率。很遺憾的作為壹個不上不下的java兩個都占不了。

首先是開發效率,在幾年前手機遊戲開始火爆,遊戲公司多,產品相似度高,那麽如何能以最快的速度開發完遊戲並且上線運營,在快速叠代中試錯,降低開發周期就是減少開發成本。在這種環境下,很多腳本語言成了首選,比如nodejs、php甚至還有lua和python(這裏多說壹句,別看lua語言本身簡單,其實lua在遊戲領域的使用成本是非常高的,至少在這四種腳本語言中是最高的,因為他只是壹個膠水語言,要依附於c/c++,作為遊戲周邊的庫都要自己造輪子或找輪子,同時對於引擎部分來說,對核心開發人員要求也非常高,如果公司沒有經驗豐富的c/c++程序員,lua基本玩不轉)。在這些腳本語言面前,java毫無優勢。nodejs開箱即用,用js可以前後端壹起寫(html5的流行讓這種情況更是越來越多)。而php上手容易,開發簡單,而且像壹些用http的弱交互遊戲,熱更新簡直不要太爽,無感知修bug。壹些簡單的休閑遊戲,用這些腳本語言完全可以很快速的完成,就拿之前比較火的刀塔傳奇來說,用這些腳本語言壹點壓力都沒有,還有特別是棋牌類遊戲,腳本語言更是首選。

其次再來說說運行效率,在壹些密集型計算的遊戲中,c++是首選,壹些大型遊戲,對計算要求很高,業務邏輯復雜的情況下,提升效率就能多容納在線人數,也是成本的減少。同時對內存要求也高,使用c++可以數著內存寫代碼(手法過於誇張[捂臉]),對象啥時候申請,啥時候釋放都是程序員說了算,gc消耗不存在的。而java生成的都是字節碼,代碼執行都要經過jvm來跑,這中間的消耗對於那些對性能要求苛刻的程序來說,絕對不能接受。

綜合以上兩點,java處於運行效率和開發效率中間的語言,在遊戲這個行業自然是不會受到青睞。

做遊戲引擎,當然還是看性能啦,c的性能最好。java性能其實也很好了,看誰出個簡單快速的框架唄

JAVA可以做遊戲服務端的開發,也就是網絡遊戲的開發,網絡遊戲的實時性高,對高並發,數據的壹致性處理要求較高,並且因為是自身JVM的垃圾回收機制對服務器的內核性能要求高,會占用壹定的資源去處理這部分數據,遊戲的實時性代表了大量數據會經常被更改替換。

JAVA不是不能做,而是對開發人員的能力要求高!如果能夠充分利用JAVA的並發優勢,那是可以做到的,並且這已經被有些小公司當做網絡遊戲服務端的開發語言了。

PC端,移動端的單機遊戲就不用再考慮JAVA了,顯然JAVA的2D3D處理效果沒有壹些主流的遊戲開發語言好!語言具有其使用場景,抓住其優點去利用之,而不是拿它的缺點如何別的語言優點相比!如今JAVA是做服務端開發的不二人選,因為他的帝國大廈已經很完善,開發人員也多!

因為java中間多出來壹個jvm,效率低,遊戲實時性很重要。

看壹個語言適合開發什麽,主要有三點

1.效率問題,包括開發效率和執行效率。

2.生態圈,有人家提供好的成套解決方案,為什麽不用呢?

3.產品的側重點。

就拿java和c++來說,java主要用於web開發,但是c++通過cgi也可以寫web,而且c++的執行效率甩java幾條街,但是為什麽不用c++寫web呢,因為c++的開發web的效率太低,而java有各種web方面的框架,開發效率高。

如果產品是遊戲,遊戲實時性很重要,妳玩個遊戲反應慢半拍那肯定很惱火。遊戲這個產品的實時性就註定了要采用高效率的語言開發,那c,c++自然就跑不掉了。

Java何來不適合遊戲開發壹說的呢?

畢竟遊戲有分類,而且遊戲也分客戶端,服務端

很多遊戲的服務端就是Java的

而且實時性要求不高的遊戲客戶端,也可以用Java開發,例如我的世界

我想題主想問為什麽3A大作沒有用Java開發的吧

這其實是壹個路徑綁定問題,目前大作基本上都是用遊戲引擎做的,而且這些遊戲引擎都是發展多年的,如果用Java做,可能要用沒經過業內驗證的新東西,大公司不想冒險,還有Java的垃圾回收機制本身也是個難點,不適合做實時性非常強的遊戲。

java開發遊戲性能和效率差,開發壹些小遊戲還可以,java面向對象,所有方法都是封裝在類裏的,要調用方法就得實例類,而遊戲主要側重的是邏輯

對象就像是很多功能的機器,但是我的遊戲邏輯只要每臺機器的其中壹個功能,但要用的話必須把這壹整臺機器制造出來。這就是面向對象的缺陷吧

而c是面向過程的可以更加靈活地設計過程邏輯,少去很多多余東西,大大提高性能

java的長處就是利用各種現存的類包,達到復用的效果,大大提高開發效率,

當然java也可以只針對邏輯來設計類,但那不是java的長處,沒有多大的意義

百度搜索圈T社區()免費視頻教程

如果妳問我java適合開發遊戲嗎?我回答肯定是適合的,java開發效率高,運行效率壹般,需要運行效率的地方用c或者cxx寫就好了,現在市面大多數遊戲都不是單壹編程語言開發的,不需要在語言方面糾結太久。

很多人說,運行效率也很重要,但實際上,壹般邏輯,妳是感受不出差異的,普通邏輯使用java或者c#,或者腳本語言等這種開發效率,調試效率高的語言會讓妳開發更舒服。特別是腳本語言。

c和cxx只在特別需要效率的地方才使用。

哈_,這裏子期!java開發遊戲性能和效率差,開發壹些小遊戲還可以,遠標老師講過java面向對象,所有方法都是封裝在類裏的,要調用方法就得實例類,而遊戲主要側重的是邏輯

對象就像是很多功能的機器,但是我的遊戲邏輯只要每臺機器的其中壹個功能,但要用的話必須把這壹整臺機器制造出來。這就是面向對象的缺陷吧

而c是面向過程的可以更加靈活地設計過程邏輯,少去很多多余東西,大大提高性能

java的長處就是利用各種現存的類包,達到復用的效果,大大提高開發效率,

當然java也可以只針對邏輯來設計類,但那不是java的長處,沒有多大的意義

  • 上一篇:卸船作業流程圖
  • 下一篇:編程峰值
  • copyright 2024編程學習大全網