一、杂项

二、安装


一、杂项(做的一些小记录)

1、安装之前先来了解一下相关的。

java只是一个总称,它包含四部分:

java程序设计语言

java class 文件格式规范

java API(库)

java vm(JVM)也就是java虚拟机。


这里只有java程序设计语言是由SUN公司开发出来的, 而API就不止了,不同的公司都有自己所编写的API, JVM也是一样。后面因为各个公司API不兼容,所以就有了java class 文件格式规范。

总体来说java所有的东西就是这几部分,后面所做的分类主要的不同就是API库的多少还有一些额外的工具的不同。


如这两类: JDK和JRE.

JRE (Java Running Environment ) java运行时环境。
          由JVM(Hotspot) + Java SE API组成.

JDK(Java Development Kit)  Java开发工具
        JRE+工具及工具API。 如 编译工具

JRE是从JDK精简出来的,只用于java运行环境,不能编译java代码。


JDK从JDK5.0以后改名并且分为J2SE,J2EE,J2ME。 说是改名不如说JDK是J2*E的组成部分,J2*E是一些组合的名称。跟JDK一样也是包含一些东西,只不过东西更多了,也包含JDK。


后来J2*E又改名了,变成了下面这些:

Java SE:  Standard Edition(以前被称为J2SE)

        支持面向桌面级的应用,提供了完整的Java核心API。 完整包含JDK。

Jave EE: Enterprise Edition(以前被称为J2EE)
        支持使用多层架构的企业应用(如EJB, CRM等), 包含了Java SE,
        并额外提供了大量的企业级类库。如:Servlet, jasper。


Jave ME: Micro Edition(以前被称为J2ME)

        精简版的SE。


它们只是一种规范。用来描述不同的功能。 而实现方式不同的公司有不同的软件。

如上面的API还有JVM还有一些工具(如编译器)。


实现方式如:open社区的openjdk,Oracle的JDK。 openjdk因为有一部分商业代码,所以不是完全开源的,Oracle的不开源,但是可以免费使用。

如Oracle的:下面8版本,第60次修正。

http://www.oracle.com/technetwork/java/javase/downloads/index.html

tomcat相关和安装_java程序

tomcat相关和安装_tomcat_02

这个是java的核心,tomcat要用到。



上面这些有点乱,总的来说我们要用到的就是JDK的实现。我这里就先下载Oracle的了,而且版本也随便下载了。生产环境要注意版本和tomcat的版本。可以找一下哪些版本比较稳定。


java代码编译以后还可以跨平台就是因为JVM,因为它里面的环境是不会变的,再加上用java语言编写的库。运行环境就完全的独立于硬件平台了。当然也可以不在JVM中运行,不过在这里就不相关了。


java代码在编译之前是.java文件。编译完以后被称为byte code 字节码,是.class的文件。可以在它的JVM中运行。

a.java,b.java  --> java编译器(javac) --> a.class,b.class


运行时的环境:

a.class, b.class  --> JVM <-- Object.class, String.class

编译完成以后的class文件和库class文件一起由JVM执行。


JVM包含两部分:

java class loader (java类加载器): JVM执行时会调用类加载器去分析所执行的代码所要用到的class文件(API),并到指定位置去加载。这里的API就是java API,是用java代码写的,所以编译完成以后就是.class文件。通常一些class库文件会打包成jar格式存放。

java执行引擎:由类加载器加载完成以后就由java执行引擎开始执行。


上面的java类加载器加载程序所需要的API的过程,在tomcat中称为部署。


2、tomcat的作用。

最早的时候,动态网页方面,Java程序是直接与html网页一起传到客户端,并且还有一个叫做applet的小程序来做为网页插件来执行这段java程序。 这就是在客户端执行然后形成的动态网页。

因为是在客户端执行程序,对于客户端来说不够安全。

所以后来就出现在CGI(通用网关接口)是CGI程序与web服务器之间通信的标准。实现了程序在服务器端执行并通过CGI协议把结果送给web服务器,web服务器再直接响应Html代码给客户端。


很显然java这种在客户端执行的方式成过去式了。JDK就可以在服务器上编译并执行java程序,需要的只是一个可以与web服务通信的工具,跟CGI差不多。

所以就又出来了一个servlet的程序,也可以说是一个库。是web服务与JDK之间的桥梁。

servlet 是JDK用来与前端web通信的类库。 这时前端传来的还只能是java程序。
        开发网页需要整个写出java的程序才行。
        servlet收到程序以后就给后端的JDK来编译执行。结果就是一个网页。
        再由servlet传给前端的web服务器。

类似于这个样子的:画是这样画的,不过要知道所有java程序都是由javac编译,在jvm中运行的。

tomcat相关和安装_java程序_03

这个时候的在服务器上的网页文件整个都是由Java代码所写成。在JDK执行以后才是html的代码格式,然后由web服务发给客户端。但是这种是很麻烦的,因为Java程序需要要懂html才能把结果做成html。

而java程序偏偏还只是html代码中的一小部分。

而只有servlet + JDK 的这种结构就叫做 servlet container(servlet 容器)


也就是因为上面的因为一小点java代码就要把整个html都写成java代码的这种不便利性。所以在Servlet的前面又加一个java库程序,用来只取出html代码中的java代码,然后交给Servlet。

tomcat相关和安装_java程序_04


jasper是servlet的前边的类库。
    将遵循jsp类规范的 html中的<%  ....  %> 中的程序转换为java代码。并交给servlet。
    这样功能就分开了, Java程序员专门写java程序而不用再管html之类的事了。
    而html程序也不用再关心java的问题了。

而上面的这种由jasper+ servlet + JDK的这种就叫做  web container(web容器)


此外上面这两种结构中还有java编写的web服务。这就构成了一个整体的动态网页服务器。

tomcat相关和安装_tomcat_05

到这里才是一个完整的java动态网态服务器。所有程序都是在JVM环境中运行。

而上面除了JDK以外的其它部分的实现有很多软件。其中Tomcat就是其中之一。

还有一些实现方式还包括邮箱或是其它的一些企业的类库和工具。

而Tomcat只是专门用于web的。





Sun公司创建的第一个Servlet容器,叫做Java Web Server。于此同时ASF创建了JServ项目,一个能够与apache整合起来的servlet容器。1999年,Sun把JWS捐给了ASF,于是两个项目合二为一,即今天Tomcat的前身。 后面到tomcat 4.0,其中有个项目代码名称叫做catalina。所以在tomcat4.0升级到今天的版本中有很多代码部分都叫做catalina。


二、安装

所用工具:

JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html

tomcat:http://tomcat.apache.org/index.html

[root@nfs tomcat]# ls
apache-tomcat-7.0.64.tar.gz  jdk-8u60-linux-x64.rpm

最好先看看jdk所生成文件的路径,不然再找不着老。

[root@nfs tomcat]# rpm -qlp jdk-8u60-linux-x64.rpm

安装

[root@nfs tomcat]# rpm -ivh jdk-8u60-linux-x64.rpm 
Preparing...                ########################################### [100%]
   1:jdk1.8.0_60            ########################################### [100%]
Unpacking JAR files...
    tools.jar...
    plugin.jar...
    javaws.jar...
    deploy.jar...
    rt.jar...
    jsse.jar...
    charsets.jar...
    localedata.jar...
    jfxrt.jar...

一般来说要在系统环境变中指下一个JAVA_HOME的变量,用来变示安装目录。一些java程序可能要用到。不过我们这里主要是用tomcat,一会儿在tomcat的启动脚本中指定也可以。还有PATH变量之类的如果要用到java里的工具也可以设置一下。如:jps命令来查看是否启动了java程序。

[root@nfs bin]# vim /etc/profile.d/tomcat.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH


安装tomcat:

[root@nfs tomcat]# tar -xf apache-tomcat-7.0.64.tar.gz  -C /usr/local/
[root@nfs tomcat]# cd /usr/local/
[root@nfs local]# ln -s apache-tomcat-7.0.64 tomcat
[root@nfs local]# ls
apache-tomcat-7.0.64  bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat

安装完了。看一下安装目录:

[root@nfs tomcat]# ls
bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

bin目录:

[root@nfs tomcat]# ls bin
bootstrap.jar  catalina-tasks.xml            configtest.bat  digest.bat        setclasspath.sh  startup.bat      tomcat-native.tar.gz  version.bat
catalina.bat   commons-daemon.jar            configtest.sh   digest.sh         shutdown.bat     startup.sh       tool-wrapper.bat      version.sh
catalina.sh    commons-daemon-native.tar.gz  daemon.sh       setclasspath.bat  shutdown.sh      tomcat-juli.jar  tool-wrapper.sh

这里有在windows下的bat批处理文件,还有java类库文件,用来提高tomcat启动和jsp页面第一次响应速度,还有linux脚本文件,脚本文件有多个,不过都是由catalina.sh来调用的。所以只关心catalina.sh就行了。


conf目录配置文件。lib目录类库文件  logs日志   temp编译过程中的临时文件放在这个目录,webapps目录是默认的网页的主目录,work所编译的代码的结果,也就是class文件放在这里。


catalina.sh来负责启动关闭之类的操作。

[root@nfs bin]# ./catalina.sh version
Using CATALINA_BASE:   /usr/local/tomcat    
Using CATALINA_HOME:   /usr/local/tomcat    #默认的tomcat的路径,我们正好就安装在这里
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr                #默认的JRE的目录,找不到则找JAVA_HOME变量
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
#类库的路径,用来查找库文件的目录。
Server version: Apache Tomcat/7.0.64
Server built:   Aug 19 2015 17:18:06 UTC
Server number:  7.0.64.0
OS Name:        Linux
OS Version:     2.6.32-431.el6.x86_64
Architecture:   amd64
JVM Version:    1.8.0_60-b27
JVM Vendor:     Oracle Corporation       #自动找到Oracle的JVM了


看样子自动识别java目录了。不过为了保险最好还是指定一下JAVA_HOME变量。

[root@nfs bin]# ./catalina.sh --help   #查看脚本参数

启动看看:

[root@nfs bin]# ./catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@nfs bin]# ss -tnlp
State      Recv-Q Send-Q                                           Local Address:Port                                             Peer Address:Port 
LISTEN     0      100                                                         :::8080                                                       :::*      users:(("java",2244,46))

因为都是在JVM虚拟机中执行的程序,所以显示的程序名称都是java。

现在就可以看看效果了。 如我这里打开 http://192.168.1.10:8080

tomcat相关和安装_tomcat_06


TOMcat出来了,也就安装完了。 下面写个服务脚本就可以了。如:

#!/bin/bash
#
#chkconfig: 2345 90 10
export JAVA_HOME=/usr/java/latest
export CATALINA_HOME=/usr/local/tomcat

case $1 in
        start)
                $CATALINA_HOME/bin/catalina.sh start;;
        stop)
                $CATALINA_HOME/bin/catalina.sh stop;;
        restart)
                $CATALINA_HOME/bin/catalina.sh stop
                sleep 2
                $CATALINA_HOME/bin/catalina.sh start;;
        *)
                $CATALINA_HOME/bin/catalina.sh $*;;

esac

就先这样吧,配置就下次再写吧,大星期天的出去吹吹风去。


今天边看笔记边胡思乱想的写了这些,都有点晕乎了。各位大哥如果看到哪有毛病,请帮忙指出啊。谢谢了。

tomcat相关和安装_tomcat_07