Что такое формат файла JNLP?
Файлы с расширением .jnlp содержат данные, хранящиеся с использованием синтаксиса XML. Эти данные описывают Java-приложение или апплет, исходный код которого находится на удаленном сервере, предназначенный для локального запуска в соответствии с протоколом Java Network Launch Protocol - первоначально реализованным в Java Web Start.
Файл .jnlp обычно содержит:
- Информацию о приложении - название, разработчик, описание и домашняя страница,
- Ресурсы - URL (атрибут
codebase), где размещены пакеты JAR-архивов, - Настройки безопасности - разрешения, позволяющие приложению выполнять определенные действия,
- Целевой элемент - основной класс и параметры приложения или веб-апплета.
Файл .jnlp также может содержать множество различных деталей о требованиях к версии JRE, иконках, настройках ярлыков и политиках обновления. Полная спецификация определена JSR-56 (Sun Microsystems / Oracle), а атрибуты корневого элемента <jnlp> указывают на расположение сервера приложения. Java Web Start - оригинальный загрузчик javaws, поставлявшийся с JRE 1.4 по Java 8 - был объявлен устаревшим в Java 9 (2017) и полностью удален в Java 11 (2018). Современными альтернативами являются OpenWebStart (кроссплатформенная замена с открытым исходным кодом) и IcedTea-Web на Linux. Содержимое файла .jnlp можно просматривать и редактировать с помощью любого текстового редактора.
Безопасность и защита
РИСК: MEDIUMСам файл JNLP представляет собой инертный XML, но то, что он запускает, является полноценным десктопным Java-приложением, исторически с правами <all-permissions/> - вложения JNLP были задокументированным вектором фишинга и вредоносного ПО в 2010-х годах именно потому, что javaws загружал и исполнял удаленный код. Сегодня поверхность атаки невелика (современная Java вообще не может их запустить), но любой, у кого установлен OpenWebStart или устаревшая Java 8, должен открывать файлы JNLP только с доверенных серверов и предварительно проверять URL-адрес codebase в текстовом редакторе. Неожиданные вложения .jnlp в электронной почте следует удалять.
Детали формата
в двух словахПрограммы, открывающие файлы JNLP
Технические подробности
глубокая спецификация| Тип формата | Дескриптор запуска XML-приложения (простой текст) |
| Корневой элемент XML | `<jnlp>` с обязательным атрибутом `codebase` и необязательным атрибутом `href` |
| MIME-тип | `application/x-java-jnlp-file` |
| Кодировка символов | UTF-8 (стандартный XML; объявляется в инструкции обработки `<?xml?>`) |
| Бинарная сигнатура | Отсутствует - текстовый XML; файлы начинаются с `<?xml`, за которым следует корневой элемент `<jnlp>` |
| Первоначальный разработчик | Sun Microsystems (позже Oracle); стандартизировано как JSR-56 |
| Устаревший загрузчик | `javaws` (Java Web Start), поставлялся с JRE 1.4 по Java 8 |
| Текущие загрузчики | OpenWebStart (кроссплатформенный, открытый исходный код); IcedTea-Web (Linux) |
| Статус жизненного цикла | Java Web Start признан устаревшим в Java 9 (2017); удален в Java 11 (2018) |
| Элемент ссылки на JAR | `<jar href="..."/>` внутри блока `<resources>` связывает пакеты `.jar` приложения |
| Дескриптор безопасности | `<security><all-permissions/></security>` предоставляет полный доступ; отсутствие означает работу в «песочнице» |
| Целевая версия JRE | Элемент `<java version="..."/>` или `<j2se version="..."/>` указывает минимальную среду выполнения |
| Поддержка автономного запуска | Элемент `<offline-allowed/>` разрешает запуск без сети после первоначального кэширования JAR |
| Поддерживаемые типы приложений | Стандартные Java-приложения, апплеты и расширения установщика (вложенный JNLP `<extension>`) |
| Кэширование JAR | Загрузчик скачивает и кэширует JAR-файлы локально; атрибут `version` в теге `<jar>` позволяет выполнять дельта-обновления |
| Выпущен | 2001 (Java Web Start, J2SE 1.3.1/1.4 era; standardized as JSR-56) |
| Открыть стандартное | Да · без роялти |
| Спецификация | jcp.org |
Конвертации JNLP
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах JNLP.