JNLP Java API, Java Only Blog

Научете се да програмирате в Java от нулата

jnlp
API на JNLP Позволява на неподписано приложение да работи в пясъчник и в същото време да получи сигурен достъп до локални ресурси. Например, той предоставя услуги за изтегляне и запазване на файлове. Приложенията не могат да виждат файловата система и не могат да посочват имена на файлове.

Вместо това се показва диалогов прозорец за файл и потребителят на програмата избира файл. Преди да се появи диалоговият прозорец за избор на файлове, потребителят е предупреден и трябва да се съгласи да продължи. Освен това API всъщност не предоставя на програмата достъп до обекта File.

По-специално приложението не може да намери файла самостоятелно. Следователно програмистите са снабдени с инструменти за изпълнение на действия за отваряне и запазване на файл, но системната информация е максимално скрита от съмнителни приложения. API предоставя на разработчика следните възможности:

  • Зареждане и запазване на файлове.
  • Достъп до клипборда.
  • Печат.
  • Показване на документ в стандартен браузър.
  • Съхранение и извличане на данни за конфигурация.
  • Инструменти за гарантиране, че се изпълнява само един екземпляр на приложение (тази функция е въведена в Java SE 5.0).

За да се възползвате от тези функции, трябва да използвате класа ServiceManager, нещо подобно:

Ако съответната функция не е налична, се изхвърля UnavailableServiceException.

За да компилирате програма, която използва JNLP API, трябва да включите файла javaws.jar в пътя за търсене на класа. Този файл се намира в поддиректорията jre/lib на директорията JDK.

Сега ще преминем към дискусия за най-полезните функции на JNLP. За да запазите файла, трябва да посочите в диалоговия прозорец предложения за оригиналния път и разширение на файла, както и данните за запазване и предложеното име на файла. Нека разгледаме пример:

Данните трябва да бъдат доставени на InputStream. Понякога тази задача е доста трудна. Програмата в края на статията използва описаната по-долу стратегия.

  1. Екземпляр от класа ByteArrayOutputStream е създаден за съхраняване на байтовете, които трябва да бъдат записани на диск.
  2. Създава се екземпляр на клас PrintStream и изпраща тези данни към ByteArrayOutputStream.
  3. Информацията, която трябва да се съхранява в потока за печат, се извежда в PrintStream.
  4. Създава се екземпляр от класа ByteArrayInputStream и чете съхранените байтове.
  5. Потокът се предава на метода saveFileDialog ().