`
异步获取爱
  • 浏览: 80266 次
  • 性别: Icon_minigender_1
  • 来自: 大男子主义世界
社区版块
存档分类
最新评论

Java中的四个核心技术思想

阅读更多
对Java核心概念和思想的掌握有助于提升我们对整个Java平台的理解力。这里将介绍四个Java中的核心技术思想,包括Java虚拟机、类装载器的体系结构、class文件和API。

Java已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌握Java技术,深入理解底层的技术处理细节必不可少。对核心概念和思想的掌握可以帮助我们举一反三、触类旁通,有助于提升我们对整个Java平台的理解力。这里所介绍的是Java技术平台的几个核心概念,其中所蕴含的思想有助于我们更深刻的理解Java技术。

Java虚拟机

    Java虚拟机的主要任务是装在class文件并且执行其中的字节码。Java虚拟机包含一个类装载器,它可以从程序和API中装载class文件。Java API中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。

    不同的Java虚拟机中,执行引擎可能实现得非常不同。在由软件实现的虚拟机中,最简单的执行引擎就是一次性解释字节码。另一种执行引擎更快,但是也更消耗内存,叫做"即时编译器(just-in-time compiler)"。在这种情况下,第一次被执行的字节码会被编译成本地机器代码。编译出的本地机器代码会被缓存,当方法以后被调用的时候可以重用。第三种执行引擎是自适应优化器。在这种方法里,虚拟机开始的时候解释字节码,但是会监视运行中程序的活动,并且记录下使用最频繁的代码段。程序运行的时候,虚拟机只把那些活动最频繁的代码编译成本地代码,其他的代码由于使用得不是很频繁,继续保留为字节码-由虚拟机继续解释它们。一个自适应的优化器可以使得 Java虚拟机在80%~90%的时间里执行被优化过的本地代码,而只需要编译10%~20%的对性能有影响的代码。

    当Java虚拟机是由主机操作系统上的软件实现的时候,Java程序通过调用本地方法(native method)和主机交互。Java中有两种方法: Java方法和本地方法。Java方法是由Java语言编写,编译成字节码文件,存储在class文件中的。本地方法是由其他语言(比如c,c++或汇编语言)编写的,编译成何处理器相关的机器代码。本地方法保存在动态链接库中,格式是各个平台专有的。运行中Java程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,并调用这个方法。本地方法是联系Java程序和底层主机操作系统的连接方法。

    通过本地方法,Java程序可以直接访问底层操作系统的资源。一个本地方法接口(Java Native Interface, JNI)-使得本地方法可以在特定主机系统的任何一个Java平台实现上运行。

    如果希望使用特定主机上的资源,它们又无法从Java API访问,那么可以写一个平台相关的Java程序来调用本地方法。如果希望保证程序的平台无关性,那么只能通过Java API来访问底层系统资源。

类装载器的体系结构

    一个Java应用程序可以使用两种类装载器:"启动(bootstrap)"类装载器和用户定义的类装载器。启动类装载器(这是系统中唯一的)是 Java虚拟机实现的一部分。启动类装载器通常使用某种默认方式从本地磁盘中装载类,包括Java API类(启动类装载器也被称为原始类装载器、系统类装载器或者默认类装载器)。

    Java应用程序能够在运行时安装用户定义的类装载器,这种类装载器能够使用自定义的方式来装载类。例如,从网络下载class文件。尽管启动类装载器是虚拟机实现的本质部分,而用户定义的类装载器不是,但用户定义的类装载器能够用Java来编写,能够被编译成class文件,能够被虚拟机装载,还能够像其它对象一样实例化。

    由于有用户定义类装载器,所以不必再编译的时候就知道运行中的Java应用程序中最终会加入的所有的类。用户定义的类装载器使得在运行扩展Java 应用程序成为可能。当它运行时,应用程序能够解决它需要哪些额外的类,能够决定是使用一个或是更多的用户定义的类装载器来装载。由于类装载器是用Java 编写的,所以用任何在Java代码中可以表述的风格来进行类装载。这些类可以通过网络下载,可以从某些数据库中获取,甚至可以动态生成。

    每一个类被装载的时候,Java虚拟机都监视这个类,看到它到底是被启动类装载器还是被用户定义类装载器装载。当被装载的类引用了另外一个类时,虚拟机就会使用装载第一个类的类装载器装载引用的类。例如,如果虚拟机使用一个特定的类装载器装载Volcano这个类,它就会使用这个类装载器装载 Volcano类使用的所有类。

    由于Java虚拟机采取这种方式进行类的装载,所以被装载的类默认情况下只能看到被同一个类装载器装载的别的类。通过这种方法,Java的体系结构允许在一个Java应用程序中建立多个命名空间。运行时的Java程序中的每一个类装载器都有自己的命名空间。

    Java应用程序可以创建多少个(或多少种)被不同的类装载器装载的类存放在不同的命名空间中,它们不能相互访问,除非应用程序显示地允许这么做。当编写一个Java应用程序的时候,从不同源文件装载的类可以分隔在不同的命名空间中。通过这种方法,就能够使用Java类装载器的体系结构来控制任何不同源文件中装载的代码之间的相互影响,特别是能够阻止恶意代码获取访问或破坏善意代码的权限。

    Web浏览器是一个动态扩展的例子,Web浏览器使用用户定义的类装载器从网络下载用于Java applet的class文件。Web浏览器使用一个用来安装用户定义类装载器的Java应用程序。这个用户定义的类装载器通常被称为Java Applet类装载器,它知道如何向HTTP服务器请求class文件。Java Applet可以作为动态扩展的例子,因为Java应用程序并不知道它什么时候会开始从网络下载浏览器请求的class文件。只有当浏览器遇到有Java applet的页面时,才决定是否需要下载class文件。

    Web浏览器启动的Java应用程序通常为每个提供class文件的网络地址分别创建不同的用户定义类装载器,因此,不同的用户定义类装载器装载不同来源的class文件。这就可以把它们分别放置在Java主机应用程序的不同命名空间之下。由于不同来源的Java applet文件放置在不同的命名空间中,恶意的Java applet代码就不会直接访问从别的地方下载的class文件。这就能够限制或阻止不同来源的代码之间的相互访问。


Java class文件


    Java class文件主要在平台无关性和网络移动性方面使Java更适合网络。它在平台无关性方面的任务是:为Java程序提供独立于底层主机平台的二进制形式的服务。这种途径途径打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。而Java class文件时可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。

    当编译和连接一个C++程序时,所获得的可执行二进制文件只能在指定的硬件平台和操作系统上运行,因为这个二进制文件包含了对目标处理器的机器语言。而Java编译器把Java源文件的指令翻译成字节码,这种字节码就是Java虚拟机的"机器语言"。

    class文件设计得紧凑,因此它们可以快速地在网络上传送。其次,由于Java程序是动态连接和动态扩展的,class文件可以在需要的时候才下载。这个特点使得Java应用程序能够安排从网络上下载class文件的时间,从而可以最大限度地减少终端用户的等待时间。


Java API


    Java API通过支持平台无关性和安全性,使得Java适应于网络应用。Java API是运行库的集合,它提供了一套访问主机系统资源的标准方法。运行Java程序时,虚拟机装载程序的class文件所使用的Java API class文件。所有被装载的class文件(包括从应用程序中和从Java API中提取的)和所有已经装载的动态库(包含本地方法)共同组成了再Java虚拟机上运行的整个程序。

    在一个平台能偶支持Java程序以前,必须在这个特定平台上明确地实现API的功能。为访问主机上的本地资源,Java API调用了本地方法。由于Java API class文件调用了本地方法,Java程序就不需要再调用它们了。通过这种方法,Java API class文件为底层主机提供了具有平台无关性、标准接口的Java程序。对Java程序而言,无论平台内部如何,Java API都会有同样的表现和可预测的行为。正是由于在每个特定的主机平台上明确地实现了Java虚拟机和Java API,因此,Java程序自身就能够成为具有平台无关性的程序。

    Java API在Java安全性模型方面也有贡献。当Java API的方法进行任何有潜在危险的操作(比如进行本地磁盘写操作)之前,都会通过查询访问控制器来检验是否得到了授权。访问控制器是一个类,该类用来执行栈检验,已决定是否允许某种操作。
分享到:
评论

相关推荐

    Java中的四个核心技术思想Java中的四个核心技术思想

    Java中的四个核心技术思想是构成Java平台基础的关键概念,它们对于理解和精通Java编程至关重要。以下是这四个核心技术思想的详细解析: 1. **Java虚拟机(JVM)** Java虚拟机是Java程序运行的基础,它的主要任务是...

    java中四个核心思想

    ### Java中的四个核心思想 Java作为一种广泛使用的编程语言,在其设计与实现中蕴含了四大核心思想,这四个核心思想不仅体现了Java的设计理念,也决定了Java程序的运行方式。接下来,我们将详细探讨这四个核心思想:...

    Java四大核心技术思想详解.doc

    Java四大核心技术思想主要涵盖Java虚拟机(JVM)、类装载器体系、垃圾收集与内存管理...掌握这些核心思想不仅有助于编写高效、稳定的代码,还能帮助开发者更好地理解和调试Java程序,提高整体的开发效率和软件质量。

    java四大核心思想.pdf

    Java四大核心思想 Java是一种复杂的技术平台,对于开发人员而言,要想更好的掌握Java技术,深入理解底层的技术处理细节必不可少。对核心概念和思想的掌握可以帮助我们举一反三、触类旁通,有助于提升我们对整个Java...

    Java编辑思想(中文第四版)

    《Java编程思想(中文第四版)》是一本深入解析Java编程语言的经典著作,它全面而细致地阐述了Java的核心概念和技术。这本书对于学习和理解Java编程有着极高的价值,无论你是初学者还是经验丰富的开发者,都能从中...

    java变成思想第四版中文版 练习题答案

    通过《Java编程思想》第四版的中文版练习题答案,你可以对照书中内容,逐一解决练习中的问题,加深对Java语言的理解,提高编程技能。同时,理论知识结合实际练习,将有助于你更好地掌握这些关键知识点。

    java编程思想第四版源代码.7z

    《Java编程思想》是 Bruce Eckel 的经典著作,第四版更是深入浅出地介绍了Java语言的核心概念和技术。这个压缩包包含的源代码是书中的示例程序,它们旨在帮助读者理解书中阐述的各种编程原理和实践。通过分析这些源...

    Java面向对象编程思想.pdf

    Java 面向对象编程思想是 Java 编程语言的核心思想之一,通过封装、继承和多态三个特征,实现代码的重用和可维护性。 一、封装 封装是 Java 面向对象编程的三大特征之一,通过 Java 的类来实现数据和操作方法的...

    java 编程思想第四版习题答案

    这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、异常处理、集合框架、多线程、网络编程等多个方面。对于学习Java的人来说,这本书提供了丰富的习题来帮助读者巩固理论知识并提升实践能力。 本...

    JAVA核心技术卷1—1

    在《JAVA核心技术卷1—1》中,OOP是贯穿始终的一个核心概念。书中详细讲解了封装、继承、多态这三大特性,以及抽象类、接口、内部类等高级概念,帮助读者深刻理解面向对象的编程思想。 ### 三、类与对象 类是Java...

    Java编程思想【第四版·习题答案】

    总的来说,《Java编程思想》第四版结合习题答案,为学习者提供了一个全面且深入的学习资源,无论你是初学者还是有经验的开发者,都能从中受益匪浅。通过深入学习和实践,你将能够掌握Java编程的核心概念和技术,为你...

    JAVA核心技术

    它的原意是Gangs Of Four,就是“四人帮”,就是指此书的四个作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。这本书讲了23种主要的模式,包括:抽象工厂、适配器、外观模式等。??还有其他的很多模式...

    《Java编程思想》第四版答案

    这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、异常处理、多线程、集合框架、网络编程等多个方面。本书的答案集提供了书中练习题的解答,帮助读者更好地理解和应用所学知识。 1. 面向对象...

    java编程思想4th版类库

    《Java编程思想》第四版是Java开发者必备的经典书籍之一,由Bruce Eckel撰写,深入浅出地介绍了Java语言的核心概念和技术。在这个压缩包文件中,包含的主要是与本书相关的类库资源,特别是针对"mindview.net"包的,...

    java排课算法核心代码及思想

    ### Java排课算法核心知识点详解 #### 一、算法背景与意义 排课问题是教育管理领域中的一个经典问题,涉及到教师、学生、教室资源的有效利用。随着计算机技术的发展,使用程序自动排课不仅能够提高效率,还能确保...

    Java编程思想 Thinking in Java 课后习题答案

    《Java编程思想》是 Bruce Eckel 的经典著作,它深入浅出地讲解了Java语言的核心概念和编程技术。这本书不仅提供了丰富的理论知识,还包含了大量练习题,旨在帮助读者巩固和提升编程技能。课后习题答案对于学习者来...

Global site tag (gtag.js) - Google Analytics