style="text-indent:2em;">大家好,感谢邀请,今天来为大家分享一下为什么Java不适合游戏开发的问题,以及和java 类 不建议使用的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
本文目录
目前Java后端有哪些不是很有必要去学的
作为一名IT行业的从业者,同时也出版过Java编程书籍,我来回答一下这个问题。
首先,目前Java是后端开发比较常见的解决方案之一,凭借稳定的性能表现以及较强的功能扩展性,目前大型互联网平台往往更愿意采用Java开发方案。
Java经过多年的发展逐渐形成了一个庞大的语言生态,在Web开发、Android开发、大数据开发等领域均有广泛的应用,但是随着Java的不断发展,一些技术也逐渐淡出了开发人员的视野,其中以下几个技术方案的应用领域正逐渐萎缩:
第一:EJB技术。EJB(企业级JavaBean)技术是当年Java针对于企业级开发推出的一系列技术标准,其中重点有三个,分别是SessionBean(会话Bean)、EntityBean(实体Bean)和MD-Bean(消息驱动Bean)。随着以Spring技术为代表的轻量级开发逐渐普及,EJB逐渐失去了大量的市场份额。
第二:Struts框架。Struts框架是基于MVC结构搭建的,在Web开发的初期,Struts框架得到了广泛的应用。Struts框架把开发人员从构建MVC结构繁杂的工作中逐渐释放了出来,可以更加专注于业务逻辑的实现,控制端(ActionServlet)可以通过配置来完成,这在一定程度上提升了开发人员的效率。但是由于Struts本身对于性能并没有提升,所以在SpringMVC推出之后,Struts逐渐失去了大量的用户。另外,Struts自身也曾经发生过比较严重的安全问题,这对Struts也造成了一定的影响。
第三:JDBC技术。对于早期的Java开发人员来说,JDBC是必须掌握的后端开发技术,JDBC是Java完成数据库操作的基础性API。随着Hibernate的应用,开发人员即使不了解JDBC的细节也能够完成数据库操作,目前随着资源接口化趋势越发明显,Hibernate也渐渐退出了开发人员的视野。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!
你觉得java过时了吗
听说程序员工资很高,想学Java,只是现在学Java和做Java开发的人太多了,学了还好找工作吗?而且还有很多的新技术在不断地涌现出来,很多人也开始去学习和研究一些新技术,就感觉Java过时了。
目前Java工程师的就业岗位一般分为技术岗和管理岗,技术岗如:软件工程师、Javaweb、架构师、后端开发、系统分析等;管理岗如:产品研发经理、技术经理、项目经理等。而Java工程师既可以入职到广告、游戏、电商等互联网类企业,也可从事企业应用类工作。
Java因其应用领域广泛,对人才需求旺盛,就业前景也是一片光明。就目前而言,说Java过时还为时尚早,学习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处于运行效率和开发效率中间的语言,在游戏这个行业自然是不会受到青睐。
Java开发如果不让使用spring框架,会有多大影响
这个想法不错!如果没有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:
OK,关于为什么Java不适合游戏开发和java 类 不建议使用的内容到此结束了,希望对大家有所帮助。