与 C 相比的 Java 沙盒环境

标签 java c sandbox

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




10年前关闭。




Java is designed to run in a “Sandboxed” environment in contrast to C which is not constrained. Discuss the implications of this from a security point of view.



我对这个概念做了一些研究。我发现如果它是运行 Java 的沙盒,它会通过一个更受控制的门从内存的不同部分检索信息。但是,在 C 中,它不是不受控制的。

有人可以解释一下我还有什么可以补充的吗?

编辑:

这是我添加的内容:

Java 编程语言是一种面向对象的语言,专门设计为具有尽可能少的实现依赖关系。 Java 是一次编写多次部署的模型。它表面上类似于 C/C++/C#,但具有不同的底层对象模型。 Java有很多版本,例如Java标准版(Java SE)、Java移动版(Java ME)、Java企业版(Java EE)等。

用java编写的应用程序被编译成Java字节码,它是一种独立于任何平台的中间语言。因此,编译器可以在多平台上工作。

编译和执行的虚拟机模型通过在 Java 虚拟机 (JVM) 上运行已编译的代码(Java 字节码)来工作。 Java 虚拟机解释 Java 字节码并提供可以执行 Java 字节码的环境。所有平台上的所有 JVM 都使用相同的字节码,这让 Java 可以被描述为“一次编写,随处运行”。

由于以下原因,这比生成 native 代码的编译器更好:
  • 移动设备有各种形状和尺寸,并具有不同的处理器速度和架构。因此,一旦在设备上实现了 JVM,编译和执行的虚拟机模型允许所有 Java 应用程序在各种不同的移动平台上运行。
  • 虚拟机编译模式提供了一个独立于平台的编程环境,抽象出底层硬件或操作系统的细节,并允许程序在任何平台上以相同的方式执行。
  • 通过使用即时编译(一种提高计算机程序运行时性能的方法)可以实现与编译型编程语言相媲美的性能。
  • 从字节码编译到机器码比从源代码编译要快得多。
  • 与 native 代码不同,部署的字节码是可移植的。
  • 由于运行时可以控制编译,就像解释的字节码一样,它可以在安全的沙箱中运行。从字节码到机器码的编译器更容易编写,因为可移植的字节码编译器已经完成了很多工作。
  • 最佳答案

    不要混合语言和虚拟化。

    例如,Google 的 Native Client (NaCL) 是用于 C/C++(以及其他所有程序)程序的沙盒环境。

    关于与 C 相比的 Java 沙盒环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8528223/

    相关文章:

    java - 我需要将 admob 智能横幅放在应用程序底部(如果可能,使用 XML)

    java - 模拟多个用户输入junit

    c# - CPU 使用率和 CPU 速度

    c - MPI_Type_indexed 内存布局

    javascript - Node JS - 在新进程中执行一串代码

    C++ - 用户空间代码中的二级保护代码

    java - 如何在Java中使用For循环询问用户输入

    java - 使用 itext java 库复制时,pdf 文件大小大大增加

    c - 获取 N 个字符串的输入时出现 fgets()/gets() 问题。在初始位置不接受输入

    hadoop - 启动后如何在沙箱上启动h2o