java
oak:java早期的名称
java包含四个独立却又被此相关的技术:
java程序设计语言
java API(java第三方库)
java Class 文件格式(编译后的文件格式)
JVM:Java Virtual Machine(编译后的文件再java虚拟机上运行)
java源程序文件(.java):java程序语言,Java API -->Java complier --> .class --> JVM
Once for all
一次编译,到处运行:Write once,Run anywhere.
bytescode:字节码
.java文件编译过后是.class文件,是字节码(bytescode),但还不是完全意义上底层Linux能直接识别的二进制程序,还需要java虚拟机(JVM)解释并执行。
JVM的实现方式:
1.一次性解释器,解释字节码并执行;
2.即时编译器(just-in-time complier):每个.class类在解释为二进制格式的时候,解释后的内容都会缓存下来,第二次执行的时候就直接从缓存中取。# 依赖于更多内存缓存解释后的结果
3.自适应编译器(仅缓存使用频率比较高的20%的代码,提高80%左右的速度);
Java设计语言:Sun
Java API:
JVM:Hotspot JVM # sun公司开发的
JRE:Java 运行时环境
只能实现已经编译好的类在JRE上运行
JDK:Java 开发环境
开发(编译) + 运行
JVM:OpenJDK # 开源的,并不只包括JVM
开发+运行
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
JSP --> Servlet
Jasper
applet,servlet,jsp
JSP程序:
.jsp --> .java --> (JVM) .class
Jasper 将.jsp转化为.java
java编译器负责将.java转化为.class
JDK:
提供了Javac,能够将.java转化为.class
安装java虚拟机:
yum list all | grep "^java"
yum install -y java-1.6.0-openjdk.x86_64
java -version # 查看Java虚拟机版本号
java 配置参数:
-XX:+<option>:开启此参数指定的功能
-XX:-<option>:关闭功能
-XX:<option>=<value>:给option指定的选项赋值;
-D<name>=<value>:set a system property
java -XX:+PrintFlagsFinal
Sun JDK监控和故障处理工具:
jps,JVM Process Status Tool:显示指定系统内所有的HotSpot虚拟机进程的列表信息
jstat,JVM Statistics Monitoring Tool:手机并显示HotSpot虚拟机各方面的运行数据
jinfo:显示正在运行的某HotSpot虚拟机配置信息
jmap:生成mouHotSpot虚拟机的内存转储快照;
可视化工具:
jconsole:Java的监控与管理控制台
jvisualvm:
tomcat
tomcat各组件间的关系:
<Server>
<Service>
<Connector />
<Engine>
<Host>
<Context>
</Context>
</Host>
</Engine>
</Service>
</Server>