与其他编程语言相比,为什么Java是安全的?

Rai*_*lam 9 .net java security programming-languages

Java供应商和社区称"Java比其他语言更安全".但我想知道怎么做?

如果我们看一下Java和.Net中的编程,它们看起来很相似.

.net编程中涉及的步骤 单击以了解更多信息

  1. 写.net程序.
  2. 将代码编译为MSIL(编译将源代码转换为Microsoft中间语言(MSIL)并生成所需的元数据).
  3. 将MSIL编译为本机代码(在执行时,实时(JIT)编译器将MSIL转换为本机代码.在编译期间,代码必须通过验证过程,该过程检查MSIL和元数据以查明代码是否可以被确定为类型安全).
  4. 运行代码(公共语言运行库提供了允许执行的基础结构和可在执行期间使用的服务).

java编程中涉及的步骤 单击以了解更多信息

  1. 编写Java程序
  2. 编译Java程序(Java编译器将java源代码转换为.class文件,这是一个字节代码)
  3. 程序通过JVM加载到内存中(JVM将.class文件加载到内存中进行字节代码验证并以机器语言转换.clsss文件)
  4. 执行Java程序(无论我们在Java程序中编写什么操作,JVM都通过解释字节码来执行它们.如果我们谈论旧JVM,它们很慢,一次执行和解释一个字节码.现代JVM使用JIT编译单元我们甚至调用即时编译).

如果我们看两种语言中的步骤几乎相同,那么"为什么Java与其他语言相比更安全?"

tem*_*def 11

Java是一种安全的语言有很多原因,它肯定比某些语言更安全,但我认为它比所有其他语言更安全.

Java具有各种安全功能:

  1. 引用的自动空检查,数组的边界检查,强制转换的验证等,以防止程序产生类型错误.将此与C或C++进行比较,其中这些相同的错误(除少数例外)导致未定义的行为.

  2. 执行前验证字节码.这使得程序无法跳转到未定义的指令,或者尝试对不存在的对象执行操作,或者在指令级别进行类型错误等.将此与C或程序集进行比较,程序可以跳转到错误的指令,或尝试将不存在的参数读取到函数(思考va_args)等.)

  3. 加载新代码时运行时安全性检查.Java运行时的使用SecurityManagerClassLoader使其易于通过调解对系统资源的访问并防止程序在运行时加载或生成任意代码来防止任意代码在计算机上执行.将其与C或C++进行比较,C或C++可以读取和写入任意值,发出任意系统调用,生成和执行任意代码等.

  4. 某些功能的库级安全性.例如,String是不可变的final,因此接收a的函数String可以验证字符串,而不必担心另一个线程更改其值.

这不是Java安全功能的完整列表,但它应该让您了解Java中一些其他语言中没有的设计注意事项.

希望这可以帮助!