转自知乎(JAVA后台开发可以纯粹用JAVA SE吗?)
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:巴多崽
链接:http://www.zhihu.com/question/29663744/answer/45154839
来源:知乎
所有的第三方扩展都是为了简化原生的操作。
你先设想这样的一个环节。
如果你要开发一个web项目,但是完全用javaSE。
1.你要自己写一个网络通信库,和netty类似,用来将Socket封装起来。简化其中的操作。
2.你要根据HTTP协议写协议的encode 和 decode,这里是最复杂的。因为你要根据HTTP协议的不同状况进入不同的流程,最重要的你还需要根据HTTP header中的内容,区分出各种各样的情况,比如cookie的设置和判断等。
3.等你完整地实现了一个http协议的server之后,你进入了 resquest 和response 的 content内容的处理,request中不仅有参数,有的时候还是文件的二进制流。其中最重要的是response的content的内容构造,为了拥有动态的内容,你还要根据用户(cookie)的上下文状态,返回合适的结果。
现在我们还没有涉及到EJB,JDBC,JSP 之类的东西。
然后你发现,上面的 1 2 就是一个简单的tomcat的HTTP server部分,3 其实就是servlet做的事情。
这个时候你就明白了,javaEE的 web部分其实就是一个规范,用来对“java进行web开发”进行一个规范化和约束,使得整个生态都围绕着某一个规范进行。这样的好处就是,你在开发一个 java web应用的时候,你是不需要去考虑你的web是跑在 tomcat 或者 Jboss 上的。
SSH的诞生,其实就是对 servlet的简陋的不满,以及 java EE中 EJB的不满而诞生的。
其中的struts or spring MVC ,是对请求路径,数据解析等操作提供了更高层次的抽象,我相信每一个在web.xml中配置上百个路径映射的人都深恶痛绝。
第二个 S ,早先 Spring 的提出就是为了解决 java项目中各种对象之间的依赖和解耦所提出的方案。目前的Spring 已经自成一体了,已经成为了另一种事实上的标准。
第三个 H,hibernate (其实大家用mybatis比较多),是为了简化 java与 关系性数据库交互而诞生的。如果你用过原生的JDBC 操作数据库,特别是存在上百个sql的时候,想跳楼的想法会时不时冒出来。毕竟数据库中存储的数据和 java 能操作的对象是两码事,为了在其中进行转换,无数先辈折戟沉沙,比如 enum 在数据库中的存储。
总结部分:
java SE,是整个体系的基石。往后的其他东西都是为了解决某一个特定问题而衍生开发出来的第三方组件。其最主要的目的是为了简化开发过程,减少人为因素导致整个项目的不可控。
转自知乎(JAVA后台开发可以纯粹用JAVA SE吗?)的更多相关文章
- 【分享】Java后台开发精选知识图谱
地址 引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习 ...
- Java后台开发精选知识图谱
1.引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习方 ...
- 携程Java后台开发三面面经
前言 携程是我面试的第一个互联网公司,投递的岗位是后台开发实习生,总共面了三面,止步于人才库.中间兜兜转转,复杂的心理活动,不足与外人道也.唯有面试的技术部分与大家共享. 宣讲会完了之后有个手写代码的 ...
- 自学 Java开发(Java后台开发|Java后端开发)的书籍推荐
java编程思想java并发编程实战深入理解java虚拟机函数式编程思维tcp/ip详解鸟哥的linux私房菜spring mvc +mybatis开发从入门到精通spring技术内幕elastics ...
- 简单介绍几种Java后台开发常用框架组合
01 前言 Java框架一直以来都是面试必备的知识点,而掌握Java框架,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能对当前正在开发中的系统有整体的认知,从而更好的熟悉和学习技术,这篇 ...
- java 后台开发关键词解释
bean类:是一些实体类,包括viewbean,databean等等.action类:可作为接收显示层的数据,连接显示层和业务逻辑实现层的控制层.model类:MVC中model层就是到层.在java ...
- 百度基础架构组-实习生面试(2016.08 java后台开发)
一.项目 1.Spring MVC与Struts2的区别: 2.MVC三层是如何工作的?比如:要访问一个Url?a=xx&b=xx,怎么找到相应的资源,怎么运算,怎么返回等? 3.数据库myb ...
- 加入到java后台开发
下载java环境安装包 http://www.oracle.com/technetwork/java/javase/overview/index.html 下载eclipse j2ee版本 http: ...
- Java后台开发必备软件(windows环境下)
一.必备软件 1.Jdk,推荐下载最新版2.Ide,推荐 IntelliJ IDEA3.服务器,如 tomcat / jetty4.数据库终端界面,推荐 Navicat Premium(自行破解),5 ...
随机推荐
- Pyinstaller(python打包为exe文件)
需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用, ...
- Partition函数
快排中核心的方法应该算是Partition函数了,它的作用就是将整个数组分成小于基准值的左边,和大于基准值的右边. 普通的Partition函数是这样的: public static int part ...
- LNMP1.4环境中安装fileinfo插件
安装前: 安装前建议先执行 /usr/local/php/bin/php -m (此命令显示目前已经安装好的PHP模块)看一下,要安装的模块是否已安装. 然后下载当前PHP版本的源码并解压. 安装: ...
- mock server 前后端分离小结(转)
1.前台开发受限于后台开发的速度 2.后台提供给前台的接口缺字段,时常需要联调 基于Mock Server开发的好处: 对于前端来讲,可以独立于后端进行开发. 对于后端来讲,根据前端定义的接口进行开发 ...
- [转]linux中颜色的含义
绿色文件---------- 可执行文件,可执行的程序 红色文件-----------压缩文件或者包文件 蓝色文件----------目录 www.2cto.com 白色文件-------- ...
- Maven生成可以直接运行的jar包的多种方式
Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...
- Vue双向数据绑定原理解析
基本原理 Vue.采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter和getter,数据变动时发布消息给订阅者,触发相应函数的回调 ...
- SSL证书:Web加密使互联网更安全
在网络安全的圈子里,我们都会隔三差五的听到某某公司遭受恶意软件攻击.或大量的隐私信息被泄露等等事件,此类安全事件往往都有影响范围广.涉及用户众多等特点.不免让人质疑联网的世界越来越危险.然而,在安全专 ...
- new和newInstance区别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp55 在初始化一个类,生成一个实例的时候:newInstance() ...
- java基础学习——集合
-------|List: 有存储顺序, 可重复-----------|ArrayList: 数组实现, 查找快, 增删慢,由于是数组实现, 在增和删的时候会牵扯到数组增容, 以及拷贝元素. 所以慢. ...