1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-JLine

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

JLine — это библиотека Java для работы с консольным вводом. По функционалу она похожа на BSD editline и GNU readline, но имеет дополнительные возможности, которые делают её сравнимой с редактором строк ZSH. Пользователи, знакомые с возможностями readline/editline для современных оболочек (таких как bash и tcsh), найдут большинство функций редактирования команд JLine знакомыми.

JLine 3.x является развитием JLine 2.x.

Лицензия

JLine распространяется под лицензией BSD, что означает, что вы можете свободно распространять, модифицировать или продавать его практически без ограничений.

Документация

Форумы

Артефакты

JLine можно использовать с одним пакетом или более мелкими специализированными jar-файлами. Пакет содержит все jar-файлы, кроме jline-groovy, который должен быть включён в classpath, если вы хотите использовать возможности сценариев. Большой пакет называется:

jline-${jline.version}.jar

Зависимости минимальны: вы можете использовать JLine без каких-либо зависимостей на *nix системах, но для поддержки Windows или более продвинутого использования вам потребуется добавить либо библиотеку Jansi, либо библиотеку JNA.

Вы также можете использовать специализированные jar-файлы:

  • jline-terminal: API и реализации терминала;
  • jline-terminal-jansi: реализации терминала, использующие библиотеку Jansi;
  • jline-terminal-jni: реализации терминала, использующие собственную библиотеку JNI;
  • jline-terminal-jna: реализации терминала, использующие библиотеку JNA;
  • jline-terminal-ffm: реализации терминала, использующие слой Foreign Functions & Mapping;
  • jline-native: собственная библиотека;
  • jline-reader: считыватель строк (включая завершение, историю и т. д.);
  • jline-style: API стилей;
  • jline-remote-ssh: помощники для использования jline с Mina SSHD;
  • jline-remote-telnet: помощники для использования jline через telnet (включая реализацию сервера telnet);
  • jline-builtins: несколько инструментов высокого уровня: пейджер less, редактор nano, мультиплексор экрана и т.д.;
  • jline-console: реестр команд, реализации принтера объектов и виджетов;
  • jline-groovy: реализация ScriptEngine с использованием Groovy;
  • jline-console-ui: предоставляет простые элементы пользовательского интерфейса на терминалах ANSI.

JANSI

Проект JANSI был объединён с JLine. Доступны следующие артефакты:

  • jansi-core: специализированный jar, содержащий jansi;
  • jansi: jar-пакет, который содержит jansi-core и необходимые зависимости jline.

Поддерживаемые платформы

JLine поддерживает следующие платформы:

  • FreeBSD;
  • Linux;
  • OS X;
  • Solaris;
  • Windows.

FFM против JNI против Jansi против JNA против Exec

Для выполнения необходимых операций JLine должен взаимодействовать со слоем ОС. Выбор провайдера в JLine осуществляется через интерфейс TerminalProvider.

На платформе Windows обязательно полагаться на собственные вызовы, поэтому необходимо зарегистрировать реальный провайдер (jar-файл jline-terminal-xxx) и иметь доступными его зависимости (обычно это библиотека Jansi или JNA). В противном случае будет создан «тупой» терминал без расширенных возможностей.

По умолчанию будет использоваться следующий порядок:

FFM

Провайдер FFM доступен с JLine 3.24 и при работе на JDK >= 22. Он очень лёгкий и не требует дополнительных зависимостей. С JLine 3.26 провайдеру FFM требуется JDK 22 с опцией JVM --enable-native-access=ALL-UNNAMED. Обратите внимание, что JLine 3.24 и 3.25 используют предварительную версию поддержки FFM, поставляемую в JDK 21, которая несовместима с окончательной версией в JDK 22.

JNI

С JLine 3.24.0 JLine предоставляет собственный провайдер на основе JNI и собственные библиотеки. Это лучший выбор по умолчанию, не требующий дополнительных зависимостей. Одним из требований является то, что JLine загрузит собственную библиотеку: обычно это не проблема, но может быть ограничением в определённых средах.

JANSI

Библиотека Jansi — это специализированная библиотека для поддержки последовательностей ANSI в терминалах. Исторически сложилось так, что методы JNI, используемые JLine, предоставлялись Jansi. Чтобы минимизировать затраты на обслуживание, Jansi была объединена с JLine в версии 3.25. Этот провайдер был объявлен устаревшим в версии 3.26 в пользу провайдера JNI.

JNA

Библиотека JNA стремится предоставить альтернативный способ доступа к собственным методам без необходимости написания полной собственной библиотеки JNI. Если JNA находится в загрузчике классов JLine, можно использовать этот провайдер. JNA не поддерживается на архитектурах Apple M2. Этот провайдер также был объявлен устаревшим в версии 3.26 в пользу провайдера FFM.

Exec

Провайдер exec доступен в системах Posix и в Windows при работе под Cygwin или MSys2. Этот провайдер запускает дочерние процессы всякий раз, когда обращается к терминалу (используя Terminal.getAttributes, Terminal.setAttributes, Terminal.getSize, Terminal.setSize).

Этот провайдер также не поддерживает внешние терминалы (например, при создании терминала для входящего соединения) и не поддерживает среду Windows native.

Использование Maven

Используйте следующее определение, чтобы использовать JLine в своём проекте Maven:

<dependency>
    <groupId>org.jline</groupId>
    <artifactId>jline</artifactId>
    <version>${jline.version}</version>
</dependency>

JLine также можно использовать с более низкоуровневыми jar-файлами:

<dependency>
    <groupId>org.jline</groupId>
    <artifactId>jline-terminal</artifactId>
    <version>${jline.version}</version>
</dependency>
<dependency>
    <groupId>org.jline</groupId>
    <artifactId>jline-terminal-jni</artifactId>
    <version>${jline.version}</version>
</dependency>
<dependency>
    <groupId>org.jline</groupId>
    <artifactId>jline-reader</artifactId>
    <version>${jline.version}</version>
</dependency>

Все jar-файлы и релизы доступны в Maven Central, так что вы найдёте всё по следующему адресу: https://repo1.maven.org/maven2/org/jline/.

Сборка

Требования

  • Maven 3.9.7+
  • Java 8+ во время выполнения
  • Java 22+ во время сборки
  • Graal 23.1+ (native-image)

Проверьте и соберите:

git clone git://github.com/jline/jline3.git
cd jline3
./build rebuild

Сборка Graal native-image demo:

./build rebuild -Pnative-image

Результаты

Создаются следующие артефакты:

Большой пакет включает в себя всё (кроме jline-groovy) и находится по адресу: jline/target/jline-${jline.version}.jar

Пакет jansi находится по адресу: jansi/target/jansi-${jline.version}.jar

Мелкозернистые пакеты находятся по адресу: terminal/target/jline-terminal-${jline.version}.jar terminal-jansi/target/jline-jansi-${jline.version}.jar terminal-jna/target/jline-jna-${jline.version}.jar reader/target/jline-reader-${jline.version}.jar style/target/jline-style-${jline.version}.jar remote-telnet/target/jline-remote-telnet-${jline.version}.jar remote-ssh/target/jline-remote-ssh-${jline.version}.jar builtins/target/jline-builtins-${jline.version}.jar console/target/jline-console-${jline.version}.jar groovy/target/jline-groovy-${jline.version}.jar jansi-core/target/jansi-core-${jline.version}.jar

В Maven есть концепция SNAPSHOT. Во время разработки версия jline всегда будет заканчиваться на -SNAPSHOT, что означает, что версия находится в разработке и не является релизом.

Обратите внимание, что все эти артефакты также устанавливаются в локальный репозиторий maven, поэтому вы обычно найдёте их в следующей папке: ~/.m2/repository/org/jline/.

Запуск демо

Чтобы запустить демо, просто используйте одну из следующих команд после сборки JLine:

# Gogo terminal
./build demo

# Groovy REPL
./build repl

# Graal native-image
./build graal

Непрерывная интеграция

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

JLine — это библиотека классов Java для обработки ввода с консоли, она немного похожа на инструменты editline в BSD и readline в GNU. Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-JLine.git
git@api.gitlife.ru:oschina-mirror/mirrors-JLine.git
oschina-mirror
mirrors-JLine
mirrors-JLine
master