Библиотеки JAR

Использование JAR-библиотек

В Logisim-evolution поддерживаются два типа компонентов схем: те, которые создаются внутри программы путём соединения других элементов, и примитивные компоненты, написанные на языке Java. Схемы в Logisim проектировать проще, но они не позволяют реализовывать сложное интерактивное поведение пользователя и работают менее эффективно.

Программа включает в себя богатый набор встроенных библиотек Java-компонентов, но она также может загружать внешние библиотеки, созданные вами или сторонними разработчиками. После загрузки библиотеки вы можете импортировать её в свой проект, щёлкнув правой кнопкой мыши на корневой строке проекта на панели «Навигатор» и выбрав Загрузить библиотеку > Библиотека JAR.... После этого программа предложит вам указать путь к JAR-файлу. (В некоторых случаях может потребоваться ввести имя стартового класса, предоставляемое разработчиком библиотеки. Однако обычно разработчики настраивают JAR-архив так, чтобы избежать этого шага, добавляя в манифест JAR-файла атрибут Library-Class с указанием имени главного класса библиотеки).

Если вы хотите просто повторно использовать схемы, созданные в Logisim-evolution, вам не нужно писать JAR-библиотеку. Сохраните ваши схемы в файле .circ и загрузите его с помощью команды | Проект | → | Загрузить библиотеку | → | Библиотека Logisim-evolution... |. Этот процесс подробно описан в разделе Библиотеки Logisim.

Создание JAR-библиотек

Оставшаяся часть этого раздела посвящена серии подробно прокомментированных примеров, иллюстрирующих процесс самостоятельной разработки библиотек для Logisim. Заниматься этим рекомендуется только опытным Java-программистам. Документация по данному API (помимо приведенных примеров) является довольно краткой.

Исходный код примера находится в дереве исходного кода Logisim-evolution в каталоге src/main/java/com/cburch/gray. В подразделах этой части руководства объясняются ключевые фрагменты этого примера, однако если печатный текст разойдётся с актуальной кодовой базой, то в качестве эталона следует использовать именно репозиторий проекта.

Сборка JAR-библиотеки

JAR-библиотека должна быть скомпилирована с использованием того же API Logisim-evolution, с которым планируется её запуск. При сборке вне дерева исходного кода Logisim-evolution добавьте JAR-файл Logisim-evolution в classpath вашего компилятора Java, скомпилируйте классы библиотеки и упакуйте эти классы вместе с ресурсами в JAR-архив.

Чтобы избавить пользователей от необходимости вводить имя класса при загрузке JAR-библиотеки, добавьте в манифест запись с именем Library-Class. Её значением должно быть полное (fully qualified) имя класса, наследующего com.cburch.logisim.tools.Library. Для нашего примера с кодом Грея эта запись будет выглядеть так: Library-Class: com.cburch.gray.Components.

Пример с кодом Грея также компилируется как часть самого проекта Logisim-evolution, поэтому разработчики могут проверить успешность его сборки, запустив команду ./gradlew compileJava в корне дерева исходного кода Logisim-evolution.

Инкрементатор кода Грея

Иллюстрирует важнейшие элементы любого типа компонентов, используя простой пример компонента, который принимает многобитное значение на входе и вычисляет следующее после него значение кода Грея.

Класс Library

Показывает, как объявить библиотеку. Это входная точка для любого JAR-файла — класс, имя которого пользователь вводит при ручной загрузке JAR-библиотеки.

Простой счётчик кода Грея

Показывает, как сделать компонент, имеющий внутреннее состояние, в частности, 8-битный счётчик, который перебирает коды Грея.

Счётчик кода Грея

Демонстрирует полный, довольно сложный компонент, с которым пользователь может взаимодействовать. Он реализует счётчик кода Грея, в котором число запоминаемых битов настраивается, и в котором пользователь может изменить текущее значение, нажав на него инструментом «Нажатие» и введя новое значение.

Рекомендации
Общая информация по разработке сторонних библиотек.

Лицензия

Код примера JAR-библиотеки поставляется под лицензией MIT — более свободной лицензией по сравнению с лицензией GPL, под которой распространяется остальная часть Logisim-evolution.

Copyright (c) 2009, Carl Burch.

Данная лицензия разрешает, безвозмездно, лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:

Вышеупомянутый копирайт и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.

ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ ЛЮБОГО ВИДА ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И НЕНАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

Далее: Инкрементатор кода Грея.