著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:巴多崽
链接:http://www.zhihu.com/question/29663744/answer/45154839
来源:知乎

javaEE 是 javaSE 上的一个官方扩展,用于“企业”程序开发(直译其实不是很贴切)。

所有的第三方扩展都是为了简化原生的操作。

你先设想这样的一个环节。

如果你要开发一个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吗?)的更多相关文章

  1. 【分享】Java后台开发精选知识图谱

    地址 引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习 ...

  2. Java后台开发精选知识图谱

    1.引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开始就对整个学习路线有宏观.简洁的认识,确定大的学习方 ...

  3. 携程Java后台开发三面面经

    前言 携程是我面试的第一个互联网公司,投递的岗位是后台开发实习生,总共面了三面,止步于人才库.中间兜兜转转,复杂的心理活动,不足与外人道也.唯有面试的技术部分与大家共享. 宣讲会完了之后有个手写代码的 ...

  4. 自学 Java开发(Java后台开发|Java后端开发)的书籍推荐

    java编程思想java并发编程实战深入理解java虚拟机函数式编程思维tcp/ip详解鸟哥的linux私房菜spring mvc +mybatis开发从入门到精通spring技术内幕elastics ...

  5. 简单介绍几种Java后台开发常用框架组合

    01 前言 Java框架一直以来都是面试必备的知识点,而掌握Java框架,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能对当前正在开发中的系统有整体的认知,从而更好的熟悉和学习技术,这篇 ...

  6. java 后台开发关键词解释

    bean类:是一些实体类,包括viewbean,databean等等.action类:可作为接收显示层的数据,连接显示层和业务逻辑实现层的控制层.model类:MVC中model层就是到层.在java ...

  7. 百度基础架构组-实习生面试(2016.08 java后台开发)

    一.项目 1.Spring MVC与Struts2的区别: 2.MVC三层是如何工作的?比如:要访问一个Url?a=xx&b=xx,怎么找到相应的资源,怎么运算,怎么返回等? 3.数据库myb ...

  8. 加入到java后台开发

    下载java环境安装包 http://www.oracle.com/technetwork/java/javase/overview/index.html 下载eclipse j2ee版本 http: ...

  9. Java后台开发必备软件(windows环境下)

    一.必备软件 1.Jdk,推荐下载最新版2.Ide,推荐 IntelliJ IDEA3.服务器,如 tomcat / jetty4.数据库终端界面,推荐 Navicat Premium(自行破解),5 ...

随机推荐

  1. Java并发包中CopyOnWrite容器相关类简介

    简介: 本文是主要介绍,并发容器CopyOnWriteArrayList和CopyOnWriteArraySet(不含重复元素的并发容器)的基本原理和使用示例. 欢迎探讨,如有错误敬请指正 如需转载, ...

  2. jq 动态添加.active 实现导航效果

    代码思路: 页面4: 页面5: 代码思路: 通过jq获取你打开页面的链接  window.location.pathname: 在HTML中给自己的li加入一个ID id的命名与网址链接中的href相 ...

  3. 转每天一个linux命令(14):head 命令

    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾. 1.命令格式: hea ...

  4. python+selenium自动化软件测试(第12章):Python读写XML文档

    XML 即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进 行定义的源语言.xml 有如下特征: 首先,它是有标签对组成:<aa></aa> ...

  5. hdu4746 Mophues

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4746 题意:给出n, m, p,求有多少对a, b满足gcd(a, b)的素因子个数<=p,(其 ...

  6. C语言:min和max头文件

    转自:http://www.cppblog.com/jince/archive/2010/09/14/126600.html min和max头文件 虽然说求最大值最小值函数在哪个头文件下并不是非常重要 ...

  7. .NET 自定义Json序列化时间格式

    .NET 自定义Json序列化时间格式 Intro 和 JAVA 项目组对接,他们的接口返回的数据是一个json字符串,里面的时间有的是Unix时间戳,有的是string类型,有的还是空,默认序列化规 ...

  8. HTTPS 证书配置

    HTTPS 证书配置 现在阿里云和腾讯云都支持申请 HTTPS 证书,这里不再提,有需要的可自行google解决方案. 本文主要介绍的是通过 letsencrypt 申请免费的HTTPS证书,并将其配 ...

  9. (转载)理解Java中的引用传递和值传递

      关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题,有论坛说Java中只有值传递,也有些地方说引用传递和值传递都存在,比较容易让人迷惑.关于值传递和引用传递其实需要分情况看待,今天 ...

  10. Bootstrap-table事件使用

    HTML <div class="alert alert-danger" id="eventInfo"></div> <table ...