框架与类库
框架和类库是很容易混淆的概念。
不管哪个编程语言,入门是总是从程序入口/main函数开始讲起,开发者介入应用程序的开始到结束。
现实项目中,程序中很大一部分逻辑是通用的。于是有一部分开发者专注于这部分通用逻辑的开发,隐藏程序开始和结束时的种种繁琐的配置和处理过程,再分发给其他开发者使用。这就是框架,它是一个黑箱,能让开发者专注于业务逻辑本身,而不是周边的、后勤的事务。
比如Java里的Spring,MapReduce, JavaFx等,它们不但提供了一系列等装好的类库,更重要的是为开发者隐藏了种种配置细节。直观上简单来看,框架下的编程不再要求开发者从main开始书写代码。
类库也是一种黑箱,封装了一系列逻辑等待开发者去调用。但类库是被动的,不会改变原生的开发方式,而框架是主动的,在很大程度上需要依赖于IDE的支持,开发方式也与原生从头开始写代码有很大不同。
没框架:
- 你写main()
- 你自己划分代码的行为并调用需要的代码
有框架:
- 框架提供main()
- 框架划分代码的行为
- 你按照上面的划分,向框架提供些controller/callback/handler来填充这些具体行为
- 框架负责在适当时候调用你的代码
Java EE 框架
从入门到放弃,今天我终于明白什么是javaEE - 知乎 (zhihu.com)
Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名为 Jakarta EE(这个名称应该还没有得到群众认可)。是 Sun 公司为企业级应用推出的标准平台,用来开发B/S架构软件。Java EE 可以说是一个框架,也可以说是一种规范。
JavaEE 是 Java 应用最广泛的部分。 JavaEE 是在 JavaSE 的基础上构建的,是对 JavaSE 的扩展,增加了一些更加便捷的应用框架。
除了 EE 和 SE,还有为移动端而生的 JavaME,但目前应用不算广泛。三者的关系可以用下图概括:
Java EE 主要框架
JavaEE 号称有十三种核心技术。它们分别是:JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JTS、JTA、JavaMail和JAF。
简单介绍下需要重点关注的技术。
1、JDBC
Java 数据库连接,(Java Database Connectivity,JDBC)是 Java 语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
2、JNDI
Java 命名和目录接口(Java Naming and Directory Interface,JNDI),是 Java 的一个目录服务应用程序界面(API),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。
3、EJB
企业级 JavaBean(Enterprise JavaBean, EJB)是一个用来构筑企业级应用的服务器端可被管理组件。不过这个东西在 Spring 问世后基本凉凉了,知道是什么就行。
4、Servlet
Servlet(Server Applet),是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。
狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。
5、JSP
JSP(全称JavaServer Pages)是由 Sun 公司主导创建的一种动态网页技术标准。JSP 部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成 HTML、XML 或其他格式文档的 Web 网页,然后返回给请求者。
框架组合
JavaEE 拥有广泛市场的原因之一就是可以使用多种框架来使开发变得简单。对于框架的选择多种多样,目前比较常见的框架组合有 SSH和SSM。在后面的章节中会作详细介绍。另外Spring本身也提供了多种层次的框架供选择,可以到Spring官网了解详情。
SSH
Structs + Spring + Hibernate
SSM
Spring +SpringMVC + MyBatis
JavaEE 学习路径
一般来讲,初学者应该遵循以下路径
Servlet → JSP → Spring → 组合框架
Servlet 和 JSP 在日后的开发中虽然很少直接应用,但却是各种框架的基础,应该放在开始去了解。这两部分也并不难,相信经过了 JavaSE 的洗礼,只需要进行短期的学习,知道它们都是什么,就可以投入实践中了。
推荐一个学习 Java 的良心网站,里面有 Java 全栈知识,在每个阶段都设置了练习内容,谁用谁知道。