Java 桌面应用程序的局限性?
-
13-09-2019 - |
题
我有 C/C++ 背景,现在做很多 C# 的工作。
最近,自从使用了 Android SDK 以来,我对用 Java 做一些项目产生了兴趣。
我知道 Java 应用程序在沙箱中运行,这会限制它们对系统的访问。
在桌面/服务器应用程序环境中哪些内容受到限制?
解决方案
对于普通的桌面和服务器应用程序,这些限制与沙箱概念无关(尽管您可以使用它来应用非常细粒度的限制,例如用户提交的代码),但是 Java 的平台无关性。基本上,特定于操作系统的内容和硬件访问通常无法在纯 JAVA 中完成,除非 API 库专门解决。
例子有:
- Windows注册表
- Windows系统托盘
- 蓝牙
- 无线网络配置
其他提示
典型台式机和服务器应用程序在禁用安全运行。但是,Java和JVM仍然具有坚固的类型的系统,所以可以不例如转换为一个对象不是用创建类型,不能访问已释放的内存,并且不能流掉缓冲器的末尾。
我想你可能会看到的主要限制,是能够为 容易的使用本地系统,如果API的你需要的,例如,如果你需要使用一个USER32或从Java API KERNEL32我认为这是可能的,但是这不是一件容易的事做,但在C#是相当容易的事。
此外,如果你有一些传统的C / C ++ DLL的,你仍然可以使用他们在一个C#应用程序,而在Java仍难尤其是做,在最坏的情况下,当你的本机代码API已经使用指针,你可以使用在C#应用不安全模式传递指针和在栈上分配固定存储器...等
,但高于Java和C#一般如上所述是非常有特别是如果您靶向相同的限制存在平台无关的。
不隶属于 StackOverflow