37897797d5cc921a17c333c57bc0f947
010 | 快速入门 Java 后端开发的正确姿势

前面三篇文章我们已经聊完了如何快速入门 Android、iOS、Web 前端开发,本篇轮到最后一个端——Java 后端了。Java 后端有着非常庞大的生态圈,也涉及到很多复杂的问题,如分布式事务、分布式查询、微服务、高并发、容灾、容器化等等,涉及到的技术栈和框架就更多了。不过,我们目前只是为了快速入门,我们只会学习最必要的那些知识,能支撑到我们进行实际项目的开发即可。那么,我们需要学习的核心知识主要包括 JavaServletJDBCMySQLRedisSpringMyBatis 等。Java 基础部分在聊入门 Android开发时已经讲过,这里就不重复讲了。

开发工具

先聊下 Java 后端的开发工具吧,我推荐使用 IntelliJ IDEA,这是被公认为最好用的 Java 开发工具,熟悉 Android Studio 的 Android 开发人员对它应该不陌生,其强大的功能和特性可以说是完虐 EclipseMyEclipse,尤其我最喜欢它的智能代码提示功能。IDEA 用熟了之后绝对大大提升开发效率,目前我们公司开发人员也是全面转向 IDEA 了。这里我向大家推荐一套很详细的中文专题教程,该教程在 github 上是开源的,也经常更新,以下是地址:

如果英文比较好,建议还是直接阅读官方的帮助文档:

Servlet

Servlet 是 Java Web 的底层技术,虽然现在因为有 Spring 框架,我们已经不需要直接编写 Servlet 了,但作为底层技术,我们还是要了解其原理,这样我们才能更好地理解在其之上的 Spring 框架等。

Servlet 其实就是 Server Applet —— 服务器小程序,即运行在服务器上的一个小程序,也是一个基于 Java 技术的 Web 组件。编写一个 Servlet,实际上也是按照 Servlet 规范编写一个 Java 类。只是这个 Java 类是不能独立运行的,它并没有 main 函数,它必须被部署到 Servlet 容器中,由容器来实例化和调用 Servlet 的方法。Servlet 容器也称为 Web 容器,目前主要就是 TomcatJetty,两者各有优劣,Jetty 更满足公有云的分布式环境的需求,而 Tomcat 更符合企业级环境。我们大部分时候还是处于开发企业级应用阶段,因此,还是优先选择 Tomcat。

目前 Servlet 规范已经演进到 4.0 版本,相比之前的版本,主要是新增了对 HTTP/2 的支持。另外,3.0 版本相比之前的 2.5 版本,最重要的则是新增了对 WebSocket 的支持,3.0 版本之前的 Servlet 只支持 HTTP 请求。那么,对于目前的 Servlet 来说,需要学习哪些知识点呢?这次,我先把核心的知识点罗列出来,后面再来推荐一些相关的学习资源。

  • 环境配置:包括开发环境部署环境,要熟悉这两种环境的搭建,开发环境主要就是 JDK 和 IDEA 的安装配置,部署环境则是 Web 容器 Tomcat 的安装配置。另外,Java Web 普遍使用 Maven 作为构建工具,所以也要了解下 Maven 的用法。虽然 Gradle 比 Maven 更先进,但在 Java 后端大部分项目目前依然还在使用 Maven。
  • 生命周期:要了解 Servlet 的生命周期,并了解 Servlet 容器对 Servlet 实例是如何管理的。
  • API:Servlet 的常用 API 要熟悉,主要包括 Servlet 接口、ServletConfig、ServletContext、RequestDispatcher、ServletRequest、ServletResponse、HttpServlet、HttpServletRequest、HttpServletResponse,尤其是最后两个类 HttpServletRequestHttpServletResponse 必须要非常熟悉,这是在实际开发中会频繁使用到的。
  • 过滤器:Servlet 过滤器可以拦截请求和响应,并进行一些处理。主要用于对用户请求进行鉴权、做日志记录、对数据进行过滤或替换、对数据进行解码或解密等等,多个过滤器可以组成一条过滤器链。
  • 监听器:Servlet 监听器主要用来监听 ServletContext、HttpSession、ServletRequest 对象的生命周期事件,以及这些对象的属性改变事件。
  • WebSocket:需要注意的是,网上有些继承 WebSocketServlet 的实现方式已经是 Deprecated(过期)的,根据 Oracle 发布的 Java 的 WebSocket 的 JSR356规范所展示的实现方式有两种,一种是使用 @ServerEndpoint 注解,另一种是继承 javax.websocket.Endpoint 类,推荐使用注解。关于 WebSocket 的开发入门可以看这篇文章:java WebSocket开发入门WebSocket

关于对 HTTP/2 的支持,目前还没大范围使用,相关资料也是非常少,可以以后再了解。

接着,再来推荐一些学习资源。首推 Head First 的一本书《Head First Servlets & JSP》,还是保持一贯通俗易懂的作风,非常适合入门。不过,其中,第 7/8/9 三章关于 JSP 的内容可以略过,毕竟 JSP 早已经过时不用了。第 14 章讲模式部分则非常值得看,应该说是每个人都必看,当你理解了里面所讲的内容后,才有可能设计出一个更好的系统。

另外,我的 Servlet 入门书籍《Servlet/JSP深入详解——基于Tomcat的Web开发》也是本不错的入门书,只是太老旧已经停印了,所以在亚马逊、京东、当当等都买不到了,要看只能到网上找电子版了。比较新的一本书叫《Servlet、JSP和Spring MVC学习指南》,2016年底出版,不过我没看过,不知道怎么样。

菜鸟有一套简明教程,其实也是翻译自国外的一套英文教程,也可以简单看看,有个基本认识。以下是地址:

视频资源方面,我找到一份 Servlet 3.0 特性专题视频,也分享给大家:

JDBC

JDBC = Java DataBase Connectivity(Java 数据库连接),是一套访问数据库的标准 Java API。通过调用这套 API,就可以连接到数据库,可以执行 SQL 语句,对数据库里的数据进行处理。不过,JDBC API 只是一套规范接口,真正与数据库进行连接的则是 JDBC 驱动程序,不同的数据库采用不同的 JDBC 驱动程序。

和 Servlet 一样,因为有更方便的框架,我们也不直接使用 JDBC 的 API 进行数据库编程了。不过,HibernateMyBatis 框架的底层还是 JDBC,因此,我们还是要了解 JDBC 的基本原理,才能更快地上手 MyBatis 等框架。好在这部分的内容很少,所以我们只需要投入很少时间就可以掌握了。也找了一份在线的 JDBC 教程分享给大家,以下是地址:

JDBC 的核心接口和类就只有几个:DriverDriverManagerConnectionStatementResultSetSQLException。要了解这几个接口和类的用法,以及了解使用 JDBC 的流程,简单来说就是五个步骤:

  1. 注册 JDBC 驱动程序;
  2. 建立与数据库的连接;
  3. 执行 SQL 语句;
  4. 获取结果数据;
  5. 清理资源。

另外,也要了解下对事务的处理,包括事务的提交和回滚。以及了解如果对 SQL 进行批量处理。所有这些内容在上面的 JDBC 教程中都有讲述,我就不展开说了。另外,我在上面介绍的《Servlet/JSP深入详解——基于Tomcat的Web开发》一书中也有一个章节专门讲了 JDBC,也可以看一看。

数据库

我们知道,数据库分为关系型数据库非关系型数据库两大类。关系型数据库主要就是 MySQLOracleDB2PostgreSQL 等,标准数据查询语言 SQL 就是一种基于关系型数据库的语言。非关系型数据库也称 NoSQL(Not only SQL),主要包括 RedisMongoDBHBase 等。如今,很多项目都会使用一种以上的数据库,其中,Redis 可以说是必选的。另外,MySQL 作为最流行的关系型数据库,开源而且入门简单,因此我们就先熟悉这两个数据库。

先介绍下关系型数据库设计工具吧,非关系型数据库好像没什么专门的设计工具就不介绍了。首先,Windows 下无疑 PowerDesigner 是最强大也是最流行的,可惜的是它并没有推出 Mac 版本。Mac 下我推荐使用 Navicat,既是好用的关系数据库客户端,也是不错的数据库建模工具,建模完成后可以导出为一个 SQL 文件,很方便。

top Created with Sketch.