绪论

1.java技术体系

java技术体系有三个分支,分别为Java SE,Java EE,Java Me。

1.1Java SE

      a.概述:Java SE为Java桌面和工作组级应用的开发与运行提供了环境。它的实现主要包括JDK和JRE。Java SE是Java EE 和Java Web Services技术的基础,其提供了编写与运行Java Applet与Application的编译器,开发工具,运行环境与JAVA API。

      b.java SE的组成:

 

                                                                    

      (1)Java开发工具:包括Java语言的编译器,调试器以及文档工具等。

      (2)Java部署技术:提供了部署与运行Java运用的支持,包括以Web方式加载与运行Java Application的Java Web Start和支持Applet在Netscape Navigator和Microsoft Internet Explorer浏览器中运行的Java plug-in。

      (3)用户界面工具集:包括图形化用户界面工具AWT和Swing;二维图形和图像的显示与操作工具Java 2D;声音捕获、处理与播放的Java sound api;支持多种语言输入的输入法框架Input Method Framework;

                                           开发面向残疾人的Java应用的向该技术Accessibility。

      (4)集成API:包括分布式对象操作支持,如Java RMI(远程方法调用)技术与CORBA技术;数据库连接API——JDBC;向Java应用提供命名和目录服务的JNDI API等。

      (5)Java基本库:Java核心API包含了实现Java平台基本特征与功能的类和接口,包括以下类别:输入/输出、网络通信、核心语言包java.lang和工具包java.util、安全机制、国际化应用的支持、Java组件模型—JavaBeans API、

                                     处理XML文档和数据、记录应用系统安全及应用配置等方面信息的日志功能、存储与获取应用系统用户配置数据的Preferences API、集合操作类(collection)、调用本地方法的Java native interface(JNI)等。

      (6)Java虚拟机:Java SE中包含了如下两种Java虚拟机JVM的实现:

                  ①Java HotSpot Client VM:是Java运行环境(JRE,有时也称为Java运行系统)默认的Java虚拟机。它最适于在客户端环境中运行Java应用,能够使应用的运行得到最佳的性能。

                  ②Java HotSpot Service VM:是为在服务器运行Java应用而设计的,可以使这种环境下的应用系统得到最快的运行速度。通过在命令行使用-server参数启动这种类型的Java虚拟机,如java-server MyApp。

1.2Java EE

        a.概述:Java EE定义了基于组件的多层企业级应用的开发标准,面向企业和高端服务器的Internet应用开发。它基于Java SE,包括Enterprise JavaBeans(EJB),Java servlets API以及Java Server Pages(JSP)等

                     技术,并未企业级应用的开发提供了各种服务和工具。

        b.Java EE的应用程序模型:其是一种多层模型,如下图所示。多层模型的各个层次分别是客户端表示层,服务器端表示层,应用逻辑层、企业信息系统层。

                                                   Java EE应用系统的用户可以通过浏览器或Java Application等方式访问Java EE应用。

                                                   客户的操作请求被首先发送到服务器端表示层。该层由Web服务器构成,JSP和Servlet是Web服务器的重要组件。这些组件解析客户端发来的请求,并驱动后端应用逻辑层中实现相应应用逻辑

                                                   的EJB组件完成用户请求的服务。EJB组件在实现服务操作时会根据需要存取企业信息系统中的数据,并将操作结果原路返回服务器表示端的JSP/Servlet,由JSP/Servlet把结果表示为HTML格式

                                                   返回给客户端并在浏览器中显示,或由Servlet将结果返回给客户端的Java Application。

 

                                                          

 

1.3Java ME

            概述:Java Me是针对消费类电子设备如移动电话、电视置顶盒、汽车导航系统等的嵌入式计算的一组技术和规范,目前已被广泛应用。它是在Java SE的基础上,结合这类设备计算资源

                       的限制对Java SE 进行了语言精简,并对运行环境进行了高度优化。

 

 

2.什么是Java技术

2.1 Java语言

       java语言的特殊之处为程序运行既要经过编译又要进行解释,java文件经过编译器编译过后编程class文件(变成字节码,该字节码是Java虚拟机JVM的代码,是平台无关的中性代码,因此不能在各种计算机直接运行,必须在JVM上运行,同时,其也可以在任何平台的JVM运行,所以Java程序具有可移植性),然后通过Java解释器(是JVM的实现)将其变成底层平台的 机器码,使得Java程序最终得以运行。

 

2.2 Java平台

      Java平台是完全由软件构成并运行在其他硬件平台之上,支持Java程序的运行。如下图所示:

                 

      如图可知:Java平台使Java程序与底层平台隔离。Java平台有两个组成部分:Java虚拟机与Java API。

     a.Java虚拟机:1)JVM是Java平台的基础,并且与各种基于硬件的平台相连。它提供了Java程序运行的必要环境。

                             2)在Java平台中专门引入JVM是支持字节码的运行(这样说的原因有两个,分别为:

                              ①Java的目标代码是字节码,因此在执行之前,需要将字节码转换成本机代码

                              ②为了实现语言的动态性与安全性,Java编译器将符号引用信息保留在字节码中,这样类的装载和符号引用的消解都要在运行时进行)。

 

     b.Java应用编程接口(Java API)

                               1)Java API是一个很大的Java类库集合,这些类以包的形式组织。

                               2)Java API既能使应用系统访问底层平台服务,又能保证Java应用系统不依赖于具体的底层平台(使得应用程序具有可移植性)。

                               3)Java平台中字节码的运行速度可能要比直接在底层平台上运行额本地代码稍慢。

 

2.3 Java的特征
       ①简单性:Java语言句法和语义都比较单词,容易学习和使用。

       ②面向对象:它对面向对象方法学的支持最为全面。

       ③分布式特征:Java具有支持分布式计算的特征。这边的分布具有两层意义,为数据分布和操作分布。Java实现这两种分布的具体方式如下:

                               1)数据分布支持:通过Java的URL类,Java程序可以访问网络上的各类信息资源,访问方式完全类似于本地文件系统。

                               2)操作分布支持:Java通过嵌在www页面中的applet(小应用程序)将计算从服务器分布至客户机。applet由www浏览器在客户端运行,

                                                               从而避免了网络拥挤,提高了系统效率。

       ④半编译、半解释特征:半编译是说通过编译器不是直接编译成本地代码,而是字节码。半解释是说解释成本地代码的数据源不是源码,而是字节码。这样的特征的好处是:

                                1)提高了Java的可移植性

                                2)这种半编译、半解释的过程兼具编译执行的效率优势和解释执行的灵活性。

        ⑤强壮性:

                                1)Java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误出现。

                                2)通过集成的面向对象的例外处理机制,在编译时,Java提示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。

                                3)Java是一种强类型语言,程序编译时要经过严格的类型检查,防止程序运行时出现类型不匹配等问题。

        ⑥安全性:Java在语言和运行环境中引入了多级安全措施,其采用的主要安全机制有如下两种:

                                1)内存分配及布局由Java运行系统规定

                                2)运行系统执行基于数字签名技术的代码认证、字节码验证与代码访问权限控制的安全控制模型。

        ⑦体系结构中立:Java语言的设计不是针对某种具体平台结构的。

                                1)为了做到结构中立,除了上面提到的编译生成机器无关的字节码外,还制定了完整统一的语言文本。

                                2)为了使Java的应用程序不依赖于底层具体的系统,Java语言环境还提供了一个用于访问底层操作系统功能的可扩展类库。

        ⑧可移植性:Java是迄今为止对可移植性支持最佳的编程语言。其最大特点是“一次编程,处处运行”,任何机器只要匹配了Java解释器(JVM),便可运行Java程序。

                               这种可移植性源于两方面:  

                                1)Java的半编译,半解释特征

                                2)Java体系结构中立,采用标准的独立于硬件平台的数据类型,对数据类型都有严格标准,并且不会因为机器的不同而改变。

        ⑨高性能:

                        1)由于字节码与机器码十分接近,使得字节码到机器码的转换十分快捷。

                        2)java提供了即时编译技术,即将要执行的字节码一次编译为机器代码,再全速运行,提高了Java的应用的运行速度。

        ⑩多线程:Java特点是在语言级嵌入了多线程机制,支持程序的并发处理功能。

                        注意:如果底层的操作系统支持多线程,Java的线程通常被映射到实际的操作系统线程中,这意味着在多机环境下,用Java写的程序可以并行执行。

        ⑪动态特性:Java的动态特性是面向对象设计的延伸。Java程序的基本组成单元是类,而Java的类又是运行时动态装载的,这使得Java可以动态的维护应用程序

                              及其支持类之间的一致性。

 

3.Java语法机制概述

         ①类:类是Java中最基本、最重要的语法元素。Java中类的定义与类的继承都与c++类似。它们之间的区别主要有如下两点:

                    1)Java不允许一个类同时继承多个父类。在Java中,多重继承必须通过接口实现。

                    2)除c++的修饰词public,protected和private之外,Java还引进了abstract和final修饰词。

           注意:带abstract的类称为抽象类。

                      1)抽象类的抽象方法只定义方法的声明(函数名,参数以及类型),没有方法体。

                      2) 抽象类只能供其他类作为父类使用不能直接通过new运算符产生抽象类的对象。

                       final可修饰类,属性,方法。

                      1)带final的类不能做父类被继承。

                      2)带final的属性在赋初值或第一次赋值后将不允许改变,成为常量。

                      3)在方法中定义final,可以防止子类重写该方法。

         ②接口:接口是一种抽象类,接口中只鞥出现静态常量或抽象方法的定义。

                       Java引进接口的主要目的是为了实现多重继承功能,类可以实现一个或多个接口来实现多重继承。

         ③程序包:程序包是一些相关类或接口的集合。

                            Java系统提供的可重用类都以包的形式供软件开发人员使用。无论是使用Java系统提供的标准程序包,

                            还是自定义的程序包,在程序中都通过import语句将相应的包引入的。

         ④多线程:因为Java直接在语言级支持多线程。这使得开发人员不必考虑不同操作系统平台多线程处理机制的差异,从而使应用软件具有好的可靠性和可移植性。

         ⑤取消指针:c++的指针非常灵活,程序员可利用它指向任意内存块,但也是较易引发程序错误和内存泄漏的语法元素。Java取消了指针类型,所有的动态内存的

                                申请均通过new运算符进行,连数组内存空间的申请也不例外。在Java中通过new得到的不是指针,而是引用,通过该引用能够找到目标对象。Java

                                程序只能通过引用访问数据元素或对象,不能像使用c++指针那样通过修改引用的值来指向另一内存区。这样可减少出错机会,同时也使系统能够自动判别

                                某块内存是否可以回收。

 

4.Java运行系统与JVM

 a.Java运行系统

          ①概述:Java运行系统是个平台厂商对jvm的具体实现。对于Java中的两类应用程序,存在两种不同类型的运行系统:

                          对于Java应用,运行系统是Java解释器;对于Java applet,运行系统是指Java兼容的web浏览器,该浏览器中包含了支持applet运行的环境。

          ②Java运行系统的构成:

                

            

          ③执行字节码(运行)的过程

              (1)代码的装入

                        由类装配器装入程序运行时需要的所有代码,其中包括程序代码中调用到的所有类。当装入了运行程序需要的所有类后,运行系统便可以确定整个可执行程序的内存布局。

              (2)代码的验证

                       由字节码检验器进行安全检查,以确保代码不违反Java的安全性规则,同时字节码验证器还可发现操作数栈溢出,非法数据类型转化等多种错误。

              (3)代码的执行

                       Java字节码的运行可以有如下两种方式

                       即时编译方式:由代码生成器先将字节码编译成本地代码,然后再全速执行本地代码。这种运行方式效率高。

                       解释执行方式:解释器每次把一小段代码转换成本地代码并执行,如此往复完成Java字节码的所有操作。

 b.Java虚拟机JVM

          ①概念:Java虚拟机是一种真实计算机上通过软件仿真实现的虚拟机器。虚拟机的代码存储在.class文件中,并且每个.class文件最多包含一个public class类的代码。从概念

                          上看,Java虚拟机是一个想象中的、能运行Java字节码的操作平台。而jvm规范提供了这个平台的严格的规范说明,包括指令系统,字节码格式等。jvm进一步可用软件在

                          不同计算机系统上实现或用硬件实现。从而使Java应用和平台无关。即Java字节码可以在各种平台上,在实现jvm的Java运行系统的支持下运行,如下图所示:

                            

 

          ②jvm的实现

               jvm的实现包括字节码验证,解释器,内存垃圾回收等,是上述Java运行系统的核心,Java运行系统是各供应商对jvm的具体实现。所有这些供应商在实现上都有各自独特的特性,但

               最重要的是它们必须支持sun对.class文件结构、字节码定义等虚拟机的规范,这使得所有Java运行系统的功能是同一的,并且执行统一的字节码。

 

          ③jvm规范定义的一组抽象逻辑组件

              (1)指令集

              (2)寄存器组:包括程序计数器,栈顶指针,指向当前执行方法的执行环境的指针和指向当前执行方法的局部变量的指针。

              (3)类文件的格式

              (4)栈结构:栈用于保存操作参数、返回结果和为方法传递参数等。

              (5)垃圾收集程序:用来收集不用的数据堆,使内存有效利用。

              (6)存储区:用于存放字节码的方法代码,符号表等。

             jvm对这些组件进行了严密的规定,尤其对字节码的格式做了明确的规定,但它没有规定这些组件的具体实现技术,它们可以采用任何一种技术实现,用软件或芯片实现。但是无论采用

             什么具体的实现技术,Java虚拟机的功能必须是统一的,只能执行jvm规范中规定的统一格式的字节码。

 

5.Java API

          ①概述:Java API——Java应用程序编程接口,是sun提供的使用Java语言开发的类集合,是Java平台的重要组成部分。Java api中的类被分成许多包,每个包可以包含若干相关类。Java API

                         中的包形成了树状结构,包括三类包:核心包java和各种扩展功能的类库:javax和org。

          ②一些常用重要的包:

                 (1)java.lang——由Java语言的核心类组成,包括了基本数据类型和出错处理方法等。

                 (2)java.io——java语言的标准输入/输出库,提供系统通过数据流,串行化和文件系统的输入和输出。

                 (3)java.util——包含集合类,如map,set,日期与时间相关的类等。

                 (4)java.net——提供实现网络应用所需的类。

                 (5)java.awt——是抽象窗口工具集,提供了创建用户界面和绘制图形,图像所需的所有类。

                 (6)java.awt.event——图形化用户界面中的事件处理。

                 (7)java.applet——提供创建Applet以及实现Applet相关操作所必需的类。

                 (8)java.sql——支持通过JDBC的数据库访问操作。

               

posted @ 2017-07-12 12:39  鹏达君  阅读(223)  评论(0编辑  收藏  举报