菜鸟学Linux 第100篇笔记 tomcat 之 java
内容总览
java概述
java 包含四个独立却又彼此相关的技术
四个独立的技术运作流程
JVM的实现方式
JVM的虚拟机软件
JAVA应用领域的不同,Java可分为三类 SE, EE, ME
CGI (Common Gateway Interface)
servlet CGI (JSP)
JVM 虚拟机运行时内存空间
类加载器、类的生命周期
jdk的安装
java配置参数
Sun JDK监控和故障处理工具
可视化工具 gui
tomcat
PHP:
开发语言:脚本语言
运行环境:解释执行
Zend Engine: Opcode
Xcache, APC, eAccelerator
MVC (model view controller)
data数据
bussiness:业务
presentation:展示
C/C++ cpu, os
移植困难
维护成本高
高速
驱动
C: 面向过程
C++ 面向对象
C API (Application Programming Interface)
os, system call
api
windows, api
linux, api
POSIX: Portable Operating System
ABI: Application Binary Interface
oak: 橡树
java能够在不同的硬件平台上运行同一种语言所开发出来的程序
全球最流行语言
java 包含四个独立却又彼此相关的技术
java程序设计语言
Java API
Java Class文件格式 (运行在jvm上) bytecode: 字节码
JVM:Java Virtual Machine
Once for all 一次编译到处运行 Write Once, Run anywhere
四个独立的技术运作流程
使用java程序设计语言结合Java API所提供的库编写出来的原程序,由编译器编译成Java
Class文件格式最后将此文件在jvm上运行
JVM
提供公共类和私有类
class loader
JVM的实现方式
1. 一次性解释器,解释字节码并执行。
每次执行时还需要再进行编译才可执行,此次的编译则是将字节码编译成不同的硬件和软件
平台可以识别的执行程序
2. 即时编译器(just-in-time complier)
依赖于更多内存来缓存解释器解释后的结果
3. 自适应编译器
优化程序缓存的代码,缓存20%左右的代码,提高80%的速度
Java设计语言: Sun
Java API: Sun, Java规范开放组织定义的,第三方类库
Java class: Sun
JVM的虚拟机软件
JVM: Hostspot JVM(Sun)
JRE Java Runtime Environment运行时环境 (没有编译只可运行)
JDK Java Development Kit (开发编译+运行)
JVM: OpenJDK
开发+运行(开源实现)
JDK=Java + API + JVM 用于实现Java程序开发的最小环境
JRE=JVM + Java SE API
JAVA应用领域的不同,Java可分为三类
JAVA SE:Standard Edition, J2SE
JAVA EE:Enterprise Edition, J2EE
JAVA ME:Mobile Edition, J2ME
1995年, JAVA 1.0面世, James Gosling, Green Project
GPL (General Public License)
applet: 小程序 类库
动态网站
CGI (Common Gateway Interface) 协议和规范,
可以使web服务器额外调用其它应用程序或启动其它进程来执行用户所请求的动态程序类的资源
在本地执行以后,格式化为html文档再返回给客户端的一种技术
servlet CGI
以JAVA语言实现的CGI技术,以java来开发网站,开发必须遵守servlet规范,servlet能够接受
http请求,能够理解http协议,并且能够将html文档的执行结果通过封装成http报文的格式来
响应给客户端的请求
任何一种静态内容都得在java程序中生成,这使java程序开发者必须得懂html
JSP:是servlet的一种特殊类 Java Server Page (可以分离html和java动态)
可以将java的脚本程序嵌入至html文档中
<%language="java">
SSH: Structs, Spring, Hebernate
JSP --> servlet
jasper 将jsp转换成.java
java编译器 负责将.java 编译成 .class
.jsp --> .java --> (JVM) .class
JDK: javac, .java --> .class
Web
Servlet Container: Servlet 容器
web container
JVM 虚拟机运行时内存空间
线程私有内存区
程序计数器区 程序执行状态
java虚拟机栈 保存局部变量
线程共享内存区
本地方法栈
方法区 (类)
堆 (对象区) java自动内存回收 GC (Garbage collector)
垃圾回收算法
1. 标记 清除
2. 复制 (避免碎片,浪费内存)
3. 标记整理
垃圾回收器
Serial
ParNew 并行回收
Parallel Scavenge 降低垃圾回收所需要用的时间
Serial Old 单线程
Parallel Old 多线程
CMS:Concurrent Mark Sweep
并发收集,低停顿
无法收集浮动垃圾,由于基于标记,清除会产生碎片
G1 不会产生碎片,能够精准控制停顿时间
类加载器
jvm提供
外部提供
类生命周期
loading
verification
preparation
resolution
initialization
using
unloading
jdk的安装
从官方网站下载
www.oracle.com download
我这里下载的是jdk-8u121-linux-x64不知道为何没找到之前的版本呵呵
安装
下载到linux文件夹里 因为是rpm包直接命令rpm命令安装即可
# rpm -ivh jdk-8u121-linux-x64.rpm
配置环境变量
# vim /etc/profile.d/java.sh
添加如下两行
export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin
此时使用命令便可查看已经安装好的jdk版本信息
# java -version
java配置参数
-XX:+
-XX:-
-XX:
-D
java -XX:+PrintFlagsFinal 显示所支持的所有参数和其默认值
Sun JDK监控和故障处理工具
jps JVM process status tool 显示指定系统内所有的hotspot虚拟机进程的列表信息
jstat JVM statistics Monitoring tool 收集并显示hotspot虚拟机各方面的运行数据
jinfo 显示正在运行的hotspot虚拟机配置信息
jmap 生成某hotspot虚拟机的内存转储快照
可视化工具
jconsole Java的监控与管理控制台
jvisualvm java的虚拟化控制台工具 可视化的vm