JavaWeb轻量级解决方案
一、为什么要轻量级:
1、互联网向传统企业系统侵入,越来越多的项目开发中,短平快的需求提高到了一个新的高度
2、终端的多样化,企业应用对各终端的需求越来越强烈,Java在异构平台中的角色定位越来越倾向于提供数据服务
二、传统的技术栈:
在很长一段事件内,JavaWeb开发是一个侧重包揽前后端的技术栈,Jsp侵入前端(当然也有各种各样的模版技术),http请求到后台系统,在后台系统的开发中,出现了各种流派,有讲究模式的,有遵循标准的,有模仿其他技术平台的,从EJB到Struts+Spring+Hibernate到SpringMVC+Spring+Mybatis,从硬编码到配置文件再到注解等等一系列、五花八门的技术。
再回顾这些技术的时候,突然发现,Java已经不再适合这个互联网时代的开发节奏,我们总是纠结于解耦和分层,却没法解决开发效率的低下,不论项目大小,都要进行所谓的领域模型分析,你得先建DB层,再建Service层,然后控制层,更不用说webservice时代,那令人发指的facade封装。等我们把这一系列的事情搞定后,某些技术平台的系统恐怕已经开始上线测试了。
怎么解决这些业务简单清晰,开发要求短平快,并且适应各类终端的项目呢,java还适不适合进行快速开发?
三、只做最简单的事——快速开发的技术栈:
java当然可以进行快速的开发,但是,它只应该做它最擅长的事!
什么是它最擅长的事?就是无敌的服务端。java平台扩展性以及无数的技术方案都为它成为最适合的服务端提供了条件。这里的服务端,是指面像各类终端的服务,而不是javaweb开发中通常意义上的后端程序。
首先,我们要放弃控制层在服务端的地位,这个概念实在是不应该出现在服务端中,恰恰是这个概念,导致无数的java开发人员留守在ssh的大本营中无法自拔。
其次服务端必须要提供标准数据的接口,在以往的开发中,一提到服务接口就会想到webservice、rpc这些,而这些东西简直就是反人类啊。这几年开始拨乱反正,大力提倡webapi,使用json进行数据标准化,这个对不同技术平台的开发人员都是非常友好的。
对于控制层,前端的angularjs是一个优美的解决方案,完美的解决了控制层的抽出(当然node也能做,但需要根据具体系统规模进行权衡),这样对于服务端系统来说,只需要提供json标准数据的处理接口就可以满足web端的需求,view数据的处理和跳转理所当然的交给了web端处理,在这种结构中,一定要把服务端看成是一个标准的服务提供者。而web端,就是一个客户端,类似手机的app、pc的本地应用。这样的开发,舒服而且适应性强。所以,javaweb开发人员,如果可以明确自己应该做和不应该做的事,在这场互联网化的企业应用转型中,还是能够快速适应变化的。
剥离了控制层后,服务端就可以为所欲为了。你要快那么我们有SpringMVC+Mybatis或者Jfinal(这个大爱啊),你要小我们有SpringBoot,你要集成我们有各种MQ,不爽了就Servlet直接上,配上工具类一样跑的飞飞的。对于中小型应用更推荐使用angularjs+jfinal的开发方式,并且可以使用record方式,真的就够了——过度的模型依赖不如直接依赖数据库。
四、反思:
其实,java的开发只要我们能够放弃不擅长的位置,用小而美的服务替代庞大的设计,这种系统结构一定可以适应新的开发模式,与系统中各类技术平台和睦相处,因为js、css、c#、php、objc它们都很重要,你只要为它们提供某种阶段的业务服务而已,不用把自己搞的太累。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。