`

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版 开发基础+高级特性 英文原版

    此为英文版本,非中文版本,带目录。 伴随着Java的成长,《Java核心技术》从第1版到第11版一路走来,得到了广大Java程序设计人员的青睐,...美国圣何塞州立大学计算机科学系教授、Java技术的坚定倡导者、国际计算机协会

    Java核心技术(卷2):高级特性.pdf

    《JAVA核心技术卷2:高级特征》是Java技术权威指南,全面覆盖Java...《JAVA核心技术卷Ⅱ:高级特征》对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例,从而帮助读者充分理解Java语言以及Java类库的相关特性

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

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

    Java软件技术文档合集

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

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

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

    JAVA核心技术第八版(上下卷)全部源码

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

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

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

    java系统软件技术架构设计方案.docx

    Java技术由于其跨平台特性,面向对象特性,安全特性等。 J2EE把数据库访问,Java组件和WE哉术等有机地集成在一起,使 之特别适合于各类医学教学机构复杂的大中型应用, 更好支持B/S结 构,保证系统具有很好的可扩展...

    java核心技术卷二

    java核心技术卷二高级特性,原书第10版,中文扫描版。

    JAVA核心技术 高清扫描版

    JAVA核心技术 高清扫描版

    JAVA2核心技术第7版卷2高级特性-中文版

    JAVA2核心技术第7版卷2高级特性-中文版 内容简介  本书是java 2技术权威指南,全面覆盖java 2技术的高级主题,包括:多线程、集合框架、网络api、数据库编程、分布式对象等,深入探究了swing、java 2d api、...

    java手册中英文java8,java9手册

    在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对Java语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多...

    Java核心技术 卷I + 卷II(第9版)(中文带目录)

    《Java核心技术》出版以来一直畅销不衰,深受读者青睐,每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,而且每一版都重新改写了的部分内容,以便适应Java的最新特性。本版也不例外,它反遇了Java SE6的新特性...

    写给大忙人看的java核心技术

    Horstmann的全新力作,以关键的核心技术为着眼点,以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java多年的真知灼见蕴藏于书中,既扎实覆盖Java编程的基础知识,更...

    Java核心技术 卷1

    《Java核心技术》出版以来一直畅销不衰,深受读者青睐,每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,而且每一版都重新改写了的部分内容,以便适应Java的最新特性。本版也不例外,它反遇了Java SE6的新特性...

    java 核心技术第九版卷一卷二 英文版

    《Java核心技术》出版以来一直畅销不衰,深受读者青睐,每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,而且每一版都重新改写了的部分内容,以便适应Java的最新特性。本版也不例外,它反遇了Java SE6的新特性...

    java核心技术卷2 高级特性

    Java技术权威指南,全面覆盖Java技术的高级主题,包括流与文件、...《JAVA核心技术卷Ⅱ:高级特征》对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例,从而帮助读者充分理解Java语言以及Java类库的相关特性

    core Java 11 Edition Java核心技术 卷一卷二

    core Java 11 Edition Java核心技术 卷一和卷二,学习Java必不可少的书籍。

    Java核心技术卷Ⅱ高级特性 原书第8版.pdf

    Java核心技术卷Ⅱ高级特性 原书第8版.pdf

Global site tag (gtag.js) - Google Analytics