首先,我们来看几个概念:
1.什么是jvm
我们从操作系统的层面来理解,jvm其实就是操作系统中的一个进程。既然是一个进程,那么我们很容易的可以通过任务管理器来查看。假设此时我们启动myeclipse(myeclipse其实就是用java语言编写的一个软件,他的运行必然会启动一个jvm,我们可以把myeclipse理解成我们自己写的一个简单的java版的helloworld程序)。
2.什么是tomcat
tomcat其实是一个用java语言开发的免费开源的web服务器(因为是java语言开发,这就是为什么使用tomcat前要配置好jdk,因为jdk里面有jvm,而运行java应用需要jvm)。此时再次查看任务管理器会发现多了一个javaw.exe
看了两者之间的概念之后,相信我们都清楚了两者之间的关系。
现在还有一个问题:
同一个tomcat下的java ee项目使用的是不是同一个jvm?答案是是的。(使用的都是启动tomcat的jvm)这个可以通过启动不同的web应用来自己判断。
如果运行的是普通的java se程序,使用的是不是同一个jvm呢?答案是否。这个可以自己运行程序判断。(可以写一个很简单的while死循环,便于查看)。
最终总结出四点结论:
1、JVM就一个,就相当于你的电脑安装XP系统一样可以运行word,offfice等一些办公软件。让tomcat跑起来,就得有jdk,而jdk自带了JVM,安装完了jdk,把安装jkd的bin目录告诉tomca,就可以了。
2、有的web服务器不必安装jdk,因为自带了,如weblogic。
3、tomcat web容器,主要和有jsp和servlet有关, 没有tomcat, 通过一定技术是可以运行jsp和serlet,所以说JVM跑着tomcat,而没有JVM tomcat就废物了。
4、tomcat只是一个web容器,启动的时候,默认是不会去编译java及jsp code的,除非在你web工程的web.xml里配置了一些listener,然后在这些listner里,自己定义了一些关于jsp编译的操作。