2013-11-21 4 views
2

Я пытаюсь понять процессы низкого уровня, связанные с созданием KeyEvent для нажатой клавиши клавиатуры в java.Как и где работает процесс JVM-процесса?

  1. Как и где Java обрабатывает реальные нажатия клавиш?
  2. Где нажатие клавиши «вводит» JVM?
  3. Какое нажатие клавиши становится KeyEvent?

Мое намерение заключается в том, чтобы понять внутреннюю работу java. В качестве бонуса: Является ли процесс для MouseEvents одинаковым, похожим или совершенно другим?


Я уже потратил некоторое время на копание исходного кода. Поэтому этот вопрос частично направлен на предоставление некоторых точек входа для источника и документов, отличных от «awt» (поскольку awt сам по себе огромен).

Возможно, есть некоторые экзотические пакеты, содержащие классы, которые образуют слой JNI?

+0

Я не думаю, что это действительно часть JVM вообще, но скорее всякая оболочка вокруг используемых вами библиотек Win32. –

+0

Благодарим вас за вход @ Jonathon. Перефразируем часть вопроса, чтобы отразить эту мысль. –

+2

* «Мое намерение заключается в том, чтобы понять внутреннюю работу java.» * - ** Читайте источник Luke! ** Перейдите на сайт OpenJDK, загрузите комплект исходного кода для Java 6 или 7 или 8, распакуйте его и начать читать. (Если у вас есть время задать такие вопросы, у вас есть время, чтобы провести собственное исследование :-)) –

ответ

1

Как и где Java обрабатывает реальные нажатия клавиш? Где нажатие клавиши «вводит» JVM?

Это зависит от операционной среды/среды рабочего стола, на которой работает JVM. Все современные операционные системы обрабатывают связь с самими аппаратными средствами и не позволяют (обычно) разрешать программам прямой доступ к аппаратным средствам (это было раньше для старых систем, таких как MS-DOS).

Таким образом, ОС примет ввод с клавиатуры и отправит ее в программу с фокусом. Если эта программа является JVM, JVM будет получать ввод с клавиатуры через обычный механизм, специфичный для ОС, а затем обрабатывать его внутри.

Какое нажатие клавиши является ключевым элементом?

Когда JVM получает нажатие клавиши, оно обрабатывает его и решает, что должно произойти. Например, если компонент GUI в настоящее время имеет фокус ввода, JVM создаст KeyEvent и отправит его этому компоненту.


Как Стивен C отметил, если вы хотите копать глубже, вы должны будете читать исходный код JDK. Это крупный и сложный программный продукт, поэтому прежде всего сначала сделайте поиск.

Хорошей отправной точкой может быть page for the The Abstract Windowing Toolkit Group, так как AWT («старый» графический интерфейс Java, перед Swing) по-прежнему обрабатывает множество деталей низкого уровня для графического интерфейса.

+0

Этот вопрос на самом деле предназначен для участия в исследовании работа "вы упомянули.Сначала я пытался спуститься вниз, начиная с KeyEvents, но это оказалось безуспешным. Добавьте это к вопросу. –

Смежные вопросы