Где я могу найти подробную информацию о том, как AWT взаимодействует с родной ОС? - PullRequest
7 голосов
/ 17 февраля 2012

Я искал подробную информацию об основах пакета AWT. В частности, как он взаимодействует изначально с хост-ОС для создания Windows и их содержимого.

Может кто-нибудь указать мне на такую ​​документацию или предоставить какую-либо другую информацию?

Ответы [ 5 ]

5 голосов
/ 25 февраля 2012

Исходный код OpenJDK - это путь.Вам просто нужно попасть в нужную папку.Внутри вы можете увидеть код, подобный следующему:

checkbox = new AwtCheckbox();
...
checkbox->CreateHWnd(env, labelStr, style, exStyle,
         x, y, width, height,
         awtParent->GetHWnd(),
         reinterpret_cast<HMENU>(static_cast<INT_PTR>(
     awtParent->CreateControlID())),
         ::GetSysColor(COLOR_WINDOWTEXT),
         ::GetSysColor(COLOR_BTNFACE),
         peer);

CreateHWnd Функция находится в файле awt_Component.cpp, где она вызывает функцию CreateWindowEx.

4 голосов
/ 26 февраля 2012

Basic: Большинство библиотек классов GUI в C ++ зависят от платформы не только из-за разного аппаратного обеспечения, но и из-за тонких различий между «внешним видом» различных операционных систем Windows.Java Abstract Window Toolkit предоставляет кроссплатформенную библиотеку, которая стремится соблюдать соглашения о взглядах и ощущениях различных платформ ОС.

            Toolkit ------------------------------------------------ AWT
       --------|---------
   Button               List                                         JVM
  ------|-------------|--------------------------------------------------
  Button Peer     List Peer                       Native GUI (Windows, Mac, X) 

Подробнее о Программирование событий Java GUI

AWT предоставляет два уровня API:

  • Общий интерфейс между Java и собственной системой , используемой для создания окон, события и менеджеры по расположению.Этот API лежит в основе программирования Java GUI, а также используется Swing и Java 2D.Это содержит:

    1. Интерфейс между собственной оконной системой и приложением Java;
    2. Ядро подсистемы событий GUI;
    3. Несколько менеджеров раскладки;
    4. Интерфейс для устройств ввода, таких как мышь и клавиатура;а также
    5. A java.awt.datatransfer пакет для использования с буфером обмена и перетаскиванием.
  • Базовый набор графических виджетовтакие как кнопки, текстовые поля и меню.Он также предоставляет собственный интерфейс AWT , который позволяет библиотекам рендеринга, скомпилированным в собственный код, рисовать непосредственно на поверхности рисования объекта AWT Canvas.

AWT также делает доступными некоторые приложения более высокого уровня, такие как:Доступ к системному трею в поддерживающих системах;и Возможность запуска некоторых приложений для настольных компьютеров, таких как веб-браузеры и почтовые клиенты, из приложения Java.Чтобы получить исходный код классов Native OpenJDK AWT, используйте ссылку ниже

jdk6 / jdk6-gate / jdk / src / windows / native / sun / jdk6 / jdk6-gate / jdk / src / windows / native / sun / windows / (классы Windows-AWT-Native).

OpenJDK (GPL)

  • Sun объявила в 2006 году, что Java станет программным обеспечением с открытым исходным кодом.
  • Выпущен полный исходный код библиотеки классов Java под GPL 8 мая 2007 года,
  • 11 октября 2010 года IBM, безусловно крупнейший участник проекта Apache Harmony, решила присоединиться к Oracle в проекте OpenJDK, фактически перенеся свои усилия с Harmony на OpenJDK.
  • 11 январяВ 2011 году на OpenJDK был создан проект Mac OS X Port, и Apple сделала первый публичный вклад кода в проект.Первоначальный вклад Apple был основан на порте OpenJDK BSD ( OpenJDK ™ 6 Source Release ).

Ссылка:

[ Репозитории OpenJDK .]

Открыть jdk6 / jdk6-gate / jdk / src / share / classes / java / awt / (Пример исходного кода пакета AWT)

Основной OpenJDK проект , основанный на JDK 7

Вы можете узнать об особенностях OpenJDK здесь

Caciocavallo , Проект, который предоставляет Java API на основе OpenJDK для упрощения реализации AWT на новых системах. В проекте успешно реализованы виджеты AWT с использованием Java2D.[OpenJDK Список рассылки .]

Прочитайте Документация AWT , чтобы получить четкие знания о его реализации.

Fallow awt-dev Списки рассылки , чтобы принять участие.

2 голосов
/ 17 февраля 2012

Это деталь реализации. Стандарт де-факто будет таким, как Oracle это реализовал. Если вы действительно хотите это знать, взгляните на исходный код. Его можно найти на http://openjdk.java.net/. Ссылки находятся в левом столбце под окном поиска. Соответствующие классы должны быть в пакете sun.awt.

1 голос
/ 25 февраля 2012

Ну, есть PDF (упоминается ниже) .... но для меня это довольно сложно понять.Но это может быть полезно для вас.

Как Java-программы взаимодействуют с виртуальными машинами на микроархитектурном уровне.

0 голосов
/ 22 февраля 2012

Awt делает это, используя native методы.Это Java-методы, которые ссылаются на методы на родном языке в отдельном файле.Таким образом, по сути, если вы используете окна и хотите открыть окно, java будет использовать C ++ для открытия окна.

...