Assembler для Java
Оценка целесообразности применения низкоуровневого машинного кода совместно с высокоуровневым языком программирования. Рассмотрение возможности произвести вставку ассемблерного кода в языке Java. Цели совмещения Java и ассемблера. Java Native Interface.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 15.02.2019 |
Размер файла | 15,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ASSEMBLER ДЛЯ JAVA
Абазов Александр Александрович
Абрамова Оксана Фёдоровна
В настоящее время язык программирования Java имеет большую популярность среди программистов. Язык активно развивается, появляются новые функции и возможности, увеличивающие производительность платформы. В связи с этим следует рассмотреть возможность взаимодействия java и низкоуровневого машинного кода, с целью оптимизации реализуемых программных продуктов.
Для того чтобы разобраться во взаимодействии java и ассемблера, нужно понимать принципы, лежащие в основе этих двух языков программирования. Java программы запускаются на специальной виртуальной java-машине, что позволяет создавать кроссплатформенные и безопасные программы. Преимуществом же ассемблера является низкоуровневый доступ к аппаратуре, позволяющий писать быстродействующие, занимающие малое количество памяти, программы. Разумеется, в данном случае программный код будет сильно зависеть от целевой платформы.
Устройство Java приложений
Как было указано выше, для запуска Java приложений требуется специальная Java машина, способная исполнять байт-код java. Из исходного текста Java-программы компилятором Java создается байт-код, который в свою очередь исполняется на Java Virtual Machine. Во многих java машинах совместно с интерпретатором байт-кода для повышения быстродействия используется JIT-компиляция часто исполняемых частей байт-кода в машинный код.
Цели совмещения java и ассемблера
Использование ассемблера совместно с языками высокого уровня несет в себе несколько очевидных преимуществ:
• Оптимизация.
С целью оптимизации код, реализующий наиболее критичные в отношении производительности части алгоритма, пишется вручную на ассемблере. Это позволяет программисту в полной мере использовать свою изобретательность и мощности вычислительной машины, не ограничиваться конструкциями компилятора.
• Получение доступа к специфичным процессорным инструкциям.
Некоторые процессоры поддерживают специальные инструкции, такие как test-and-set и сравнение с обменом-- инструкции, которые могут быть использованы для реализации примитивов синхронизации и блокировок. Подавляющее большинство современных процессоров имеют идентичные или схожие инструкции, так как без них нельзя обойтись при реализации многозадачности.
• Системные вызовы.
Так как языки программирования высокого уровня довольно редко предоставляют прямую возможность делать системные вызовы, для этих целей используется ассемблерный код
Допустим существует проект, написанный на java и с течением времени ставший требовать оптимизации. Или же требуется написать программу, функционал которой в подавляющем большинстве случаев идеально подходит под предоставляемые java возможности, но требующий оптимизации в некоторых немногочисленных узких местах.
Java Native Interface
В большинстве популярных высокоуровневых языков программирования можно было бы воспользоваться ассемблерными вставками. Но в java у нас нет возможности вставить inline-функцию с машинным кодом. Одним из способов обойти данную проблему является Java Native Interface.
Java Native Interface -- стандартный механизм для запуска кода под управлением виртуальной машины Java, который написан на Ассемблере или С/С++ и скомпонован в виде динамических библиотек, что позволяет не использовать статическое связывание. Это дает возможность вызывать подпрограммы, написанные на ассемблере из программ на Java, и наоборот.
При помощи этого механизма появляется возможность взаимодействия байт-кода Java с системным или прикладным платформенно-ориентированным кодом, запущенным непосредственно под управлением различных операционных систем.
Java программы рассчитаны на переносимость и безопасность, а не на быстродействие и экономию памяти, тем более что код, сформированный java компилятором исполняется не напрямую, а на виртуальной машине. В связи с этим ясно прослеживается проблема во взаимодействии высокоуровневого Java и низкоуровневого ассемблера. Но все же при потребности запустить машинный код из java программ для оптимизации или получения доступа к возможностям, закрытым для высокоуровневых языков, существует ряд инструментов, одним из которых является Java Native Interface.
язык программирование ассемблерный код
Библиографические ссылки
1. Абрамова О.Ф. Обзор алгоритмов масштабирования растровой графики [Электронный ресурс] / О.Ф. Абрамова, А.Е. Иванов, А.Н. Инкин // European Student Scientific Journal: электрон. науч. журнал / РАЕ. - 2016. - № 2
2. Рыбанов А.А. Анализ существующего программного обеспечения в области учёта ГСМ [Электронный ресурс] / А.А. Рыбанов, И.А. Возжин // Форум молодых учёных: междунар. науч.-практ. периодическое сетевое издание. - 2017. - № 5
3. Лясин, Д.Н. Объектно-ориентированный анализ и проектирование программных систем: учеб. пособ.(гриф). Доп. УМО вузов по университетскому политехническому образованию / Д.Н. Лясин, О.Ф. Абрамова; ВПИ (филиал) ВолгГТУ. - Волгоград, 2015. - 99 с.
4. Бородай С.С. Конструирование программно-информационной системы оценки метрических характеристик физических схем реляционных баз данных [Электронный ресурс] / С.С. Бородай, А.А. Рыбанов // Постулат: электрон. науч. журнал. - 2017. - № 5. - 9 с.
5. Электронный ресурс: https://habr.com/company/jugru/blog/347200/
Размещено на Allbest.ru
...Подобные документы
Архитектура уровня команд платформы Java, формат файла класса Java. Компилятор ассемблероподобного языка, позволяющий создавать файлы классов, корректно обрабатываемые реальной JVM, поддерживающий все команды байт-кода Java и важнейшие возможности JVM.
курсовая работа [292,6 K], добавлен 17.09.2008Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.
курсовая работа [508,1 K], добавлен 10.11.2014Кратка историческая справка развития языка Java. Анализ предметной области. Java platform, enterprise and standart edition. Апплеты, сервлеты, gui-приложения. Розработка программного кода, консольное приложение. Результаты работы апплета, сервлета.
курсовая работа [549,2 K], добавлен 23.12.2015История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012Трансляция как процесс перевода программного кода из текстовой формы в машинные коды. Основные категории программ Java. Основные управляющие операторы. Объявление и инициализация переменных. Основные средства разработки приложений, написанных на Java.
презентация [938,2 K], добавлен 26.10.2013Архитектура Java и Java RMI, их основные свойства, базовая система и элементы. Безопасность и виртуальная Java-машина. Интерфейс Java API. Пример использования приложения RMI. Работа с программой "Calculator". Универсальность, портативность платформ.
курсовая работа [208,6 K], добавлен 03.12.2013Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.
курсовая работа [1,8 M], добавлен 16.09.2015Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.
курсовая работа [276,1 K], добавлен 19.07.2014Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.
курсовая работа [197,5 K], добавлен 19.11.2009Основа пользовательского интерфейса. Возможности пакетов java.awt.geom, java.awt, классов java.awt.Graphics и java.awt.Graphics2D. Основные графические примитивы и работа с потоками. Листинг программы и составление композиции аффинных преобразований.
методичка [525,3 K], добавлен 30.06.2009Принцип работы Java. Аплеты как особенность Java-технологии, характеристика методов их защиты. Модель безопасности JDK1.2 и концепция "песочницы". Иерархия криптографических сервисов, алгоритмов. Объектная организация криптографической подсистемы Java.
реферат [54,8 K], добавлен 09.09.2015История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.
курсовая работа [168,1 K], добавлен 27.09.2013Методология объектно-ориентированного программирования в Java. Понятия класса, объекта и объектной переменной. Динамическая и статическая объектные модели. Логическое структурирование приложения. Наследование в Java. Отличия интерфейсов от классов.
курс лекций [547,2 K], добавлен 01.05.2014Java Runtime Environment - минимальная реализация виртуальной машины, необходимая для исполнения приложений, без компилятора и других средств разработки. Компиляция исходного кода через командную строку. Основные моменты создания игрового 2d-приложения.
курсовая работа [2,1 M], добавлен 26.04.2014Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.
реферат [79,0 K], добавлен 23.06.2012Понятие и функциональные особенности Java Card как версии Java-платформы для устройств с крайне ограниченными вычислительными ресурсами, оценка ее возможностей и необходимых ресурсов. Анализ степени безопасности платформы, взаимодействие компонентов.
презентация [1,0 M], добавлен 19.05.2014Особенности архитектуры Java. Технология Java Database Connectivity. Кроссплатформенность Java-приложений. Преимущества языка программирования. Логическая структура базы данных. Структура программного комплекса. Верификация программных средств.
курсовая работа [962,8 K], добавлен 13.01.2016Особенности работы с графическими изображениями Java Script. Способы динамического управления слоями. Рассмотрение примеров использования операторов цикла. Характеристика свойств объекта form: encoding, elements, checkbox. Возможности документов HTML.
курсовая работа [167,7 K], добавлен 09.02.2013Выполнение Java-программы. Набор программ и классов JDK. Объектно-ориентированное программирование в Java. Принципы построения графического интерфейса. Компонент и контейнер графической системы. Апплеты как программы, работающие в среде браузера.
курсовая работа [42,3 K], добавлен 08.02.2011Преимущество использования программ, написанных на Java, требования к ним и настройки на клиентском ПК. Развертывание и последующее "автоматическое" обновление версий GUI клиента с помощью использования технологии Java Web Start в среде Windows.
реферат [33,2 K], добавлен 16.05.2011