行运一条龙她告诉我你不适合我的(行运一条龙她告诉我你不适合我的英语)
5552023-09-02
这篇文章给大家聊聊关于为什么Java不适合游戏开发,以及java不建议使用的方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
本文目录
目前Lombok并没有爆出有什么坑,还是推荐大家使用的,主要确实是方便和简洁,eclipse和idea都支持这种插件,使用起来特别方便,代码看起来很简洁,如果一个bean对象有二十几个属性,下面一大堆get和set方法,不利于代码的维护,用了Lombok插件,只要写上属性和相应的注解就可以了。
要说有什么缺点,那就是不能你一个人用,得一组人一起用,不然别人同步代码以后会报错。
c/c++就不说了,Windows有c#mac有ocswift有方便的为什么要用麻烦的,当然Android(假如移动端也算)是用Java做应用的。综上不适合就是系统上的“政治”正确与否
这个想法不错!如果没有spring,我们正常的一个项目应该怎么搭建和开发?
不允许使用Spring框架意味着搭建的项目不允许使用SpringBoot、SpringMVC、Spring这些Spring家族的框架,既然如此ORM框架我们也不要使用,在这样的限制条件下,项目应该如何搭建?日常CRUD应该如何开发?
心动不如行动,开始搭建,先创建一个简单的maven项目no_spring_example:
这个项目我们需要它具备如下的几个能力:
1、能够提供http接口访问能力;
2、能够操作MySQL数据库,支持事务,支持连接池;
3、能够操作redis;
4、可以部署在tomcat容器。
开始搭建中。。。
竟然花了我将近2个小时的时间,终于跑起来了,先看看项目整体架子:
相关包介绍:
org.example.conf:
DruidUtil:数据源配置,采用的是阿里巴巴开源的druid;MysqlBaseUtil:Mysql数据库的增、删、改、查基本操作,支持单次和批量;RedisUtil:redis操作工具类,采用的是JedisPool。org.example.dao:
Test1Dao:这个就是对数据库里test1表的操作。org.example.dispatcher:
StartupServlet:启动类Servlet,利用loda-on-startup来初始化加载WEB-INF/config目录的一些配置文件;Config:即加载servlet.conf文件中的配置信息,比如MySQL连接信息、redis连接信息org.example.filter:
GolbalFilter:全局过滤器,web三大组件之一;org.example.servlet:
Test1AddServlet:新增数据api;让我们把它运行到tomcat容器中,然后访问接口:http://localhost:8080/no_spring_example_war/test1/add.do
返回成功了,查看数据库表数据:
这样我们的数据库操作就通了,一个完全没有Spring相关框架参与的小架子就搭建完毕!
由于篇幅原因,涉及到redis操作、数据库事务并没有展现,感兴趣的同学可以私信我获取该项目源代码,让我们一起回忆青春~
回到问题本身,没有spring框架,对我们开发有什么影响?
结合上面这个项目来看,确实需要我们自己做的事情比较多,比如:
参数的获取、校验、序列化成对象;数据的返回,反序列化成json;数据库的操作需要我们手写sql;连接池需要我们自己初始化,事务需要我们自己回滚;只能使用Filter、Interceptor,不再有强大的AOP,这个也需要你自己去实现;随着业务的复杂,我们需要集成其他功能,例如异步、中间件等都需要我们自己去开发;用惯了Spring框架的我们,或许这个时候才知道它的好吧~
不过话说回来,如果真的在实际工作中不用Spring框架完成一个项目的话,你的基础能力一定会有很大的提升,包括工具类的抽取、对象的封装,基础组件的使用以及理解等,只要你是一个有追求的程序员~
框架虽好用,但是却容易蒙住我们的双眼。
最后,给你们再看一眼曾经多么熟悉的web.xml:
作为一个多年游戏服务端开发者,我来回答一下这个问题。只要你仔细去招聘网站看,会发现游戏招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处于运行效率和开发效率中间的语言,在游戏这个行业自然是不会受到青睐。
关于为什么Java不适合游戏开发到此分享完毕,希望能帮助到您。