Java编程语言:
编程语言:
系统级:C, C++, go ,erlang
应用级:C#, Java, Python, Perl, Ruby, php
JAVA虚拟机:JVM
Python虚拟机:PVM 程序级的虚拟化[虚拟了自己所需要的所有的类库]
动态网站:asp.net jsp, python(Django)
动态网站:
客户端动态:
服务器动态:
CGI
Webserver:
Jsp:tomcat, jboss,jetty
Php:php-fpm
Python:A
JAVA编程语言:[一次编译,到处运行]write once,run anywhere
SUN
1995:JAVA1.0, write once,run anywhere
1996:JDK(javadevelopment Kit),包含一个JVM(Sun Classic VM)
JDK1.0:JVM,Applet,AWT
1997:JDK1.1
JAR文档格式, JDBC, JavaBeans
1998:JDK1.2
Sun把java技术拆分为三个方向:
J2SE:StandardEdition
J2EE:EnterpriseEdition
J2ME:Mobile Edition
代表性技术:EJB,JAVA plug-in, swing
JIT(编译器):Just intime 即时编译器
2000:JDK1.3
1999:HotSpot虚拟机
2002:JDK1.4
2002:MICROSOFT.NET FRAME WORK
2006:Sun开源了JAVA技术;遵循GPL规范,并建立了OpenJDK组织管理此代码
2009:JDK1.7 Oracle收购sun 公司
JDK开源,HotSpot没有开源
虚拟机:JRockit,HostSpot
编程语言的类型:指令+数据
面向过程:以指令为中心,围绕指令组织数据(先做事,再慢慢来重塑一个完整的人)
面向对象:以数据为中心,围绕数据组织指令(先创建一个人,再用这个人来做事)
JAVA体系结构:
JAVA编程语言
JAVAclass文件格式(字节码文件,只能在JAVA虚拟机上运行的文件 )
JAVAAPI(编译好的类库)
JAVAVM (JAVA虚拟机)
JVM的组成部分:
Class Loader:类加载器
执行引擎:
方法区:类的方法
堆区:存放类实例化的对象,对象不用时用GC来回收并销毁
Java栈:
PC寄存器:
本地方法栈:
执行引擎:
Java语言的特性:
面向对象,多线程,结构化错误处理
自行实现垃圾收集,动态链接,动态扩展
三个技术流派:
J2SEàjava 2 SE
J2ee-> java 2 EE
J2me->java 2 ME
JAVA运行时区域:(运行多个线程)
守护线程:
非守护线程:(用户启动的线程)
方法区:线程共享,用于存放被虚拟机加载的类信息,常量,静态变量等,是非堆内存空间(永久代空间,一直存在内存中)
堆:(内存占用很大),JAVA堆是jvm所管理的内存中最大的一部分,是垃圾管理(GC)的主机区域, 垃圾算法基于分代收集方法:新生代和老年代;,堆内存是共享的内存区域
JAVA栈:线程私有(每个类的方法都会创建java栈,用于存放线程自己的局部变量等信息)
PC寄存器(线程独占的内存空间)
本地方法栈:为虚拟机提供的本地的方法实现