一、Tomcat
动态站点:
运行程序
服务端:
客户端:
一次编译,到处运行
java技术的组成部分:
java程序设计语言
java class文件格式
java API
java vm
java的编译时环境:
源代码:.java
a.java, b.java, c.java --> Java编译器(javac) --> a.class, b.class, c.class
java的运行时环境:
a.class, b.class, c.class --> JVM <-- Object.class, String.class, ...
java VM的组成部分:
java class loader(Java类加载器)
java执行引擎
java语言的特性:
面向过程:
以指令为核心
面向对象:以数据为核心
JVM的实现方式:
1、一次性解释器,解释字节码并执行;
2、及时编译器(just-in-time complier)
依赖于更多内存缓存解释后的结果
3、自适应编译器
缓存20%左右代码,提高80%左右的速度
JDK=Java+API+JVM,用于实现java程序开发的最小环境,
JRE=JVM+java SE API:
二、Java体系结构包括四个独立但相关的技术:
Java程序设计语言
Java class文件格式
Java API
Java VM
用Java语言编译源代码,把它编译成Java Class文件,然后在Java VM中运行class文件;当编写程序时,通过调用类(Java API)中的方法来访问系统资源,而当程序运行时,它通过调用class文件中实现了Java API的方法也满足程序的Java API调用。Java VM和Java API一起组成了一个“平台”,所有Java程序都在其上编译和运行,因此,它们有时也被称作Java运行时环境。
Java VM的主要任务是装载class文件并且执行其中的字节码。Java VM包含一个类装载器(class loader),它可以从程序和API装载class文件;而Java API的类只在程序执行中需要时才会被装载。
Java字节码由执行引擎来执行。而不同的Java VM中,其执行引擎的实现可能各不相同。最简单的执行引擎不是一次性解释字节码,而另一种称为“即时编译器(just-in-time compiler)”的执行引擎执行速度更快,但要消耗更多的内存资源。即时编译模式下,第一次被执行的字节码会被编译成本地机器代码并缓存下来以实现“复用”。第三种执行引擎是所谓的自适应优化器,此种方法中,虚拟机始的时候解释字节码,介是会监视运行中程序的活动,并且记录下使用最频繁的代码。程序运行时,虚拟机只把那些活动最频繁的代码编译成本地代码,而不频繁的代码则仍然保留为字节码由虚拟机解释执行。自适应优化器可以使得Java VM在80%-90%的时间里执行被优化过的本地代码,而只需要编译10%-20%对性能有影响的代码。最后一种虚拟机由硬件芯片构成,它用本地方法执行Java字节码,其执行引擎内嵌于芯片中。
三、安装主步聚
1、准备版本软件
[root@logicserver tomcat]# ls apache-tomcat-8.0.29 jdk-8u66-linux-x64.gz
2、解压
[root@logicserver tomcat]# tar jdk-8u66-linux-x64.gz
[root@logicserver tomcat]# tar apache-tomcat-8.0.29.tar.gz
3、指定软链接到/usr/local下
[root@logicserver tomcat]# ln -s /root/tomcat/apache-tomcat-8.0.29 /usr/local/tomcat
[root@logicserver tomcat]# ln -s /root/tomcat/jdk1.8.0_66 /usr/local/jdk
4、配置java环境
[root@logicserver tomcat]# vim /etc/profile.d/jdk.sh #jdk8 settings JAVA_HOME=/usr/local/jdk JRE_HOME=$JAVA_HOME/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME JRE_HOME PATH CLASSPATH
[root@logicserver tomcat]# source /etc/profile.d/jdk.sh
查看是否成功
[root@logicserver tomcat]# java -version java version "1.8.0_66" Java(TM) SE Runtime Environment (build 1.8.0_66-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
5、配置tomcat的startup启动脚本
[root@logicserver bin]# vim /etc/init.d/tomcat JAVA_HOME=/usr/java/jdk CATALINA_HOME=/usr/local/tomcat export JAVA_HOME CATALINA_HOME case $1 in start) exec $CATALINA_HOME/bin/catalina.sh start;; stop) exec $CATALINA_HOME/bin/catalina.sh stop;; restart) $CATALINA_HOME/bin/catalina.sh stop sleep 2 exec $CATALINA_HOME/bin/catalina.sh start ;; configtest) exec $CATALINA_HOME/bin/catalina.sh configtest ;; *) # echo "Usage:`basename $0` {start|stop|restart}" # exit 1 exec $CATALINA_HOME/bin/catalina.sh * ;; esac
启动tomcat
[root@logicserver bin]# /etc/init.d/tomcat start Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/jdk/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started.
[root@logicserver bin]# netstat -tlnp | grep java tcp 0 0 :::8080 :::* LISTEN 4464/java tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 4464/java tcp 0 0 :::8009 :::* LISTEN 4464/java
6、开启测试