В книге описывается интерфейс Java Native Interface (JNI) - интерфейс взаимодействия языка Java с нативным кодом, написанным на других языках. Она будет полезна программистам на Java, интересующимися вопросами интеграции кода, написанного на С и C++, в Java-приложение; внедрением виртуальной машины Java в С- и С++-приложения; реализация виртуальной машины Java; техническими вопросами организации взаимодействия между различными языками, в том числе имеющими отношение к работе со сборщиком мусора и многопоточности.
Издание предназначено разработчикам на языке Java различной квалификации, желающими использовать в своих программах всю мощь нативного кода, написанного на других языках.
Роль интерфейса JNI.
При установке Java-платформы в вычислительной среде может возникнуть необходимость разрешить Java-приложениям работать непосредственно с native-кодом, написанным на других языках. Программисты стали адаптировать Java-платформу для построения приложений, которые традиционно разрабатывались как на языках программирования С и C++, так и на языке Java. Однако из-за имеющихся наработок Java-приложения будут сосуществовать с кодом С и C++ еще долгое время.
JNI является мощным инструментом, который позволяет воспользоваться преимуществами платформы Java, при этом по-прежнему используя код, написанный на других языках. Будучи частью виртуальной машины Java, интерфейс JNI представляет собой двусторонний интерфейс, который дает возможность Java-приложениям вызывать native-код, и наоборот: native-коду пользоваться возможностями Java. Схема 1.1 иллюстрирует роль интерфейса JNI.
СОДЕРЖАНИЕ.
Предисловие.
Часть I. Введение и учебный материал.
Глава 1. Введение.
1.1. Платформа Java и вычислительная среда.
1.2. Роль интерфейса JNI.
1.3. Последствия использования интерфейса JNI.
1.4. Случаи использования интерфейса JNI.
1.5. Развитие интерфейса JNI.
1.6. Примеры программ.
Глава 2. Приступая к работе.
2.1. Общее представление.
2.2. Объявление native-метода.
2.3. Компиляция класса HelloWorld.
2.4. Создание файла заголовков.
2.5. Написание кода native-метода.
2.6. Компиляция исходного кода на языке С и создание native-библиотеки.
2.7. Запуск программы.
Часть II. Справочное пособие по программированию.
Глава 3. Основные типы, строки и массивы.
3.1. Простой native-метод.
3.1.1. Прототип С-функции, реализующей native-метод.
3.1.2. Аргументы native-метода.
3.1.3. Соответствие типов.
3.2. Обращение к строкам.
3.2.1. Преобразование к native-строкам.
3.2.2. Освобождение ресурсов native-строк.
3.2.3. Создание новых строк.
3.2.4. Другие функции JNI для работы со строками.
3.2.5. Новые JNI-функции для работы со строками в Java 2 SDK 1.2.
3.2.6. Перечень JNI-функций для работы со строками.
3.2.7. Выбор между функциями строк.
3.3. Обращение к массивам.
3.3.1. Обращение к массивам в языке С.
3.3.2. Обращение к массивам простых типов.
3.3.3. Перечень JNI-функций для работы с примитивными массивами.
3.3.4. Выбор между функциями примитивного массива.
3.3.5. Обращение к массивам объектов.
Глава 4. Поля и методы.
4.1. Обращение к полям.
4.1.1. Алгоритм обращения к нолю объекта.
4.1.2. Дескрипторы поля.
4.1.3. Обращение к статическим полям.
4.2. Вызов методов.
4.2.1. Вызов методов объекта.
4.2.2. Формирование дескриптора метода.
4.2.3. Обращение к статическим методам.
4.2.4. Вызов методов суперкласса.
4.3. Вызов конструкторов.
4.4. Кэширование полей и идентификаторов методов.
4.4.1. Кэширование во время использования.
4.4.2. Кэширование в блоке статической инициализации класса.
4.4.3. Сравнение двух способов кэширования идентификаторов.
4.5. Эффективность использования JNI при обращении к полям и методам.
Глава 5. Локальные и глобальные ссылки.
5.1. Локальные и глобальные ссылки.
5.1.1. Локальные ссылки.
5.1.2. Глобальные ссылки.
5.1.3. Слабые глобальные ссылки.
5.1.4. Сравнительный анализ.
5.2. Освобождение ссылок.
5.2.1. Освобождение локальных ссылок.
5.2.2. Управление локальными ссылками в Java 2 SDK 1.2.
5.2.3. Освобождение глобальных ссылок.
5.3. Правила управления ссылками.
Глава 6. Исключения.
6.1. Общее представление.
6.1.1. Кэширование и вызов исключений в native-коде.
6.1.2. Вспомогательные функции.
6.2. Правильная обработка исключений.
6.2.1. Проверка исключений.
6.2.2. Обработка исключений.
6.2.3. Исключения во вспомогательных функциях.
Глава 7. Интерфейс вызова.
7.1. Создание виртуальной машины Java.
7.2. Компоновка native-приложений с виртуальной машиной Java.
7.2.1. Компоновка с определенной виртуальной машиной Java.
7.2.2. Компоновка с неизвестными виртуальными машинами.
7.3. Подключение native-потоков.
Глава 8. Дополнительные функции интерфейса JNI.
8.1. Интерфейс JNI и потоки.
8.1.1. Ограничения.
8.1.2. Вход и выход из монитора.
8.1.3. Реализация методов wait и notify в интерфейсе JNI.
8.1.4. Получение указателя JNIHnv в произвольных контекстах.
8.1.5. Соответствие с моделями потоков.
8.2. Написание кода с многоязычной поддержкой.
8.2.1. Создание jstrings из native-строк.
8.2.2. Преобразование jstrings в native-строки.
8.3. Регистрация native-методов.
8.4. Обработчики загрузки и выгрузки библиотеки.
8.4.1. Обработчик JNIOn Load.
8.4.2. Обработчик JNI On Unload.
8.5. Поддержка отражения.
8.6. JNI-программирование в языке C++.
Глава 9. Использование существующих native-библиотек.
9.1. Преобразование «один к одному».
9.2. Общие заглушки.
9.3. Сравнение методов создания оболочек для native-функций.
9.4. Реализация общих заглушек.
9.4.1. Класс CPointer.
9.4.2. Класс CMalloc.
9.4.3. Класс CFunction.
9.5. Peer-классы.
9.5.1. Применение peer-классов в Java-платформе.
9.5.2. Освобождение памяти native-структур.
9.5.3. Обратные указатели на реег-объекты.
Глава 10. Проблемные и слабые места.
10.1. Проверка ошибок.
10.2. Передача недействительных аргументов JNI-функциям.
10.3. Отличие jelass от jobject.
10.4. Приведение аргументов к типу jboolean.
10.5. Границы между Java-приложением и native-кодом.
10.6. Отличие идентификаторов от ссылок.
10.7. Кэширование идентификаторов нолей и методов.
10.8. Окончания строк Unicode.
10.9. Нарушение правил управления доступом.
10.10. Игнорирование многоязычной поддержки.
10.11. Сохранение ресурсов виртуальной машины.
10.12. Чрезмерное создан нелокальных ссылок.
10.13. Использование недействительных локальных ссылок.
10.14. Использование указателя JNIKnv в потоках.
10.15. Несоответствие модели потоков.
Часть III. Спецификация.
Глава 11. Обзор проекта JNI.
11.1. Цели проекта JNI.
11.2. Загрузка native-библиотек.
11.2.1. Загрузчик классов.
11.2.2. Загрузчики классов и native-библиотеки.
11.2.3. Поиск native-библиотек.
11.2.4. Ограничение безопасности типов.
11.2.5. Выгрузка native-библиотек.
11.3. Связывание native-методов.
11.4. Соглашения о вызовах.
11.5. Указатель интерфейса JNIEnv.
11.5.1. Структура интерфейсного указателя JNIHnv.
11.5.2. Преимущества интерфейсного указателя.
11.6. Передача данных.
11.6.1. Глобальные и локальные ссылки.
11.6.2. Реализация локальных ссылок.
11.6.3. Слабые глобальные ссылки.
11.7. Обращение к объектам.
11.7.1. Обращение к примитивным массивам.
11.7.2. Поля и методы.
11.8. Ошибки и исключения.
11.8.1. Отсутствие проверок программных ошибок.
11.8.2. Исключения виртуальной машины Java.
11.8.3. Асинхронные исключения.
Глава 12. Типы интерфейса JNI.
12.1. Примитивные и ссылочные типы.
12.1.1. Примитивные типы.
12.1.2. Ссылочные типы.
12.1.3. Тип jvalue.
12.2. Идентификаторы полей и методов.
12.3. Форматы строк.
12.3.1. Строки UTF-8.
12.3.2. Дескрипторы классов.
12.3.3. Дескрипторы полей.
12.3.4. Дескрипторы методов.
12.4. Константы.
Глава 13. Функции интерфейса JNI.
13.1. Краткий обзор JNI-функций.
13.1.1.11епосредствснно экспортируемые функции интерфейса вызовов.
13.1.2. Интерфейс JavaVM.
13.1.3. Функции в native-библиотеках.
13.1.4. Интерфейс JNIEnv.
13.2. Спецификация JNI-функций.
Алфавитный указатель.
Купить .
По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.
По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «Литрес», и потом ее скачать на сайте Литреса.
По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.
On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.
Хештеги: #учебник по программированию :: #программирование :: #Лиэнг
Смотрите также учебники, книги и учебные материалы:
- C# 7.0 All-in-One For Dummies, Mueller J.P., Sempf B., Sphar C., 2018
- Beginning Programming with Python For Dummies, Mueller J.P., 2018
- Параллельное программирование, Качко Е.Г., 2011
- Основы программирования на языке C++, учебно-методическое пособие, Тонхоноева А.А., 2015
- Машинное обучение с использованием Python, Сборник рецептов, Крис Э., 2019
- Основы языка гипертекстовой разметки HTML и CSS, Наместников С.М., 2014
- Как устроен JavaScript, Дуглас К., 2019
- Java ЕЕ, паттерны проектирования для профессионалов, Йенер М., Фидом А., 2016