1

我对java很陌生,自从我开始学习它以来,我一直在想:java API的类和包做了很多有用的事情,从创建窗口到写入文件。但一开始,API 类只使用语言来完成它们所做的任何事情。

我知道使用该语言,您可以将数据存储在变量中、执行逻辑、创建方法、对象和类等等。但要完成所有“好事”,您需要使用 API 类。但是他们怎么能用语言做这么酷的事情呢?java内置的代码是否指定了如何创建窗口或写入文件?以及如何使用代码向外部事物(例如电机)输出信息?

似乎内置的代码无法处理 API 本身可以完成的所有事情,但 API 是用 java 编写的,因此使用原始语言来完成它所做的事情。

我想我已经表达了我的观点,但这一切如何运作?

4

3 回答 3

3

如果您检查各种 java 类的源代码(例如,在docjar上),您最终会注意到一些方法声明以开头native和未提供实现(检查Thread类)。这就是将控制权传递给一些底层平台特定代码的地方。

于 2012-08-19T06:54:30.653 回答
1

Java 运行时库原生支持许多“很酷的东西”,但是为了高性能访问窗口、文件系统和其他操作系统原生资源,Java 提供了一种称为 Java 原生接口 (JNI) 的机制,它从 JVM 桥接到低级,平台特定的库。

从 Java 的角度来看,桥越过的路标将是native装饰方法声明的关键字。

于 2012-08-19T06:55:04.160 回答
1

API 类旨在为您提供一个干净的 API 进行编程。想想List

然后是履行合同部分的类,例如ArrayListLinkedList,它们都是列表,但具有不同的特征。

需要操作系统帮助的事情,比如写入文件或在屏幕上绘图,都是为了符合操作系统提供的 API 而编写的。这通常取决于平台,由本机代码(通常用 C 编写)调用。Swing - 默认的 Java GUI - 完全用 Java 编写,在操作系统提供的矩形内工作。

在使用带有 JDK 的现代 IDE 时,您始终可以导航到运行时库中的类,并查看它们实际上是如何做到的。它通常比你想象的要简单得多。

于 2012-08-19T06:56:58.887 回答