Java运行时提供了一组供程序使用的标准系统库。这些库在多大程度上类似于操作系统的系统调用,以及它们在多大程度上不同?
答案 0 :(得分:4)
java的一半要点是使它与平台无关,所以它试图做的是提供一个api,无论它下面的操作系统如何都保持不变。
如果操作系统功能不足,Java将添加库代码以补偿它。
如果操作系统的实现没有映射,那么Java最好映射它。
如果新功能变得流行且Java用户需要提供对它的访问,则可以创建一个新库,通过该库可以访问新功能。如果这个库很流行,它将被重新构建并在某些时候添加到Java SDK中
例如,一些并发库的实现变得流行,很快他们就被投票并添加到标准库中。这种情况一直都在发生。
答案 1 :(得分:1)
这显然取决于您运行的操作系统,因为每个操作系统的系统调用通常都不同: - )。
也就是说,我认为Java主要受到Unix惯例的启发(并不是太令人兴奋,因为Sun是Unix供应商),因此一些Java系统库类似于Unix系统调用。
E.g。 java.nio.MappedByteBuffer可能是受到Unix的mmap()调用的启发。但最终大多数操作系统都存在大多数概念,所以你无法真正说出是什么激发了什么。
答案 2 :(得分:0)
Java的一些“低级”功能基本上是围绕某些操作系统的“包装” 系统调用。
我没有看到“比较”两者的客观方式(和理由)。
如果您对此主题感兴趣,可以搜索Java源代码 对于原生关键字,表示某些“隐藏” (主要是操作系统依赖的)功能。
答案 3 :(得分:0)
与原生库相比,Java的标准库通常具有类似的功能集,但存在一些重要的差异。
Listeners
和Runnable
以及其他Java模式,用于在C ++中执行涉及函数指针的操作。因此,任何需要这些功能之一的API在Java中都会与本机操作系统有很大不同。总而言之,Java通常具有提供与本机操作系统类似行为的库,有时提供完全不同的行为,但最好将Java视为一个独立的平台。有时您需要高级性能,例如OpenGL或超高速数据传输,在这种情况下,您需要特定的Java API(Jogl,nio),但大多数情况下您应该将Java评估为自己的东西。