java安全性语言
java通过所谓的沙箱安全模型保证了其安全性,以下我们就来看看java提供的安全沙箱机制。
虚拟机通过使用不同的类装载器装载可靠的包和不可靠的包。即所谓的双亲委派模式:在某个特定的类装载器试图以经常使用方式装载类型之前,它会先默认将这个任务“委派”给它的双亲,这个双亲再依次请求自己的双亲来装载这个类型。这个委派的过程一直向上继续,直到达到启动类载入器(boostrp classloader)。假设一个类载入器的双亲类载入器有能力装载这个类型,则这个类载入器返回这个类型,否则这个类装载器试图自己来装载这个类型。
好的java编译器不应该产生畸形的class文件,可是java虚拟机并不知道某个特定的class文件的来源,所以java虚拟机的实现必须有个class文件检验器,文件检验器能够调用class文件以确保这些定义的类型能够安全的使用。
第一趟扫描是在类被装载时进行的,在这次扫描中,class文件检验器检查这个class文件内部结构。以保证它能够被安全地编译。
第二和第三趟扫描是在连接过程进行的,在这两次扫描中,class文件检验器确认类型数据遵从java编程语言的语义。包括检验它所包括的全部字节码的完整性。第四趟扫描是在进行动态链接的过程中解析符号引用时进行的,在这次扫描中。class文件检验器确认被引用的类、字段以及方法确实存在。
第二、第三和第四趟扫描是在方法区中由实现决定的数据结构上进行的。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hkamo=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
除了对符号引用的检验(class文件检查的第四趟扫描)。java虚拟机在执行字节码时
这些机制大多数是java类型安全的基础:
详细能够參考java.lang.SecurityManager类别。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
java安全性语言的更多相关文章
- Notes 20180506 : Java程序设计语言概述
2.Java程序设计语言概述 如果对于开发语言的排行榜有所关注的话,那么会发现很长一段时间以来Java都是位居榜首的高级开发语言,作为一个Java开发者,为此感到骄傲的同时也深感忧虑,骄傲的是自己接触 ...
- java笔记--java的语言特性
java的语言特性 1.简单性:例如:java不再支持多继承,而c++是支持多继承的,多继承比较复杂. c++中有指针,java中屏蔽了指针的概念.所以相对来说比较简单. //注:java语言的底层是 ...
- MySQL安全性语言
文章为作者原创,未经许可,禁止转载. -Sun Yat-sen University 冯兴伟 实验2:安全性语言 安全性实验包含两个实验项目,其中1个为必修,1个为选修.自主存取控制实验为设计型 ...
- JAVA在语言级支持多线程
进程:任务 任务并发执行是一个宏观概念,微观上是串行的. 进程的调度是有OS负责的(有的系统为独占式,有的系统为共享式,根据重要性,进程有优先级). 由OS将时间分为若干个时间片. JAVA在语言级支 ...
- Java程序语言的后门-反射机制
在文章JAVA设计模式-动态代理(Proxy)示例及说明和JAVA设计模式-动态代理(Proxy)源码分析都提到了反射这个概念. // 通过反射机制,通知力宏做事情 method.invoke(obj ...
- Java的语言特点详解
1)简单性:java从C++简化而来,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的.java还剔除了C++操作符过载和指针操作. 2)面向对象:java是一个面向对象的语 ...
- java安全性-引用-分层-解耦
Java不支持指针, 一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用 "特洛伊"木马等欺骗手段访问对象的私有成员 访问一个对象必须通过这个对象的引用 java ...
- 有 a - b < c 对Java安全性的思考
软件工程中,不论使用哪种开发语言,安全性一直是一个非常棘手却又重要的问题.安全性是软件开发领域永远的主题之一,而且随着互联网的蜂拥发展而带动的新技术的兴起与革命(比如近几年火起来的node.js,py ...
- C/C++/Java/C#语言的基本类型
C语言的基本类型有:char, short ,int ,long ,float ,double 一共6种基本类型. C++语言有:bool, char ,wchar_t, short, int , l ...
随机推荐
- TestThreadPoolExecutor.java
package ; import java.io.IOException;import java.io.InputStream;import java.util.List;impo ...
- Eclipse关闭检查
有没有发现每次操作Eclipse过后,都会有build Workspace的操作一直在后台执行,JS校验一直validate,非常卡非常受不了有木有? 有木有?以下是我个人成功的步骤,曾经试过非常多次 ...
- ActiveMQ相关背景(转)
概述 介绍中间件.MOM.JMS.ActiveMQ,及相互的关系. 中间件 由于业务的不同.技术的发展.硬件和软件的选择有所差别,导致了异构组件或应用并存的局面.要使这些异构的组件协同工作,一个有效的 ...
- Android build-tools升级到23.0.0_rc1无法解决编译后的问题
背景 作为项目要改变android studio,它采取了.他们主动向我,结果下载了最新的build-tools 23.0.0_rc1,然后,当我再次使用eclipse不了了.git reset了n次 ...
- 【原创】leetCodeOj --- Candy 解题报告
题目地址: https://leetcode.com/problems/candy/ 题目内容: Candy Total Accepted: 43150 Total Submissions: 2038 ...
- EHCache的使用
在开发高并发量,高性能的网站应用系统时,缓存Cache起到了非常重要的作用.本文主要介绍EHCache的使用,以及使用EHCache的实践经验.笔者使用过多种基于Java的开源Cache组件,其中包括 ...
- hdu 2049 别easy列(4)——测试新郎
问题: 使用double定义的数量和long数定义19-20出现分歧,原因不明.求大公社. 这个问题需要用long,否则,只是通过,这应该纠结了很久. 问题是乘以一个交错的思想相结合. 不easy系列 ...
- MYSQL,innodb_buffer_pool_size内存分配
为MYSQL.innodb_buffer_pool_size=8G.MySQL一起动就会将占用掉8G内存(觉得TOP能够看到内存被使用了8G),可是近期才细致研究一下.原来不是这种(可能自己对Linu ...
- 生活中的大数据 hadoop
大数据和我有关吗?大数据就是大量的数据吗?只有互联网公司才有大数据吗?想盘活大数据必须买昂贵的软硬件吗?大数据怎么存储计算?大数据,这个时下最火热的互联网词语,你了解多少呢?
- ServiceStack.Hello——跨平台.net REST api服务搭建
ServiceStack.Hello--跨平台.net REST api服务搭建 自己创建: https://github.com/ServiceStack/ServiceStack/wiki/Cre ...