著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:巴多崽
链接: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. 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

    [渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...

  2. [Caffe]使用经验积累

    Caffe使用经验积累 本贴记录Caffe编译好了,使用过程的常用命令与常见错误解决方式.如果对编译过程还存在问题,请参考史上最全的caffe安装过程配置Caffe环境. 1 使用方法 训练网络 xx ...

  3. 为测试赋能,腾讯WeTest探索手游AI自动化测试之路

    作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处.  WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...

  4. svn status详解

    svn 是在提交前查看本地文本和版本库里面的文件的区别.返回值有许多种具体含义如下: [url=]  L    abc.c               # svn已经在.svn目录锁定了abc.c M ...

  5. ASP.NET Core的身份认证框架IdentityServer4(8)- 使用密码认证方式控制API访问

    前言 本文及IdentityServer这个系列使用的都是基于.net core 2.0的.上一篇博文在API项目中我使用了icrosoft.AspNetCore.Authentication.Jwt ...

  6. [转]RMI方式Ehcache集群的源码分析

    RMI方式Ehcache集群的源码分析   Ehcache不仅支持基本的内存缓存,还支持多种方式将本地内存中的缓存同步到其他使用Ehcache的服务器中,形成集群.如下图所示:   Ehcache支持 ...

  7. Java基础学习 —— 线程

    线程: 多线程的好处:解决了在一个进程中同时执行多个任务代码的问题. 自定义线程的创建方式: 1.自定一个类继承thread类,重写thread的run方法 吧自定义线程的任务代码写在run方法内,创 ...

  8. Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    上一篇给大家介绍了Maven的概念和仓库的一些信息,接下来给大家分享一下使用命令和MyEclipse创建Maven项目 一.使用命令管理Maven项目 1.1.创建Maven java项目 1)创建一 ...

  9. Bash 脚本进阶,经典用法及其案例

    前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神.虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加 ...

  10. Linaro系统获取root权限方法

    在Zedboard上根据教程安装Linaro Ubuntu后出现一只无法获取Root权限,导致无法挂载U盘等问题. 具体体现在sudo -s命令之后,出现如sudo:must be setuid ro ...