一、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、准备版本软件
|
1
2
|
[root@logicserver tomcat]# ls
apache-tomcat-
8.0
.
29
jdk-8u66-linux-x64.gz
|
2、解压
|
1
|
[root@logicserver tomcat]# tar jdk-8u66-linux-x64.gz
|
|
1
|
[root@logicserver tomcat]# tar apache-tomcat-
8.0
.
29
.tar.gz
|
3、指定软链接到/usr/local下
|
1
|
[root@logicserver tomcat]# ln -s /root/tomcat/apache-tomcat-
8.0
.
29
/usr/local/tomcat
|
|
1
|
[root@logicserver tomcat]# ln -s /root/tomcat/jdk1.
8
.0_66 /usr/local/jdk
|
4、配置java环境
|
1
2
3
4
5
6
7
8
|
[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
|
|
1
|
[root@logicserver tomcat]# source /etc/profile.d/jdk.sh
|
查看是否成功
|
1
2
3
4
|
[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启动脚本
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[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
|
1
2
3
4
5
6
7
|
[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.
|
|
1
2
3
4
|
[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、开启测试
