编程语言分类:
1、系统级:C, C++, go, erlang
2、应用级:C#, Java, Python, Perl, Ruby, php
编程语言的类别:
指令+数据
1、面向过程:以指令为中心,围绕指令组织数据;
2、面向对象:以数据为中心,围绕数据组织指令;
虚拟机类型:
1、java虚拟机:jvm
2、Python虚拟机: pvm
开发动态网站的应用框架:
1、asp .net, jsp
思考与引申: 1、如果需要在不同的平台上都能使用开发好的java程序,需要在不同的平台上都安装java虚拟机,用以提供java运行的环境。虚拟机虚拟了主机运行时需要的各种库,java需要自己的类库,在这个类库的环境中运行自己的程序。这个虚拟机系统在不同平台有不同的版本。 2、如果在其中一种平台上的库所提供的API遵循POSIX规范的话,那么在这个平台上开发的源代码,拿到不同的平台上也是可以编译运行的。如果在A平台编译成二进制程序后,拿到B平台上是不能运行的,因为它们的ABI不一样。 |
动态网站:
客户端动态:服务器的源代码在客户端运行
服务器动态:服务器的源代码在服务器端运行,通过CGI(通用网关接口)技术实现。
释义:CGI
运行在前段的web服务器收到来自客户端的请求后,把请求的uri发送给后端的应用程序服务器,调用应用程序服务器在服务器端 运行以后,把生成的结果返还给客户端,这种技术称之为CGI技术。
webapp server:
CGI早期实现都是通过在后面运行一个服务器,我们称之为webapp server,基于不同的框架,需要在后台安装不同的服务程序。
jsp: tomcat, jboss, jetty
注:tomcat服务可以和前端的html服务器进行交互,交互成可以使用http协议或专用的CGI协议。
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 注:JDK java开发工具箱
JAR文档格式、JDBC、JavaBeans
1998:JDK 1.2
Sun把Java技术分拆为三个方向:Java 2
J2SE: Standard Edition
J2EE:Enterprise Edition
J2ME:Mobile Edition
代表性技术:EJB, Java Plug-in, Swing,
JIT编译器: Just In Time,即时编译器
2000:JDK 1.3
1999:HotSpot虚拟机 注:java虚拟机技术,起初由sun公司收购所得
2002:JDK 1.4
2006年,Sun开源了Java技术;遵循GPL规范;并建立了OpenJDK组织管理此些代码;
虚拟机:JRockit, HostSpot;
Java体系结构:
Java编程语言; 注:编写java程序的源代码
Java Class文件格式; 注:编译的中间代码为字解码,只能在java虚拟机上运行
Java API; 注:在运行时调用java API中的代码所实现的功能
Java VM; 注: java API + java VM 被成为java平台
JVM的核心组成部分:
Class Loader 注:类加载器,加载已经编译好的类文件和其它所依赖的类文件
执行引擎 注:执行引擎是使用C语言研发的,最终java还是要用到标准c库和系统调用。
思考与引申:其实java虚拟机只是一个中间层,它最终还是需要通过执行引擎在本地平台上执行,所以java的API只是一个翻译官。
Java编程语言的特性:
面向对象、多线程、结构化错误处理
垃圾收集、动态链接、动态扩展
三个技术流派:
J2SE ==> Java 2 SE
J2EE ==> Java 2 EE
J2ME ==> Java 2 ME
JAVA虚拟机执行java程序的过程
JVM运行时区域:运行为多个线程
方法区:线程共享;用于存储被虚拟加载的类信息、常量、静态变量等;永久代;
堆:Java堆是jvm所管理的内存中最大的一部分;也是GC管理的主要区域,主流的算法都基于分代收集方式进行:新生代和老年代;线程共享
Java栈:线程私有,存放线程自己的局部变量等信息;每个线程都有自己的栈,存取局部变量等信息
PC寄存器(Program Counter Register),线程独占的内存空间;注:也称为程序计数器,执行字解码的行号的解释器
本地方法栈:
JAVA 2 EE 虚拟机技术包含的子技术:
JAVA 2 SE
Servlet, JSP, EJB, JMS, JMX, JavaMail 注:这些都是专用的类
Servlet Contaier:注:拥有了jsp和servlet这两个组件,我们称之为servlet container
html标签要硬编码在应用程序中;
JSP:注:可以理解为是Servlet的前段程序,jsp能把以下内容转化为Servlet格式
<html>
<body>
<h1>...</h1>
<%
%> 注:java代码放在两个%之间
,
</body>
</html>
小结:JSP是java中的一个特殊类库,默认并没有被JDK包含,JDK只提供了JAVA 2 SE的标准实现,如果我们想以网页方式进行运行,我们必须保证JAVA代码能够输出html标签,为了便于这些开发,sun公司专门提供了一个规范,叫Servlet规范,基于这种规范,应用程序可以以http或CGI格式的方式来接受用户的请求,以通用的cgi或者http协议能理解用户的http请求,能分析请求,并且能够把用户的请求在本地调用JDK处理以后,构建cgi或http的响应报文,响应给客户端,这种技术就是Servlet技术。html需要内嵌java代码,这就是jsp技术。
jsp工作在servlet的前段,接受用户请求,它可以把请求翻译成Servlet格式,
Web Container:同时提供JDK, Servlet, JSP
Web Container的实现:
商业实现:
WebSphere(IBM)
WebLogic (BEA --> Oracle)
Oc4j
Glassfish
Geronimo
JOnAS
JBoss
开源实现:
Tomcat
jetty
resin