作为Java语言的重要特点之一,安全性是Java与生俱来的,上一篇文章中已经说过,Java语言的出现,就是用来编写消费类家用电子产品软件的语言,从一开始它就被设计成了写高可靠和稳健软件,并消除了某些编程错误,使得用它写可靠软件相当容易。Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。也就是说,从Java语言的诞生起,就被赋予了安全性的特点。
Java没有指针,这就使程序员无法得到隐蔽起来的内幕和伪造指针去指向存贮器。尤为重要的一点是Java编译程序不处理存贮安排决策,程序员不能通过查看声明去猜测类(关于类,前面的文章中已陈述)的实际存贮安排,编译的Java代码中的存储应用在运行时,由Java解释程序决定实际存储地址。从而可见,Java的存储分配模型是它防御恶意代码的主要方法之一。
Java运行系统使用字节码验证过程来保证装载到网络上的代码不违背任何Java语言限制。这个安全机制部分包含了类如何从网上装在。比如,装载的类是放在分开的名字空间的而不是局部类,这就从根本上有了预防一些恶意小程序用他自己的版本来代替标准Java类。
正是基于以上两点,赋予了Java语言的安全性。就是Java的存储不由编译程序决策安排,而是由解释程序来决定,也就是说Java为Java程序提供了一个专用的运行空间,在这个空间里Java程序可做任何事情,除了这个边界就不能有任何操作了。这里,就有一个类载入程序体系即JVM(Java虚拟机),其作用主要是类载入程序,负责输入哪些定义运行程序的类和结构的二进制数据。JVM有非常灵活的类载入结构,它允许Java应用程序自己定义装载的方式。类载入程序结构时,给不同的类载入程序装入的类,提供了受保护的命名空间,这就组织了破坏性的代码干扰正常的代码,保障了Java语言的安全性。
Java语言的安全性主要体现在以下几方面:一是严格遵循面向对象(关于“面向对象”前面的文章中已陈述)的规范,即封装了数据细节,只提供接口给用户,增加了数据级的安全性;二是无指针运算,增加了内存级的运算;三是数组边界检查,有效防止了缓存溢出等安全漏洞;四是强制类型转换,使非同类型的对象之间不能进行转换;五是语言对线程安全的支持;六是通过编译器、检验器、类装载器自动建立安全策略。Java语言的重要特点之一Java语言的重要特点之一Java语言的重要特点之一Java语言的重要特点之一Java语言的重要特点之一Java语言的重要特点之一Java语言的重要特点之一Java语言的重要特点之一Java语言的重要特点之一Java语言的重要特点之一Java语言的重要特点之一