java服务器开发是做什么?和web端的区别是什么?

java服务器开发是做什么?和web端的区别是什么?,第1张

web开发,是开发服务端的,开发好的web程序,打包成war,然后放到web容器中运行,而web容器,是部署在服务器中的。

web的客户端就是浏览器,教你设计页面,学CSS/HTML之类的。

标准的web服务器只具有与客户端浏览器通讯的功能,不能处理业务逻辑请求。

需要编写程序来复制处理客户端的请求。通过组件来处理客户端的请求,这个组件就是实现特定规范的可以单独部署的软件模块。组件必须通过容器来实现。容器是实现特定规范的程序,负责组件的运行环境和管理组件的生命周期。tomcat,weblogic都提供了容器。

web端可以理解为tomcat,并且tomcat中运行着你编写的程序,这个程序称为web应用。

java服务器开发就是通过java语言来编写程序,组合成web应用,将来部署到tomcat中,

编写的这些程序就是组件,用来处理客户端请求的。为了高效还会使用一些框架和技术来配合java程序,比如SpringMVC,struts2,Servlet。

我们都知道,java编程无论是在软件开发或者是说其他编程方面,使用范围都是非常广泛的,所以,今天java课程就一起来了解一下,java编程开发语言与其他编程语言的区别和优势都有哪些。

现代JavaWeb开发

因为JavaWeb服务器与Web一样老,因此在JavaWeb上长期存在的成功传统和实践很快就要扔掉,现在可能是一个好的时候来解释这一系列中“现代”意思。

在本文中,我说“现代”的意思,就是“与现代主流软件开发趋势一致”。这些趋势并不是完全任意的堆砌,他们一个一个契合在一起。出现于这个期间大量小型快速发展的创业公司更偏爱精益开发方法。这些都要求一个更好使用,更少安装、部署和配置,集开发和运维于一体的工具。广受欢迎的云计算通过资源管理,也就虚拟化(无论是工具上还是在系统级)鼓励这些方法。系统级部署和资源分配也支持异构架构的发展。所谓异构架构就是指寻找适合的工具(也有可能是不同的工具)做合适的事。

传统的JavaWeb服务器,也就是典型的应用服务器,都有一个特别的特性:支持在一个JVM上运行多个应用。这个应用服务器提供能分开应用的运行时环境,而且升级,安装和启动都是独立的。一个应用可能运行在一个配置好的,已经运行的环境中,这种方法很多时候都工作良好,你也有理由继续使用这种方案,但是这种方案,离“现化”太远了。在不同的应用中分配不同的资源这件事是并不简单,而且在一定程度上跟现在使用hypervisor和os容器来运行应用的方案是矛盾的。因为现在针对hypervisor和os容器设计的工具和技术在多应用服务器上效率并不高,即使这些多应用服务器只是用来运行一个应用,而且这些多应用服务器的运维也不“现代”:安装配置web或者app服务器是不可缺少的,部署应用需要很多步,每一步可能都很麻烦。

现代的方法,就是在其它语言和运行平台使用的方法--单应用服务器。单应用服务器中,web容器是嵌入到应用中(而不是把应用部署到web容嚣中)。这样做就可以简单的部署,管理,配置和在系统级进行资源的分配。这就是为什么,一但现代的方法被引入Java中,传统的应用服务器(我的意思是任何打算运行多个应用的servlet或者全功能的J2e服务器)就死了。

在这里,我们调研的工具和技术并非覆盖全部的的领域。特别是在web和web相关的领域中,开发,工具,库和框架激增。这种增长部分原因是,不像嵌入式开发和大型机开发,web开发在初创公司和开发爱好者中广受欢迎。这类人是新技术的早期采纳者和体验者,有时也会为了探索技术的边界,或者学习,还有自我证明发明一种新的择术。这样的结果就是数以百计的库被发明出来,全都为了解决同样的目标,只是使用的方法略有不同。这种事情发生在Java的世界里,也发生在其他的语言生态中。

同时,我们不会讨论那种有巨大的MVC结构,模板系统或者设计来就是在服务器端渲染html的“全功能”的web框架。有很多理由不这么做,一个就是,我从来没有使用过那种框架,所以我不会评论他们的适用性或“现化化”,二,这个主题就非常复杂,需要更多的讨论,而在别的地方已经有了(这里,这里),三,web开发正在朝客户端渲染和SPA方向发展(如angular),本质上正在朝着以前c/s的架构发展,数据和命令都通过http对服务器进行交互。这种转变没太完全,特别的,它依靠手机浏览器的js效率的提升,但是可以肯定的讲,我们将会看到越来越少HTML在服务器端生成。因此,我们会只讨论http“数据”服务的库和框架。

http服务和JAX-RS与Dropwizard

Java与其他语言不同的一点是JCP(JavaCommunityProcess)的工作,它的工作是标准化API(即使对于不属于语言规范或甚至标准运行时的库)也是如此,然后由各种商业或开源组织实现。这些JSR(JavaSpecificationRequests)是由专家组制作的,它能把一项技术从普遍变成成熟并成为标准。当JSR通过时,就会非常有用,因为几乎所有迎合相关领域的库都将实现这个标准API,这使得切换实现不那么痛苦。

对于服务器实现(代码中框架更为普遍)来说,标准对于客户端(每个调用或多或少都是独立的并且可以被替换)而言更重要。您可以使用三个不同的HTTP客户端和3个不同的JDBCAPI,但是您的服务器通常运行在单个框架中。出于这个原因,。单纯的API美学不应该倾向于支持非标准的API。

相比于客户端(每次请求或多或少比较独立和能被替代),标准化对服务器应用更重要(因为框架代码无处不在)。你可以使用三个不同的http客户端和三个不同的JDDCapi在同一个方法中,但是你的服务器通常运行在一个框架中。出于这个原因,你应该更喜欢标准服务器API而不是非标准服务器API,除非非标准服务器API为你的应用提供了一些非常重要的优势,或者更适合您的特定用例。单纯的API美学不应该倾向于支持非标准的API。

相对来说 Java EE 服务器的功能更加强大。

JSP 服务器有 Tomcat 、Bejy Tiger 、Geronimo 、 Jetty 、Jonas 、Jrun 、Orion 、Resin。

Java EE 服务器有TongWeb 、BES Application Server 、 Apusic Application Server 、 IBM Websphere 、Sun Application Server 、Oracle 的 Oracle9i/AS 、Sun Java System Application Server 、Bea Weblogic 、JBoss、开源GlassFish。

Java的用途在以下几方面:

1桌面GUI应用程序: Java通过抽象窗口工具包,Swing和JavaFX等多种方式提供GUI开发。虽然AWT包含许多预先构建的组件,如菜单,按钮,列表以及众多第三方组件,但Swing还提供某些高级组件,如树,表格,滚动窗格,选项卡式面板和列表。JavaFX是一组图形和媒体包,提供了Swing互操作性,3D图形功能和自包含的部署模型,可以快速编写Java小应用程序和应用程序的脚本。

2移动应用程序: Java Platform,Micro Edition是一个跨平台框架,用于构建可在所有Java支持的设备上运行的应用程序。此外,最受欢迎的移动操作系统之一的Android应用程序通常使用Android软件开发工具包或其他环境在Java中编写脚本。

3嵌入式系统: 从微型芯片到专用计算机的嵌入式系统是执行专门任务的大型机电系统的组件。诸如SIM卡,蓝光光盘播放器,公用事业仪表和电视机等多种设备都使用嵌入式Java技术。据甲骨文公司称,100%的蓝光光盘播放器和125亿台电视设备都采用Java技术。

4 Web应用程序: Java通过Servlets,Struts或JSP提供对Web应用程序的支持。编程语言提供的简单编程和更高的安全性使得大量政府应用程序可用于基于Java的健康,社会安全,教育和保险。Java也可以使用Broadleaf等开源电子商务平台开发电子商务Web应用程序。

5 Web服务器和应用程序服务器: 今天的Java生态系统包含多个Java Web服务器和应用程序服务器。虽然Apache Tomcat,Simple,Jo !, Rimfaxe Web服务器和Project Jigsaw占据了Web服务器空间,但WebLogic,WebSphere和Jboss EAP在商业应用服务器领域占据重要地位。

6企业应用程序: Java企业版是一种流行的平台,为脚本和运行企业软件提供API和运行时环境。甲骨文宣称Java在97%的企业计算机上运行。Java中更高的性能保证和更快的计算能力导致像Murex这样的高频交易系统被编入脚本中。它也是各种银行应用程序的中枢,它们将Java从前端用户端运行到后端服务器端。

7科学应用: Java是许多软件开发人员用于编写涉及科学计算和数学运算的应用程序的选择。这些程序通常被认为是快速和安全的,具有更高的便携性和低维护性。像MATLAB这样的应用程序使用Java来交互用户界面和作为核心系统的一部分。

  各有各的用处:

  java可以在各种系统上运行,其实net也有这个潜力,只不过里面的一些和windows api相关的类就不能用了,网络方面的类应该是可以很好运行的。net有一套开发工具,可以提高开发速度。

  如果是比较大型的应用的话,还是java比较适合。不过java对服务器的要求一般比较高。net有一套MS自成体系的东西(windows + sql server + office + net +)他们之间没有兼容性问题。java的话老是会遇到些兼容问题。net依赖的windows价格还可以。linux是免费的,但是如果大型应用用IBM的话,简直是天价。 net比较新,借鉴了java,不能否认net是比java先进

  j2ee的优势:

  1j2ee应用程序服务器一般集成了很多组件程序:

  web server, jms, app server ejb component 封装得比net组件要多些,它可以进行事务处理,persistence等功能。

  2net组件没法完成事务处理功能,要进行事务处理,必须用COM+的transaction processing function net中没有异步消息功能(ie jms function),在COM+中可以用消息队列来完成这样的功能。net对数据库的处理功能,adonet是面向无连接的应用,但事务处理等功能需要自己编写程序或用在数据库中处理。net web server, net framework等各server不是集成在一起,多少有些不方便。 以上是认为net相对来说比较不方便的地方。 net的优势

  1net的元数据功能强大。

  2部署非常方便。

  3side by side execution,解决了版本问题,允许多版本共存,resolved dll hell

  4 This is a remarkable one, code behind technology

  5 Also a remarkable one, easier Web Service development and deployment

  6 back compatible,对以前产品的兼容,如果用java,以前用com+实现的东西就会变成一堆废品。

  7 vsa,方便开发script application可以开发一个应用程序象office一样有一个script editor这点很诱人。

  8 net speech technology,前景广阔,call center中大有前途,和Voice xml竞争产品,version10马上要release了。

  ms以前有Smart Card sdk11,但在net中好像还没有实现。而Java Card非常好用,j2me功能觉得还不够强大,同时net在这方面也还不是很强大。Net最大的优势是简单和window结合紧密 java的优势在于跨平台和大型企业应用。

  

最近刚跳槽,到新公司已经干了有两周时间了,这两周时间是过得比较充实的,因为这家新公司是个小公司,以前以单机开发为主,服务器方面我一个人,做两个游戏的服务器开发工作,当然,一个很简单,另一个就相对复杂点,简单的那个是个弱联网游戏,服务器只需要做好数据存档和登录支付验证就好了,而另一个,则是相对复杂的slg游戏,我感觉这是又一款cok,而公司目前并不打算再招服务器了,所以估计这个项目我会一个人干到明年吧,等第一款上线赚钱了,可能会再招服务器。老实说,面试的时候,我就觉得这份工作对我而言是一个挑战,而当我清楚的了解了公司状况之后,我依然决定接受这个挑战。

说说我之前的经历吧,大四的时候,学校安排来北京培训java(培训没什么丢脸的,出来找工作我也用的真学历真背景,不像某峰互联),之后我去了培训机构推荐的公司实习,那个时候,工资2k,然而工作也干得很开心,跟着前辈学到了不少东西,当时是做微信公众号开发的,我跟着前辈做微信后台开发,当时使用SpringMVC+MyBatis框架,刚接触的时候,我自己学了挺久才弄明白,后来弄明白之后想想,其实挺简单,对于逻辑开发的程序员来说,你只需要弄懂工作流程就好了,页面怎么跳转,跳转怎么传值,数据怎么处理,这些足够了,当然我是个不满足的人,我会去弄明白,为什么用这个框架、为什么不用别的、用这个有什么好处、如果让我自己来做这个后台、我会怎么搭建?带着这些问题,我会试着自己搭建一下后台框架(虽然前期大部分是复制粘贴)。除了框架部分,微信高级接口也是我研究的重点,我会去官方文档看看微信是怎么接入的,然后研究研究前辈的代码是怎么写的,所谓的干一行爱一行大概就是这样吧,当时我觉得,微信开发,是很有前途的,而我们公司用的框架,也是最先进的(后来看来,确实这个框架组合是当前最流行的框架,而当时,微信公众号也确实是当时互联网行业的一个风口,微信后来把h5带起来了,导致现在一个好的h5前端都是供不应求的,薪资很高)。

说了这么多,为什么后来又转行做游戏了呢?其实是这样的,当时在第一家公司,我的上级打算跳槽走了,带走整个下面的技术,而不带实习生,有那么一两个月,实习生就一直闲着没事做,对于我来说,这样过着就太无聊了,我喜欢挑战,于是我投简历,重新找了份实习工作,在一个游戏公司做java服务器开发,公司挺大的,几年前凭借一款slg页游称霸游戏行业(什么游戏我就不说了,说了就知道什么公司了),后来游戏行业往手游发展,这款slg也出了手游版,这一款游戏,几乎支撑了整个公司,再加上后来出的几款手游,公司发展挺好的,我所实习的部门做的是一款mmorpg手游,从实习做到了转正,做了近一年了,然而这款rpg手游的数据却不是太好,第一次封测次日留存23,第二次26(现在这家公司的游戏能达到80多次日留存),七日就更不用说了,而我也能感觉到,作为一款mmo游戏,玩家之间的交互实在太少,从头玩下来,我觉得这是一款单机,失去了mmo的本质,在项目组准备进行第三次封测的时候,我选择了离开,原因很多,不仅仅因为游戏数据不好,也有一些个人原因吧,不过说实话,是这家公司带我走进了游戏行业,我很感谢,我觉得游戏行业是一个非常有前景的行业,甚至比之前我认为最好的微信开发还要好,游戏行业非常暴利,在这家公司工作就能感受到,策划文档中,充满了挖坑预留的计费点,这一块可以正常玩儿,但你如果充钱,你就比别人牛逼。网络游戏,最重要的,就是控制好平民玩家跟普通玩家的占比以及游戏平衡(当意识到公司的游戏如此处心积虑想要坑钱的时候,我突然明白为什么公司的游戏大多被腾讯代理了,为什么腾讯控股,原来如此,没钱玩儿你,哈哈)。由此也可以看出,游戏的商业化,已经把游戏公司带入了一个固定的模式——无条件坑钱,我觉得已经失去了游戏的本质,我看过一本书,叫《游戏人生》(当时在cocos2014年开发者大会上买的。觉得挺值的),书已经送人了,但内容我看了一大半,从游戏的产生,到玩家的心理,到为什么需要游戏,这本书都诠释的热别好(我觉得游戏策划都应该看看这本书,做良心游戏,拒绝一味坑钱)。啊,突然发现这一段说的有点偏了,说到底,我也只是做游戏服务器开发的,我也改变不了游戏行业,我只要做好我做的。其实大的游戏公司,就应该走这种商业化路线,凭借几款长生命周期的游戏,支撑公司流水。

从转行做游戏之后,我倒是觉得,游戏开发比web开发有趣多了,当然技术上也比web难多了,之前发过一篇讨论,web开发何和游戏开发的区别,

,我把我的答案再粘贴一遍(实际上是别人要求我上他的号去回答的,于是我就自己回答了我自己的问题):

1从第三方支持来说,web后台有很多成熟的第三方框架,开发者不需要关心底层控制器跳转的实现,只需要一个或几个配置文件,就能完成核心控制器的部分,而开发者只需要关注web自身的业务逻辑,将逻辑与框架融合即可,使用框架一方面简化控制层代码,一方面很好的实现了业务逻辑的分层。而游戏后台开发中,因为各种游戏的需求差异性很大,从网络层,到业务逻辑层,各方面都必须根据自己游戏需求搭建适合自己的框架,因此很难有一些通用的东西能提炼出来一款成熟的框架,游戏后台开发基本上需要自己搭建适合自己的框架。

2从业务逻辑层面来说,web后台基本上逻辑都是大同小异的,或许这一套系统,稍微改改,另一套系统就能用,而游戏就不同了,每个游戏都有自己的特色,根据策划的不同需求而实现不同的逻辑,不过也会有一些通用的模块,但整体上差异性还是很大的。

3从数据持久化来说,web的数据基本上是很规整的,表与表之间关系很明确,并且以后也不会有太大的变化,而游戏中的数据多种多样,随着开服之后,数据的变化也是多种多样,甚至传统的关系型数据库根本无法满足游戏数据持久化的需求,游戏中有很多状态和数据是需要服务器来保存的,我个人认为,在游戏开发中,nosql比关系型数据库更实用。

4从通信层来说,web中的用户都是一个个独立的个体,而游戏中是多人在线的一个游戏世界,在这个游戏世界中,玩家与玩家之间需要进行交互,这就需要服务器实时的向所有在线玩家进行消息广播,这一点很损耗服务器性能的,在这方面,游戏后台要比web做更多的处理,游戏服务器是一个IO密集的服务器类型。

以上便是我当时的答案,或许我的见解尚浅,毕竟我做游戏不到一年,不过对于后台开发这块,我还是有一点话语权的,从实习游戏开发开始,我便经历了一个转换的过程,几乎又是一个从零开始的学习过程,从mina框架到protobuffer,这些东西,我相信web开发很少接触(mina作为网络通信框架,web中几乎只有http通信,protobuffer作为通信协议,web最多用json,其实二者形式上差别不大,但数据大小千差万别)。而游戏的逻辑,也是比web复杂得多,不得不说,web后台成熟的第三方框架是做的真的很好。

经历了上家公司的洗礼,我想我对游戏后台开发有了足够的了解,于是我找到了我现在这家公司,这家公司目前只有我一个服务器后台,做两款游戏,一款是塔防类,准备由单机改成弱联网,服务器存档,并做登录支付验证,另一款,是比较庞大的slg手游,是准备带领公司走上巅峰的项目,说一款slg带领一个公司走上巅峰一点儿不为过,我上家公司就是这样的,凭借一款《xxxx》(哈哈,名字不透露),走上人生巅峰。我之所以接受这份工作,是因为我接受挑战,从底层写起,从架构写起,这是作为一年工作经验的我想都不敢想的,不过这是一个挑战自我,证明自我的机会,我愿意接受这个挑战,人生总会有很多爬坑的时候,但爬过了坑,就真的是人生巅峰了。我接受这个工作的另一个原因,就是公司发展确实不错,以前做的单机,都是很火的(虽然我认为我自己一个人也能做,我也是学过cocos的),而现在公司也准确的把握了游戏行业的风口——slg,coc和cok的成功案例就能证明一切,mmorpg也不一定能做起来了,moba倒是有可能,但你要跟lol做不到80%的相似,我估计没人愿意在手机玩儿moba,slg或许是性价比最高的了。这么有挑战的工作,还要从架构写起,这样的挑战,我喜欢!

说说互联网业的书吧,我认为这个行业的书,分为两种,理论型的和技术型的,所谓理论型,就是长篇大论互联网发展,行业模式等,而技术型,就是类似技术的工具书,是从技能入手的书,这两种书,我家里都有,但我发现买了之后,我很少有时间看,下班没多少时间,北京上班,大多数时间都浪费在地铁上了,上班时间,看看理论型的吧,觉得_嗦,浪费时间(后来我发现,做这行,除了会技术,你还是需要去看看牛人眼中的互联网的,你需要透过前辈的眼光看世界,不要做IT民工,要做互联网从业者),看看技术型的吧,让别人看见了感觉你太low,所以我大多数时间还是能在网上down到pdf就在电脑看,down不到百度谷歌我要研究的技术,毕竟从事这行,还是用电脑学技术好点,主要是电脑看久了眼睛会疲惫,偶尔看看纸质的书也不错的。而以前面试的时候,面试官经常问,除了大学课本,你还看什么书啊?(如果是你们,恰巧又没看什么书,你们怎么说?),我一般会说,我会自学其他技术,如cocos2dx,然后买一些技术指南之类的书看。我觉得这已经算最大夸张化了,因为大学我真的很少看书,我记忆中就看过一本C++技术类的,一本C#的,一本Android,还有其他几本是什么都不大记得了,大学毕竟十几层的图书馆,除了英语四六级的时候进去复习,其他时间感觉都浪费了这十几层的图书馆。

说说成长过程中遇到的问题吧,如果遇到我解决不了的,以前是先自己百度谷歌,看看有没有办法解决,不行就问老大,而现在,先百度谷歌,看有没有办法解决,没办法在百度谷歌,实在不行还要看框架源码如何实现,上国外论坛看外国友人如何解决,问题总能解决的,总会有办法的。当我开始学习写架构的时候,我会开始关心游戏的网络层使用什么框架,mina还是netty,数据怎么存储mysql还是mongo,是否需要缓存redis存什么,memcached存什么,缓存什么数据,数据传输用什么协议,json还是protobuffer,怎么写效率高,最高支持多少并发等等,我想这些都是我现在需要考虑的问题,当然这些都需要根据游戏具体的需求来决定的,最终服务器能否高效稳定的运行,都是取决于我的架构是否高效稳定,所以这个过程我要不断学习,不断吸取别人的经验。刚到新公司的时候,我才体会到,自己写代码其实也是一种挑战,整个后端我自己一个人实现,代码是否规范,数据如何存储,都是我说了算,我想我的代码不仅要高效,还要让别人看得懂,后来的人能接着我的代码继续写下去。

最后说说Java的题外话,语言之争,从未停过,为什么有人拥护Java,有人拥护PHP,有人喜欢C#,有人喜欢C++,各个语言各有各的优势,业余时间,我也了解了不少其他语言,go,nodejs我都有了解,我觉得go的语言层面支持协程并发以及nodejs的异步,都是很适合游戏服务器的,我特别看好nodejs,异步io真的是对游戏服务器很好的特性,并且加入对原声js支持的mongo模块也是很方便的(上面我有说到,我相信nosql是很适合存储游戏数据的)。说到游戏行业,我认为h5游戏的发展也是越来越快了,上次白鹭的h5开发者生态大会我去了,白鹭的一整套工作流程,以及webvr,真的很令人兴奋(第一轮抽奖我还抽了一个暴风魔镜,哈哈!),另外,大会的模特挺漂亮,哈哈!2015年,互联网行业也略呈下降趋势了,不少创业公司面临倒闭,泡沫经济破灭,因为很多老板抓不住当前经济形势,以为不管是啥,有个app就是创业了,其实全然不知一款app后面有多少运营模式、盈利模式,就像一句讽刺的话,“我有个绝壁好的idea,可以颠覆bat,什么都不缺,就缺个程序员了,等等,千万别告诉马云!”,哈哈,听到这句话,当时我就笑了,估计好多倒闭的创业公司老板都这么想的吧,他们并不能抓住用户真正的需求,只有抓住用户真正的需求,才会抓住用户的心,真正活下来的,才是用户真正需要的,然而,相对来说,游戏行业更是复杂多变,或许今天玩家喜欢这种游戏,明天玩家就喜欢另一种游戏了,就像我们永远也想不到,flappybird、围住神经病猫这类的游戏竟然能活起来,愚公移山竟然也能让h5游戏变为付费的可能。就像一句话,“只要站在风口上,猪也能飞起来!”,只要抓住了玩家此时此刻真正想要的,产品就一定能做起来。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » java服务器开发是做什么?和web端的区别是什么?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情