`

Java技术中的三大特性

阅读更多

1.虚拟机                                                                        

Java虚拟机JVMJava Virtual Machine)在Java编程里面具有非常重要的地位,约相当于前面学到的Java运行环境,虚拟机的基本功能如下:

1):通过ClassLoader寻找和装载class文件

2):解释字节码成为指令并执行,提供class文件的运行环境

3):进行运行期间垃圾回收

4):提供与硬件交互的平台

Java虚拟机是在真实机器中用软件模拟实现的一种想象机器。Java虚拟机代码被存储在 .class文件中;每个文件都包含最多一个public类。Java 虚拟机规范为不同的硬件平台提供了一种编译Java技术代码的规范,该规范使Java 软件独立于平台,因为编译是针对作为虚拟机的“一般机器”而做。这个“一般机器”可用软件模拟并运行于各种现存的计算机系统,也可用硬件来实现。编译器在获取Java应用程序的源代码后,将其生成字节码,它是为JVM生成的一种机器码指令。每个Java解释器,不管它是Java技术开发工具,还是可运行applets Web浏览器,都可执行JVM

JVM为下列各项做出了定义

-   指令集(相当于中央处理器[CPU] )

-   寄存器

-   类文件格式

-   

-   垃圾收集堆

-   存储区

JVM的代码格式由紧缩有效的字节码构成。由JVM字节码编写的程序必须保持适当的类型约束。大部分类型检查是在编译时完成。任何从属的Java技术解释器必须能够运行任何含有类文件的程序,这些类文件应符合Java虚拟机规范中所指定的类文件格式。

 

1.1 虚拟机是Java平台无关的保障

正是因为有虚拟机这个中间层,Java才能够实现与平台无关。虚拟机就好比是一个Java运行的基本平台,所有的Java程序都运行在虚拟机上. 

Java源程序(*.java文件)

Java类文件(*.class文件)

编译

平台无关

平台相关

Java虚拟机

被装载进入虚拟机

Linux

Windows

Unix

解释执行字节码文件            

 

2.垃圾回收                                                                     

2.1 什么是垃圾

在程序运行的过程中,存在被分配了的内存块不再被需要的情况,那么这些内存块对程序来讲就是垃圾。

产生了垃圾,自然就需要清理这些垃圾,更为重要的是需要把这些垃圾所占用的内存资源,回收回来,加以再利用,从而节省资源,提高系统性能。

 

2.2 垃圾回收

-         不再需要的已分配内存应取消分配(释放内存)

-         在其它语言中,取消分配是程序员的责任

-         Java编程语言提供了一种系统级线程以跟踪内存分配

-         垃圾收集

-         可检查和释放不再需要的内存

-         可自动完成上述工作

-         可在JVM实现周期中,产生意想不到的变化

许多编程语言都允许在程序运行时动态分配内存,分配内存的过程由于语言句法不同而有所变化,但总是要将指针返回到内存的起始位置,当分配内存不再需要时(内存指针已溢出范围),程序或运行环境应释放内存。

CC++ 或其它语言中,程序员负责释放内存。有时,这是一件很困难的事情。因为你并不总是事先知道内存应在何时被释放。当在系统中没有能够被分配的内存时,可导致程序瘫痪,这种程序被称作具有内存漏洞。

Java编程语言解除了程序员释放内存的责任。它可提供一种系统级线程以跟踪每一次内存的分配情况。在Java虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的内存。垃圾收集在Java技术程序的生命周期中自动进行,它解除了释放内存的要求,这样能够有效避免内存漏洞和内存泄露(内存泄露就是程序运行期间,所占用的内存一直往上涨,很容易造成系统资源耗尽而降低性能或崩溃)。

 

2.3 提示

1Java里面,垃圾回收是一个自动的系统行为,程序员不能控制垃圾回收的功能和行为。比如垃圾回收什么时候开始,什么时候结束,还有到底哪些资源需要回收等,都是程序员不能控制的。

2有一些跟垃圾回收相关的方法,比如:System.gc() , 记住一点,调用这些方法,仅仅是在通知垃圾回收程序,至于垃圾回收程序运不运行,什么时候运行,都是无法控制的。

3程序员可以通过设置对象为null(后面会讲到)来标示某个对象不再被需要了,这只是表示这个对象可以被回收了,并不是马上被回收。

 

3.代码安全                                                                     

Java如何保证编写的代码是安全可靠的呢?

1)第一关:编写的代码首先要被编译成为class文件,如果代码写得有问题,编译期间就会发现,然后提示有编译错误,无法编译通过。

2)第二关:通过编译关后,在类装载的时候,还会进行类装载检查,把本机上的类和网络资源类相分离,在调入类的时候进行检查,因而可以限制任何“特洛伊木马”的应用。

3)第三关:类装载后,在运行前,还会进行字节码校验,以判断你的程序是安全的。

4)第四关:如果你的程序在网络上运行,还有沙箱(Sand Box)的保护,什么是沙箱呢?就是如果你的程序没有获得授权,只能在沙箱限定的范围内运行,是不能够访问本地资源的,从而保证安全性。 

 

Compile

HelloWorld.java

HelloWorld.class

Javac

Network

Class Loader

Java

Byte code verifier

Interpreter

Hardware

Runtime

编译检查

装载检查

字节码校验

Runtime

沙箱保护

http://sishuok.com/forum/blogPost/list/1732.html 

分享到:
评论

相关推荐

    Java核心技术 第12版 开发基础+高级特性 英文原版

    Horstmann是美国圣何塞州立大学的计算机科学教授,对Java技术有着深厚的造诣。 书中的内容分为多个章节,从Java编程平台的介绍开始,解释了Java的“白皮书”关键词,如简单性、面向对象、分布式、健壮性、安全性、...

    Java OCR 图像智能字符识别技术,可识别中文

    Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...

    java核心技术卷二

    了解和掌握这些知识点,对于想要深入学习Java技术并应用于实际开发工作的开发者而言至关重要。在学习这些高级特性时,建议结合实践项目来加深理解和巩固,这样才能更好地将理论知识转化为解决实际问题的能力。

    java 技术总结.--java 技术

    Java技术是计算机编程领域中的重要组成部分,尤其在企业级应用开发中占据主导地位。这篇“Java技术总结”将深入探讨Java的核心概念、语法特性、开发工具以及相关框架,旨在为学习者提供一个全面且深入的Java知识体系...

    Java核心技术 卷II 高级特性 第9版(中文)

    《Java核心技术 卷II 高级特性 第9版(中文)》是一本深入探讨Java编程高级特性的权威著作。本书涵盖了Java开发中的诸多关键概念和技术,旨在帮助Java开发者提升技能,掌握更深层次的编程知识。以下是对书中部分关键...

    java核心技术(pdf)

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和强大的库支持而闻名。《Java核心技术》是一本深入探讨...这份中文PDF教材为中国的开发者提供了一个便捷的学习资源,帮助他们更好地理解和应用Java技术。

    java核心技术第九版

    《Java核心技术》第九版...通过学习《Java核心技术》第九版,读者不仅能掌握Java编程的基础,还能了解到许多高级特性和最佳实践,从而提升自己的编程能力。这本书适合初学者入门,也适合有一定经验的开发者查阅和提升。

    Java软件技术文档合集

    面向对象可以说是 Java 最重要的特性。Java 语言的设计完全是面向对象的,它不支持类似 C 语言那样的面向过程的程序设计技术。Java 支持静态和动态风格的代码继承及重用。 本资源是Java软件技术文档合集,里面很细...

    JAVA核心技术 高清扫描版

    总之,《JAVA核心技术》涵盖了Java编程的各个方面,无论是基础语法、面向对象特性,还是高级主题如多线程和集合框架,都进行了详尽的阐述。通过阅读此书,读者不仅可以系统学习Java编程,还能提升解决问题和设计复杂...

    JAVA核心技术 卷II:高级特性(原书第8版)

    《JAVA核心技术卷Ⅱ:高级特征》对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例,从而帮助读者充分理解Java语言以及Java类库的相关特性。 《JAVA核心技术卷2:高级特征》适合软件开发人员、高等院校...

    Java技术与应用 Java技术与应用.ppt

    Java的技术特性使其成为广泛应用的选择。首先,Java语言设计简洁,它的语法结构与C++相似,使得C++程序员能够快速上手。同时,Java摒弃了一些可能导致错误的C++特性,如指针和直接内存管理,这提高了代码的安全性和...

    Java核心技术 卷II 高级特性 原书第10版 中文版

    根据提供的文件信息,“Java核心技术 卷II 高级特性 原书第10版 中文版”,我们可以推测这本书主要涵盖了Java高级特性的相关内容。由于实际的书籍内容无法直接访问,我们将基于标题、描述和部分可见的内容来推断并...

    JAVA技术概念图

    【JAVA技术概念图】是一份综合性的学习资料,旨在为初学者和有志于Java开发的程序员提供一个全面了解Java技术生态的概览。这份概念图涵盖了Java在多个关键领域的核心概念和技术,对于构建扎实的Java知识体系至关重要...

    计算机软件JAVA编程特点及技术分析

    #### 三、JAVA编程技术分析 在软件开发过程中,JAVA编程技术的应用极为广泛。这是因为JAVA具有强大的执行能力和优秀的跨平台特性。在实际应用中,JAVA会将源代码转换为二进制的字节码,然后由不同的虚拟机(JVM)...

    ( Java核心技术 卷II 高级特性(原书第9版).zip )PDF 高清版

    《Java核心技术 卷II 高级特性》是Java开发者深入学习和掌握Java平台高级特性的经典之作,原书第9版更是集成了最新的Java技术和发展趋势。这本书详细讲解了Java编程语言的高级特性,旨在帮助程序员提升编程技能,...

    Java技术及其组成

    ### Java技术及其组成 #### 一、Java技术概述 Java技术是一种广泛应用于互联网及嵌入式系统的编程技术。自诞生以来,Java凭借其强大的跨平台能力、安全性以及丰富的类库支持,在众多领域得到了广泛应用。 #### 二...

    Core Java.JAVA核心技术(中文版)

    《Core Java.JAVA核心技术(中文版)》是学习Java编程的重要参考资料,主要涵盖了Java语言的基础以及进阶知识。这本书深入浅出地讲解了Java的核心概念和技术,为读者提供了全面而细致的学习路径。以下是对该书内容的...

    JAVA3D的网络三维技术的设计与实现(源代码+论文+说明).zip

    这种全新的设计使3D技术变得不再繁琐并且可以加入到J2SE、J2EE的整套架构,这些特性保证了Java3D技术强大的扩展性 本文以Java3D为开发平台,利用Java语言强大的网络功能,实现了在网页上对3D动画进行显示和操作。 ...

Global site tag (gtag.js) - Google Analytics