java体系结构

Java编程语言:
编程语言:
系统级:C, C++, go, erlang
应用级:C#, Java, Python, Perl, Ruby, php
虚拟机:jvm, pvm
动态网站:asp .net, jsp

动态网站:
客户端动态
服务器动态:
CGI

webapp server:
jsp: tomcat, jboss, jetty
php: php-fpm

Java编程语言:
SUN, James Gosling, Green Project, Oak, Java, Sunworld
1995: Java 1.0, Write Once, Run Anywhere
1996: JDK(Java Development Kit),包含一个JVM(Sun Classic VM)
JDK 1.0: JVM, Applet, AWT
1997: JDK 1.1
JAR文档格式、JDBC、JavaBeans
1998: JDK 1.2
Sun把Java技术分拆为三个方向:
J2SE: Standard Edition
J2EE: Enterprise Edition
J2ME: Mobile Edition
代表性技术:EJB, Java Plug-in, Swing
JIT编译器: Just In Time,即时编译器

2000: JDK 1.3
1999:HotSpot虚拟机
2002: JDK 1.4
2006年,Sun开源了Java技术;遵循GPL规范;并建立了OpenJDK组织管理此些代码;
虚拟机:JRockit, HostSpot;

编程语言的类别:指令+数据
面向过程:以指令为中心,围绕指令组织数据
面向对象:以数据为中心,围绕数据组织指令

Java体系结构:
Java编程语言;
Java Class文件格式;
Java API;
Java VM;

JVM的核心组成部分:
Class Loader
执行引擎

Java编程语言的特性:
面向对象、多线程、结构化错误处理
垃圾收集、动态链接、动态扩展

三个技术流派:
J2SE ==> Java 2 SE
J2EE ==> Java 2 EE
J2ME ==> Java 2 ME

JVM运行时区域:运行为多个线程
方法区:线程共享;用于存储被虚拟机加载的类信息,常量,静态变量等;永久代
堆:是jvm所管理的内存中最大的一部分:包含了java运行中所存放的对象;也是GC管理的主要区域;主流的算法都基于分代收集方式进行:新生代和老年代;线程共享的
Java栈:是java线程私有,用来存放线程自己的局部变量,操作数,动态链接,方法出口等信息
PC寄存器(程序计数器,Program Counter Register):线程独占的内存空间;
计算机上运行程序时,一段代码有n个指令组成,cpu取一条指令运行一条指令,所以cpu肯定有一个指针是指向指令的,
cpu有一个很小的内存空间里面保留了下一次运行的代码或指令的地址,这段内存空间就叫指令指针寄存器,对于JAVA来说,
它是在虚拟机上运行的,所以它需要自己组织一个内存空间为每一个线程在其jvm内部维持其程序计数器
本地方法栈:为虚拟机所使用到的本地方法提供服务,主要用于标明它所在主机上所能够实现的特有方法

JAVA 2 EE:
JAVA 2 SE
Servlet, JSP, EJB, JMS, JMS, JavaMail

Servlet Container:
println("<h1>")
html标签要硬编码在应用程序中;

JSP:
<html>
<body>
<%
%>
</body>
</html>

原文地址:https://www.cnblogs.com/ckh2014/p/14424305.html