手把手带你写一个 MiniTomcat
郭屹
前 Sun Microsystems Java 研发工程师
1792 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 22 讲
开篇词 (1讲)
手把手带你写一个 MiniTomcat
15
15
1.0x
00:00/00:00
登录|注册

01|持久的传奇:Tomcat的发展历程与框架演进

你好,我是郭屹,从今天开始我们来学习手写 MiniTomcat。
作为使用 Java 语言进行 Web 程序开发的人来说,对 Tomcat 想必是不陌生的。Tomcat 是一款轻量级的 Java 应用服务器,最早是 Sun 公司在 1998 年开发的。当时开发 Tomcat 的目标是成为 Sun 公司的 Java Servlet 和 JSP 规范的参考实现。
如今 Tomcat 是业务开发首选的开源 Web 应用服务器,在 Spring MVC 项目中会把它作为程序的启动容器,甚至在 Spring Boot 框架中直接将 Tomcat 内置为 Web 应用的启动容器,不再需要程序开发者自行配置,进一步简化了开发门槛。可以说,虽然 Tomcat 不是 Web 服务器的唯一选择,但也和 Spring 一样,成为了 Java 开发领域事实上的标准。二十五年以来长盛不衰,在日新月异的 IT 领域,可谓是持久的传奇。

版本变化

跟任何一个成功的产品一样,Tomcat 也不是一诞生就是现在这个样子的,它也是经历了逐渐完善和强大的发展历程。
图片源自网络
Tomcat 的发明人是 James Duncan Davidson。他在 1997 年加入 Sun 公司,然后开始动手写 Tomcat,这是 Sun 对外提供的一个 Servlet 容器的参考实现,后来大名鼎鼎的 Spring 发明人 Rod Johnson 也是 Servlet 专家组成员。1998 年对外公开的时候标记为 2.0 版本,到了 1999 年,Sun 公司就把它捐赠给了 Apache 基金会。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Tomcat作为一款轻量级的Java应用服务器,在业务开发中扮演着重要角色。文章从Tomcat的发展历程、程序内部结构、程序结构的演化等方面进行了详细介绍。Tomcat经历了多个版本的演化,从最初的简单Socket Server设计到引入NIO技术,不断优化性能和扩展功能。文章还介绍了Tomcat的程序内部结构,包括Server、Service、Connector、Container等组件,以及Tomcat的请求处理流程。此外,文章还探讨了Tomcat的生命周期管理和NIO技术的引入对Tomcat性能提升的影响。总的来说,Tomcat经历了多次演化,不断优化和扩展,成为了Java开发领域事实上的标准,具有持久的传奇。文章内容丰富,对Tomcat的发展历程和技术特点进行了深入解析,对读者了解Tomcat的发展历程和技术特点具有重要参考价值。 Tomcat获得了持久的成功,对业界影响深远。这里的关键就在于创始者James Duncan Davidson,他立意高远,眼界宏大,终成数十年以来的“名门正派”。同时,我们也看到了,顶级程序员也不是神仙,并不能一次性构建好一个Server,也需要不断尝试,不断接受真实世界的反馈并调整设计方案,NIO实现中的Acceptor和Poller池最终被废弃就是明证。文章内容丰富,对Tomcat的发展历程和技术特点进行了深入解析,对读者了解Tomcat的发展历程和技术特点具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一个 MiniTomcat》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • peter
    请教老师几个问题: Q1:Tomcat为什么还支持JSP? 第01课中提到了Tomcat的发展历史,每个版本都支持JSP,包括最新的版本10。但JSP基本已经被废弃,没有人用JSP了。为什么还要支持JSP? Q2:Tomcat中Engine只有一个实例吗? Q3:一个context对应一个web应用,context下面有多个servlet。那么,context下面的servlet数量是怎么决定的? Q4:端口和service对应吗?即一个端口对应一个service? Q5:NIO实现中,为什么抛弃多个Acceptor和Poller的方案而采用单例的方案?

    作者回复: Peter,高兴再见到你。你的问题涵盖了全课程,后面学了都有讲到。这里我只试着回答第一个问题,JSP确实基本被废弃了,最近些年,用单页面应用实现前后端分离。但是Tomcat服务器主要为了兼容历史,还是保留了对JSP的支持,次要的原因,JSP不能一概抛弃,任何一门技术都有适用范围,对于简单的小应用,JSP是很适合的。

    2023-12-13归属地:北京
    2
    3
  • Geek_50a5cc
    根据8.0的Server.xml 来看和老师讲解 的,基本上就是分为 Server,Service,Connector,Egine,Host,(Listener,Realm,Value一些小组件),Context,Servlet(Wrapper);

    作者回复: 赞

    2023-12-14归属地:北京
    1
  • HH🐷🐠
    🌝🌝看了本文更加期待老师的第五和第六部分, 不知道老师是否有计划,那部分也是重头戏。

    作者回复: 在准备,已经给几个研究生试讲过了,还没整理。之后再商量公开。

    2023-12-14归属地:广东
    2
    1
  • Martito
    Container: 用于管理 Servlet 和 JSP 的生命周期。 Engine: Engine 是最高级别的容器,代表整个 Tomcat 服务器。一个 Tomcat 实例可以包含多个 Engine,每个 Engine 通常对应一个虚拟主机host。 Host: Host 定义了一个虚拟主机,可以包含多个 Context。 Context: Context 表示一个 Web 应用程序,每个 Context 定义了特定 Web 应用的配置信息。 Servlet:处理业务逻辑和数据存储的组件,通过 HttpServletRequest 和 HttpServletResponse 与客户端进行交互。

    编辑回复: 赞!重要的地方记下来

    2023-12-13归属地:山东
    1
  • 飞翔
    老师 希望把手写系列延续出去 之后还会手写什么中间件嘛

    作者回复: 你的建议呢?

    2023-12-28归属地:美国
    3
  • 张翀
    请问本系列课程会讲解Tomcat的nio实现和Apr等实现吗

    作者回复: 不会详细讲,后面会简单探讨一下。这一部分应单独成书。

    2023-12-15归属地:四川
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部