再论游戏开发语言
关于网上比较C++与JAVA的文章很多,在这边我还是要再啰嗦一下,毕竟也是原创的嘛。
?
本人做了3年游戏开发,有多年的JAVA与C++开发经验,有一点感触,写下来给有需要的人。
?
做网络游戏目前毫无疑问的C++占9成以上,我想大部分人选择它是因为他的效率,不过还有一些其他原因,跟风,对,中国人比较喜欢跟风与山寨,比如打听某某大作是用什么语言开发的呀,使用了什么类型的脚本啊,比较典型的就是模仿暴雪,中国什么山寨都有,技术选型也不例外。
?
客户端其实不用比较了,JAVA是真的不适合,因为他的跨平台特性,没有使用原生控件来绘制,效率自然低下。
服务器端还是需要好好的比较一下的。
?
1 C++ 速度快,掌握把控难,可用库较少,跨平台比较难,开发周期比较久,不稳定,不安全等特点。
2 JAVA 速度相当较慢 ?掌握容易 ?可用库非常丰富?,跨平台简单,可以方便的利用64位linux系统的大内存,开发周期较短,更稳定,更安全,JNI技术可用在关键技术上使用native代码,更容易控制团队与全局。
?
首先C++与JAVA最大的不同当然是在内存管理上面了,C++的内存自己管理,而JAVA是通过垃圾收集器回收的。
C++可以使用指针定位方式获取收到的数据,JAVA大多是通过复制来实现的,虽然JAVA是复制底层是通过汇编实现的,很快,但是也会出现一个问题,大量的复制导致内存回收过于频繁,年轻代垃圾回收器频繁的工作,每次工作消耗的系统时间大概是5-15MS,在高并发的情况下,平局20秒就要回收一次。
?
目前C++开发的网游,能完全实现跨平台的使用64位技术的是少之又少,基本上90%都是windows上开发的。
而JAVA就可以利用它跨平台的优势,通过线程局部缓存,设定对象池,使用大内存等方案,是完全可以与C++抗衡的。
目前北京已经有几十家公司采用JAVA开发游戏服务器了,期待有更多JAVA开发的游戏大作出现!
?