著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:巴多崽
链接: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. pandas数据分析(数据结构)

    本文主要从以下两个方向对pandas的数据结构进行展开,分别为Series和DataFrame(对应的分别是系列与numpy中的一维数组和二维数组) 1.首先从Series讲起,主要介绍Series的 ...

  2. Django编写RESTful API(六):ViewSets和Routers

    欢迎访问我的个人网站:www.comingnext.cn 前言 在本系列的文章中,我在第一篇和第二篇文章中写的编写Django视图时,使用的都是基于函数的方法,并且每个视图函数之前都会加一个djang ...

  3. Linux常用命令简单总结

    Liunx常用命令 1. 文件及目录管理 1.1. ls:显示目录 参数及说明 空:补显示隐含文件 -a:显示所有文件 -l:显示详细列表 1.2. chgrp:设置文件组(root权限) 用法示例 ...

  4. python之VSCode安装

    [之前发布到本人的51cto博客,现转过来] 1.安装python3.5(3.6版本亲测无法实现命令补全功能) 2.安装VSCode(我的版本:VSCode-win32-1.7.2) 3.安装Pyth ...

  5. 优先队列的二叉堆Java实现

    package practice; import edu.princeton.cs.algs4.StdRandom; public class TestMain { public static voi ...

  6. Express异步进化史

    1.导言 在 Javascript 的世界里,异步(由于JavaScript的单线程运行,所以JavaScript中的异步是可以阻塞的)无处不在. Express 是 node 环境中非常流行的Web ...

  7. keepalive集群工作原理及应用

    author:JevonWei 版权声明:原创作品 集群工作原理 一.集群基础 1.系统的扩展方式 scale up向上扩展:提高单台服务器的性能 scale out向外扩展:多台服务器联合起来满足同 ...

  8. Log4j配置详解及不同的包(package)下的日志写入到不同的日志文件下

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt262 以下都是log4j.properties要写入的内容: 一:参数介绍: ...

  9. iOS蓝牙交互(4.0)

    前期准备工作:查看coreBlueTooth框架,查看一些蓝牙名词:Central(中心设备).Peripheral(外围设备).advertisementData(广播数据).-RSSI: 信号强弱 ...

  10. 从web图片裁剪出发:了解H5中的canvas

    本篇内容不针对canvas文档对每个api进行逐个的详解! 本篇内容不针对canvas文档对每个api进行逐个的详解! 本篇内容不针对canvas文档对每个api进行逐个的详解! 重说三,好了,现在进 ...