一、杂项
二、安装
一、杂项(做的一些小记录)
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
这个是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中运行的。
这个时候的在服务器上的网页文件整个都是由Java代码所写成。在JDK执行以后才是html的代码格式,然后由web服务发给客户端。但是这种是很麻烦的,因为Java程序需要要懂html才能把结果做成html。
而java程序偏偏还只是html代码中的一小部分。
而只有servlet + JDK 的这种结构就叫做 servlet container(servlet 容器)
也就是因为上面的因为一小点java代码就要把整个html都写成java代码的这种不便利性。所以在Servlet的前面又加一个java库程序,用来只取出html代码中的java代码,然后交给Servlet。
jasper是servlet的前边的类库。
将遵循jsp类规范的 html中的<% .... %> 中的程序转换为java代码。并交给servlet。
这样功能就分开了, Java程序员专门写java程序而不用再管html之类的事了。
而html程序也不用再关心java的问题了。
而上面的这种由jasper+ servlet + JDK的这种就叫做 web container(web容器)
此外上面这两种结构中还有java编写的web服务。这就构成了一个整体的动态网页服务器。
到这里才是一个完整的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出来了,也就安装完了。 下面写个服务脚本就可以了。如:
#!/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
就先这样吧,配置就下次再写吧,大星期天的出去吹吹风去。
今天边看笔记边胡思乱想的写了这些,都有点晕乎了。各位大哥如果看到哪有毛病,请帮忙指出啊。谢谢了。