Java分三支:JavaSE、JavaME、JavaEE。JavaSE是最基础的,可以在Windows上跑也可以制作能在Windows上跑的客户端,也是能用来做游戏的(Emmm 《我的世界》那种的)...
而JavaSE在当年塞班系统和塞班系统都没有的半智能机时代,大家手机上的各类游戏都是JavaSE开发的居多,相信大家都有印象,进去的时候那杯咖啡...
以上两个都没落了,主要原因就是因为JavaEE的崛起。服务器端,JavaEE的统治力还是足够强,因为Sun公司的思路在当年也算是正确的抉择,然Java发挥其长处,走业务处理的道路。作为一门高级语言,Java也许各种底层的东西优化起来很难,但是对于需要处理复杂业务逻辑的程序猿来说,我他喵绞尽脑汁写代码为了实现这个复杂的业务逻辑,你告诉我占用内存太大了?那你来用一天的时间给写一个占用内存小又能实现业务的程序来。(。・_・。)ノI’m sorry~ 对于这类场景,其它的语言还真没几个有Java这么擅长,JVM的机制就是为了让程序员可以专注于业务逻辑,不用去想底层执行。
这叫责任分离,当然做Java开发做到后面,还是得去研究JVM。毕竟大家都对业务处理很熟悉了,要提升自己,就只能去钻研底层了。毕竟对于服务器而已,省内存也很重要啊,就意味着同样的机器可以再多跑好多个业务,一个集群算下来就是质的飞跃了。
其实这些东西,做游戏,特别是多人联网游戏,也会有底层优化相关的大神的。毕竟咱们的PC只是负责渲染画面,数据的运算,还是得游戏服务器说了算。不过一般而言,Java也不参与游戏数据的运算,别问我为啥,开发游戏一般都是用C语言、C++ 你闲着没事到了服务器端我就换Java写啊,肯定是顺手就用C语言撸了,服务器又不是不能跑。游戏里面一般又很少有复杂的业务场景,你家的游戏里面内置一个淘宝那样的游戏道具商城么?不存在的啊。
当然,游戏开发大概是最不挑语言的了。很多主要是C++开发的游戏里面,偶尔有些小功能也会客串Java进去,不为别的。程序猿写这个功能的时候突然意识到,我当年Java写过这么一个功能,刚好这个程序还挺小的,放进来也ojbk。于是可能一些游戏里面那种跟电脑交互使用仓库的场景,真的就是Java写的。大家还会觉得这游戏做的好真实,那个屏幕看起来好像Java的命令行,其实不是做的像,而是压根就是Java的窗口...
java开发游戏性能和效率差,开发一些小游戏还可以,远标老师讲过java面向对象,所有方法都是封装在类里的,要调用方法就得实例类,而游戏主要侧重的是逻辑
对象就像是很多功能的机器,但是我的游戏逻辑只要每台机器的其中一个功能,但要用的话必须把这一整台机器制造出来。这就是面向对象的缺陷吧
而c是面向过程的可以更加灵活地设计过程逻辑,少去很多多余东西,大大提高性能
java的长处就是利用各种现存的类包,达到复用的效果,大大提高开发效率,
当然java也可以只针对逻辑来设计类,但那不是java的长处,没有多大的意义
2,所谓的大型游戏一般都是指端游。必须是C++
这没办法C++和java的效率还是有很大差距的。
java什么东西基本都能开发,只是java致命的是不能直接操作内存,只能安装虚拟机,这样使java在开发的时候造成很多局限性.但是java提供了本地方法,可以调用c的类库。使得功能进一步提升。又由于java对于垃圾回收机制是自动的,使得游戏在流畅性上有很大的折扣。所以java不适合开发大型游戏(除非自己实现垃圾回收等一些机制),使java能与c相比使。又因为java的初衷就不在界面和桌面游戏上。而在企业开发。因此java不适合开发大型游戏。中小型网络游戏还行。
在游戏业Java可以搞什么?那就是页游和手游的服务端了,页游的前端都是Flash,手游的前端是coco2dx(C++),unity3D(C#或JS) 你可以看看 37游戏 墨麟集团 上海易娱 明朝网络 动网先锋 掌趣科技 等等游戏公司他们都找Java游戏服务端的
在性能方面java拿来做页游手游的服务端是无压力的。 为什么不用C++?
因为Java的开发效率比C++的要高,敏捷,游戏开发都是在抢时间的,c++的要求门槛高 ,而且经验少的代码质量差,服务器很容易挂掉,另外一个是Java的人也比较好找,写的代码不要太烂,一般服务不会有什么问题的。
页游手游现在用c++比较多的另外一个原因:历史
为什么?
好像在jdk 4.0之前是没有NIO的,所以游戏服务端的天下都是c++/c,后来java出了NIO后,慢慢出现NIO的框架 如netty mina等等优秀的框架,慢慢就出现用java来做服务端了。
NIO是什么,自己百度吧。 光电探测器
NIO的包,有一些新特性,就是异步非阻塞通讯。大大提高了服务端的性能。
你们现在所用的Tomcat,其实是伪异步阻塞式通讯,就是一个线程池在接受发送,一个线程必须等客户端接受完毕才解除阻塞,底层还是同步阻塞的。
现在很多页游手游的服务端都用Java了,起码在广州已经是很成熟的。
搞C++的不愿转Java,这就是为什么服务端都是c++的天下了,java起码在页游手游服务端毫无疑问的,也有很多成功的产品。
假如你想搞端游,提醒一下,搞端游的公司门槛很高的,而且数量极少,现在剩下的端游公司真心不多了,都是些巨头,你打算搞端游的话,第一个你达不达到那种高水平?
第二,公司太少了,风险很大。光电探测器