![]() |
![]() |
Compiling and Running Programs
|
Компиляция и запуск программ
Это перевод, оригинал находится здесь Этот раздел описывает как компилировать и запускать программы для leJOS NXJ. Большинство людей, читающих эту статью, хотят писать программы на языке Java и запускать их на NXT-кирпиче, но это не единственная возможная ситуация. leJOS NXJ также поддерживает программы, которые работают на PC и удалённо управляют NXT-роботом. Такие программы могут управлять NXT-роботом выполняя пункты leJOS NXJ меню. Они могут также удалённо управлять роботом запуская программы в стандартной прошивке Lego. Но более интересная возможность - это то, что leJOS NXJ поддерживает написание программ, которые работают частично на PC и частично на NXT-кирпиче, связываясь друг с другом через Bluetooth или USB. Та часть программы, которая работает на PC имеет больше памяти и вычислительных возможностей и может производить более сложную обработку данных. Она также может отображать интересный интерфейс пользователя, например, содержащий карты местности, которую исследует робот. С другой стороны, та часть программы, которая работает на NXT-кирпиче может быстро реагировать на показания датчиков и очень точно управлять электродвигателями. Если вы заинтересованы в написании программ для PC, посмотрите раздел инструменты командной строки PC API. Не отходя от "кассы" стоит упомянуть, что программы для leJOS NXJ также могут работать на мобильных телефонах или других устройствах, поддерживающих Java MicroEdition Environment (JME). Такие программы могут связываться с "кирпичом" NXT через Bluetooth. Мы планируем вскоре добавить раздел, описывающий как разрабатывать программы, использующие leJOS NXJ JME API в этот обучающий документ. Можно также коммуницировать с программами для leJOS NXJ с устройств, работающих на ОС Android - смотрите обучающую страницу посвящённуюAndroid. Наконец, программы для leJOS NXJ можно установить на нескольких "кирпичах" NXT и они могут коммуницировать друг с другом через Bluetooth или через RS485 посредством NXT-кабелей, соединяющих порт 4 двух или более "кирпичей" NXT. Да, и ещё программа для NXT может коммуницировать с внешними устройствами, такими, например, как Bluetooth GPS приёмники. Более подробно об этом можно прочитать на странице Communications. Однако, нам надо начинать уже писать программы для нашего "кирпичика" NXT. Можно это делать как с использованием инструментов командной строки leJOS NXJ так и с помощью интегрированной среды разработки - Integrated Development Environment (IDE). Несмотря на то, что командная строка - это очень круто, программировать для leJOS NXJ гораздо проще с использованием IDE. Обычно в IDE есть встроенный редактор, приспособленный для более удобной работы с текстом программы, например, он позволяет увидеть ошибки в программе до того, как вы наткнётесь на них при компиляции. Также он раскрашивает в разный цвет текст программы, выделяя ключевые слова, константы и т.д., автоматически форматирует код (добавляя, где необходимо, отступы), выдаёт подсказки по именам методов, сигнатурам функций, позволяет разворачивать и сворачивать текст отдельных блоков программы и даёт ещё много удобств, значительно ускоряющих и упрощающих написание программы. Но на этом удобства IDE не заканчиваются: среда разработки также помогает осуществить сборку (компиляцию) проекта, его отладку, генерирование документации, создание интерфейса пользователя. Java Среды разработки (IDE) предназначенные для написания Java-кода, дают вам в руки все инструменты Java от компании Oracle (Sun) и большое количество инструментов, разработанных сторонними компаниями. Они делают поддержку новых инструментов проще благодаря поддержке подключаемых модулей (плагинов) и интеграции со внешними инструментами. IDE просты в установке и использовании и желательно ими пользоваться для разработки любых программ под leJOS - даже в случае простых проектов. С помощью IDE можно создавать все возможные типы программ для leJOS NXJ. Для написания программ под leJOS NXJ можно использовать любую Java IDE. В данном руководстве есть разделы по использованию двух наиболее популярных Java IDE: Eclipse и Netbeans. leJOS NXJ поддерживает подключаемые программные модули (плагины) этих двух IDE. Эти плагины очень сильно облегчают написание и тестирование программ. Чтобы научиться создавать, компилировать и запускать программы из интегрированной среды разработки (IDE) посетите страницу: Данный раздел руководства расскажет об инструментах командной строки. Если вы хотите использовать их, то редактор может быть совершенно любой. Многие редакторы позволяют задействовать инструменты командной строки прямо из редактора. Другой способ, который вы можете использовать, это компиляция и запуск программ под leJOS NXJ через использование ant-скриптов сборки. ant скрипты обычно вызываются из IDE. Например, Netbeans компилирует и собирает все программы, используя ant-скрипты, такая же возможность есть и в Eclipse. Однако, вы можете также использовать ant-скрипты из командной строки. ant-скрипты есть для всех предоставленных здесь примеров. Чтоб запустить сборочный скрипт ant просто зайдите в директорию, содержающую файл build.xml и наберите в командной строке ant. Скрипты, описанные в следующих разделах - это Windows .bat файлы или Unix shell-скрипты, в зависимости от того, какую операционную систему вы используете. Они устанавливают путь к классу, путь к библиотеке и путь к загрузочному классу - это необходимо для leJOS NXJ, затем они вызывают Java class который делает всю остальную работу. Исключение из этого правила скрипт nxjc, который просто вызывает javac. Ant-скрипты используют те же Java-классы и не используют .bat или shell скрипты. Back to topИспользование инструментов командной строки leJOS NXJleJOS использует стандартный Sun Java компилятор для компиляции программ. При этом необходимо замещать стандартную библиотеку Java собственной версией этой библиотекой для leJOS - classes.jar. Именно по этой причине мы добавили команду nxjc которая устанавливает boot class path в classes.jar. Её параметры - те же что и у javac программы для leJOS NXJ отличаются от обычных Java программ тем, что они не поддерживают динамическую загрузку классов. Вместо этого все классы, используемые в программе собраны вместе и умакованы в файл с расширением .nxj. Этот процесс называется линковкой. Слинкованный бинарник затем загружается на "кирпич" NXT. Инструменты для компиляции, линковки и загрузки программ под leJOS NXJ:
Обычно, всё что вам нужно, это команды Вам необходимо открыть окно командной строки, чтоб выполнить эти команды. nxjc – компиляция программыкомпилирует один или несколько java файлов. Использование: nxjc <java-files> Пример: nxjc HelloWorld.java
nxjc вызывает javac с параметрами:
-bootclasspath устанавливается потому что leJOS не использует стандартные классы java.lang но имеет свои версии в classes.jar. nxjlink – слинковать программуВызывает leJOS NXJ линкер. Использование: nxjlink [-v|--verbose] [-g|--debug] [-gr|--remotedebug] [-a|--all] [-dm|--disablememcompaction] [-ea|--enableassertions] [-ec|--enablechecks] [-od|--outputdebug <debug-file> ] -o <binary> main-class Пример: nxjlink -v -o HelloWorld.nxj HelloWorld
Линкует указанный основной класс с любыми классами, на которые он ссылается в текущей директории и со стандартными классами leJOS из classes.jar чтоб получить бинарный NXJ-файл для загрузки и запуска на кирпиче. -v или --verbose флаг Приводит к выводу в поток стандартного вывода списка имён классов и сигнатур методов, включённых в бинарный файл. Этот вывод очень полезен при отладке. -g или --debug флаг, приводящий к включению отладочного монитора в программу. Это позволяет программе быть прерванной во время выполнения (через нажатие ENTER+ESCAPE) и выдаёт дампы стека когда есть неперехваченные исключения. -gr или --remotedebug флаг используется чтоб переключиться на удалённую отладку, которая производится с инструментов nxjconsole или nxjconsoleviewer. -od или --outputdebug флаг используется для указания отладочного файла вывода, который используется при удалённой отладке и при задействовании nxjdebugtool. -ec или --enablechecks флаг используется для включения дополнительных проверок времени исполнения. Эти проверки относительно затратны (и редко приводят к обнаружению ошибок) поэтому они по умолчанию отключены. В настоящее время единственная такая проверка, которая включается, когда данный флаг установлен, это проверка на предмет ArraystoreExceptions исключений. -ea или --enableassertions флаг используется для включения проверки assert statements в программе. -dm или --disablememcompactions флаг используется для отключения дефрагментации динамической памяти. В норме leJOS garbage collector (сборщик мусора) пытается передвинуть большие объекты в памяти таким образом, чтоб максимизировать объём непрерывной свободной памяти. Данный флаг отключает эту функцию. Линкер удаляет методы, которые не используются. Укажите -a либо --all чтоб включить все методы не зависимо от того, используются они или нет. Использовать эту опцию по идее нет необходимости. Используйте -h или --help флаг для вывода всех возможных опций. nxjupload – загрузить программу на "кирпич"Использование: nxjupload [-b|--bluetooth] [-u|--usb] [-d|--address address] [-n|--name name] [-r|--run] <binary> Пример: nxjupload HelloWorld.nxj Загружает бинарник (файл .nxj) в кирпич. По умолчанию сначала пытается сделать это через USB, затем через Bluetooth. Если флаг --bluetooth указан, то пытается сделать это только через Bluetooth. Если --usb указан, то только через USB. Когда используется Bluetooth, выполняется поиск Bluetooth устройств, если только не установлен флаг -address , точно указывающий адрес устройства, на которое будет произведена загрузка. --name параметр, ограничивающий поиск кирпича NXT заданным именем. Если не указан, nxjupload пытается соединиться с каждым "кирпичом", который он находит и загружает программу на первый найденный "кирпич". Если указан параметр --run, программа будет запущена сразу же после окончания загрузки. nxj – слинковать, загрузить и выполнить программуИспользование: nxj [options] main-class Пример: nxj -r HelloWorld
команда nxj линкует и загружает программу в leJOS NXJ. Это эквивалент nxjlink с последующей nxjupload. Любая из опций для Имя бинарника по умолчанию: <main-class>.nxj, т.е. Tune.nxj. Использование инструментов командной строки PC APIИнструменты для компиляции и запуска программ, использующих leJOS PC API:
Напоминание: Если вы компилируете или запускаете программу, использующую PC API без использования этих инструментов, вам понадобятся nxjpcc – скомпилировать программу, использующую PC APIСкомпилировать один или более PC API java-файлов. Использование: nxjpcc [javac-options] <java-files> Пример:
nxjpc – запускает программу PC API на вашем PCиспользование: nxjpc [java-options] <main-class> Вызывает java для запуска программы, использующей PC API. Пример:
|