设为首页 收藏本站
查看: 487|回复: 0

[经验分享] 初识TomCat之1——Java体系理解

[复制链接]

尚未签到

发表于 2018-12-2 06:23:02 | 显示全部楼层 |阅读模式
  一、前言
TomCat作为一款由Java语言所开发的Web Container,在很多应用场景中经常遇到,其特点也符合Java语言“一次编译到处使用”的优势,在介绍TomCat之前,首先需要对Java的技术体系有一定的了解。
二、Java介绍
Java与Python、PHP、C#等一样属应用级开发语言,不同于C等系统及开发语言,应用级开发语言在同一平台下所写的代码在其他平台上无法运行,这在早期让许多应用程序不得不针对每一种平台单独做一次开发。在计算机领域,出现任何两层之间无法衔接时都会引入中间层来解决此问题,Java也不例外,它在系统和应用之间又添加了一个中间层来解决该问题,中间层负责与不同的底层系统打交道,对外输出为统一的Java类库(也成为Java API,形式为XXX.class),主机只要安装了该中间层后就可以运行所有Java语言所开发的应用程序。
三、JRE、JVM与JDK
通过前文得知,中间层实际上是为Java语言所开发的程序提供了一个可以让其运行的环境,该环境通常被称为JRE(Java Run Environment),其核心是由一个Java虚拟机JVM(Java Virtual Machine)组成,JVM提供了Java程序运行时所需要的类文件,但仅有JVM并不一定能够能执行Java程序,这需要从Java程序的运行过程说起,Java程序的运行步骤为:
1.将使用Java语言开发的代码(通常Java代码被打包在.jar目录下)通过编译后生成程序的类文件
2.位于JVM中的类加载器(calss loader)将编译好的类文件和调用的类文件(类似于C语言,Java语言也有很多公共类文件)完成加载后交由执行引擎执行
http://i2.运维网.com/images/blog/201801/16/392d1e23badd3c4c15a9a2a9b39168be.png
3.执行引擎的作用是将Java程序转换为本地库调用,从而实现Java程序在本地的运行
http://i2.运维网.com/images/blog/201801/16/4614fa0174a0e2114adc6d1b3f001b86.png
而仅拥有JVM不一定能执行Java程序是因为Java程序在执行过程中有时需要调用其他的库,所以说JVM是JRE的一个子集,而JDK是在JRE的基础上多了开发工具,即JRE是JDK的一个子集
http://i2.运维网.com/images/blog/201801/16/860483f92877b8d1d302bd7552c1c3ee.png
四、Java的分类及CGI规范
Java本身又分为三个流派:J2SE(Java 2 Standard Edition)、J2EE(Java 2 Enterprise Edition)、J2ME(Java 2 Mobile Edition),除了J2ME鲜有人用之外,J2SE和J2EE已应用于广大生产环境。
随着动态内容的兴起,CGI规范应用到了几乎所有的Web场景,CGI是Web服务器运行时外部程序的规范,按照CGI编写的程序可以扩展服务器的功能,CGI程序还能与浏览器进行交互。
早期客户端在发起Java动态内容请求时,服务器端会将Java applet小程序作为一个单独文件与网页一起发给客户端,Java applet通常在客户端本地运行后将最终结果呈现给用户,此时称为客户端动态。该技术的优点是降低了服务器的负载,缺点是如果返回的是恶意程序,客户端面临很大的风险。
正是因为客户端动态存在着诸多隐患,取而代之的是服务器端动态,此时客户端发起Java动态内容请求,服务器接收到请求后交由服务器端Java Servlet程序运行,Java Servlet再将运行后的结果返回给服务器端最后呈现给用户,这样就避免了客户端动态的情况。
不同于php可以直接嵌入html文档,Servlet的结果最初只能以硬编码的方式格式化为html文档,这要求开发者需要同时掌握Java和html语言,所以为了降低开发者难度,通过JSP程序将运行后的结果格式化成html文档格式,从而降低了开发者的门槛。Servlet在处理完之后先交由JSP程序格式化成html后再交由服务器反馈给用户。
五、J2SE与J2EE的区分
从功能上大体可以这么认为:J2SE仅实现了JDK的功能,他为Java应用程序提供了一个容器。而在此之上拥有JSP、Servlet、EJB、JMS、JavaMail等功能的J2EE提供了一个Web容器,从而可以接收来自客户端的CGI或是http请求。
Sun在被Oracle收购前将JDK开源,但相关的JSP、Servlet等组件并没有开源,很多商业或社区组织由此提供了众多的Web容器技术,如:websphere,weblogic,tomcat。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-642090-1-1.html 上篇帖子: ServerEndpoint tomcat8和spring4环境中无法注入bean的问题 下篇帖子: 在CentOS下安装Tomcat8
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表