Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java桌面应用程序的限制?_Java_Security_Desktop Application_Sandbox_Restriction - Fatal编程技术网

Java桌面应用程序的限制?

Java桌面应用程序的限制?,java,security,desktop-application,sandbox,restriction,Java,Security,Desktop Application,Sandbox,Restriction,我来自C/C++背景,现在做很多C#东西 最近,我开始对使用Android SDK进行Java项目感兴趣 我知道Java应用程序运行在沙箱中,这会限制它们对系统的访问 在桌面/服务器应用程序环境中,哪些内容受到限制 桌面和服务器应用程序通常在禁用安全性的情况下运行。但是,Java和JVM仍然有一个健壮的类型系统,因此您不能例如强制转换为对象创建时没有使用的类型,不能访问释放的内存,也不能从缓冲区的末尾运行。Java应用程序在沙箱中的情况与.NET应用程序在沙箱中的情况类似。它们都在各自的虚拟机上

我来自C/C++背景,现在做很多C#东西

最近,我开始对使用Android SDK进行Java项目感兴趣

我知道Java应用程序运行在沙箱中,这会限制它们对系统的访问


在桌面/服务器应用程序环境中,哪些内容受到限制

桌面和服务器应用程序通常在禁用安全性的情况下运行。但是,Java和JVM仍然有一个健壮的类型系统,因此您不能例如强制转换为对象创建时没有使用的类型,不能访问释放的内存,也不能从缓冲区的末尾运行。

Java应用程序在沙箱中的情况与.NET应用程序在沙箱中的情况类似。它们都在各自的虚拟机上运行,并且对于它们可以做什么有一些限制,但在大多数情况下,它们都可以访问系统,包括通过某些调用访问本机代码

您可能正在考虑在浏览器中运行的,并且通常位于安全沙箱中,该沙箱阻止对系统资源(如本地文件)的访问。(可以通过专门授予某些小程序对系统的访问权限来规避此限制。)


这里有一个关于for applet from的部分,其中包括对applet的限制列表。

我认为您可能会看到的主要限制是,如果需要,可以方便地使用本机系统API,例如,如果您需要使用java的user32或kernel32 API,我认为这是可能的,然而,这不是一件容易的事情,然而在C语言中,这是一件相当容易的事情

此外,如果您有一些遗留的C/C++dll,您仍然可以在C#应用程序中使用它们,而在java中仍然很难做到,特别是在最坏的情况下,当您的本机代码api必须使用指针时,您可以在C#应用程序中使用不安全模式来传递指针并在堆栈上分配固定内存。。。等等


但是如上所述,Java&C通常都有相同的限制,特别是当您的目标是独立的平台时。

对于普通桌面和服务器应用程序,这些限制与沙盒概念无关(尽管您可以使用它对用户提交的代码等应用非常细粒度的限制)但是Java的平台无关性。基本上,操作系统特定的东西和硬件访问通常不能在纯JAVA中完成,除非API库专门处理

例如:

  • Windows注册表
  • Windows系统托盘
  • 蓝牙
  • 无线局域网配置

只是吹毛求疵,在Java 6中,您实际上可以访问系统托盘:但您的基本观点是正确的。