【Java可执行命令】(八)JWS应用程序启动工具 javaws:深入解析Java Web Start应用程序的启动工具javaws ~

news2024/11/16 12:01:26

Java可执行命令之javaws

  • 1️⃣ 概念
    • 🔍JNLP (Java Network Launch Protocol) ?
  • 2️⃣ 优势
  • 3️⃣ 使用
    • 3.1 语法
      • 3.1.1 运行选项:-Xnosplash
      • 3.1.2 运行选项:-wait
      • 3.1.3 控制选项:-import [导入选项] < jnlp-file>
  • 4️⃣ 应用场景
  • 5️⃣ 注意事项
  • 🌾 总结

在这里插入图片描述

1️⃣ 概念

Java Web Start(JWS)是由Sun Microsystems(现为Oracle)开发的一种Java技术,旨在方便从Web浏览器启动和分发Java应用程序。

javawsJava Web Start工具的命令行版本。它使用Java Network Launch Protocol (JNLP)文件作为输入,并根据该文件描述的配置和资源来启动和运行相应的Java应用程序。

当用户点击JNLP文件链接或者通过命令行运行javaws命令时,Java Web Start会解析JNLP文件中的配置信息,并根据该配置来下载所需的资源和依赖项。随后,Java Web Start会初始化应用程序所需的运行环境并启动相应的Java应用程序。

🔍JNLP (Java Network Launch Protocol) ?

JNLP (Java Network Launch Protocol) 是一种用于描述和启动 Java Web Start 应用程序的 XML 文件格式。JNLP 文件可以包含各种配置选项和元素,用于指定应用程序所需的资源、权限、启动参数等信息。

以下是 JNLP 文件中可以配置的主要内容:

  • 信息:JNLP 文件的 <information> 元素用于提供有关应用程序的基本信息,例如标题、描述、供应商等;
  • 资源:通过 <resources> 元素,可以列出应用程序所需的资源,包括 JAR 文件、本机库、图像、HTML 文件等。可以为每个资源指定 URL 或文件路径,并进行版本管理和依赖性管理;
  • 应用程序描述:JNLP 文件使用 <application-desc> 元素来定义应用程序的启动属性。其中,main-class 属性指定了主类,该类将在启动时执行;
  • 安全:通过 <security> 元素,可以定义应用程序的安全策略和权限。可以指定应用程序所需的权限级别、限制代码执行等安全配置;
  • 扩展:通过 <extension> 元素,可以指定应用程序的扩展组件和库。这些组件可以是用户自定义的或从外部引入的;
  • 更新:使用 <update> 元素,可以设置应用程序的更新策略和行为。可以指定更新检查的频率、更新提示方式等。

除了上述内容,JNLP 文件还可以包含其他一些元素和属性,用于定义应用程序的图标、参数传递、桌面集成等更多功能。

通过配置 JNLP 文件,开发人员可以确保 Java Web Start 应用程序能够自动下载所需的资源,管理依赖项,并在启动时具有正确的权限和参数。JNLP 文件的灵活性使得部署和分发 Java 应用程序变得简单而方便。

2️⃣ 优势

  • 简化部署与更新:使用Java Web Start,开发人员可以通过一个JNLP文件来描述应用程序的依赖关系、资源需求和启动参数等。用户只需要点击JNLP文件链接即可自动下载、安装和更新所需的Java应用程序;
  • 跨平台性Java Web Start 应用程序可以在支持Java运行时环境(JRE)的多个操作系统上运行,提供了一个统一的部署和运行机制;
  • 沙盒安全模型Java Web Start 应用程序默认受到沙盒安全限制,可以防止恶意代码的执行,并确保应用程序只能访问授权的资源;
  • 自动更新Java Web Start能够检测新版本的应用程序,自动下载并启动最新版本,使用户始终享有最新的功能和修复的Bug。

3️⃣ 使用

3.1 语法

javaws [运行选项] <jnlp-file>
javaws [控制选项] 

其中,运行选项 包括可供设置的参数:

  • -verbose:显示其他输出内容;
  • -offline:以脱机模式运行应用程序;
  • -system:仅从系统高速缓存运行应用程序;
  • -Xnosplash:运行时不显示启动屏幕
  • -J<选项>:为VM提供选项;
  • -wait: 等待所有应用程序实例都退出后再退出javaws

控制选项包括:

  • -viewer:在java控制面板中显示高速缓存查看器;
  • -clearcache:从高速缓存删除所有未安装的应用程序;
  • -uninstall:从高速缓存删除所有应用程序;
  • -uninstall <jnlp-file>:从高速缓存删除应用程序;
  • -import [导入选项] <jnlp-file>:将应用程序导入高速缓存。 而导入选项包含:
    • -silent:静默模式下运行,不显示任何对话框或警告;
    • -system:将应用程序导入系统高速缓存;
    • -codebase <url>:从给定的代码库检索资源;
    • -shortcut:以用户接受提示的方式安装快捷方式;
    • -association:以用户接受提示的方式安装关联。

上面汇总了javaws 的所有可选参数,读者可以根据自己的需求参照表格选择所需参数。下是主要介绍一些常用的可选参数:

  • -Xnosplash:运行时不显示启动屏幕;
  • -wait:等待所有应用程序实例都退出后再退出javaws
  • -import [导入选项] <jnlp-file>:将应用程序导入高速缓存,< jnlp-file> 是JNLP文件的路径。

3.1.1 运行选项:-Xnosplash

下面是使用 javaws -Xnosplash 命令的示例:

  1. 创建一个 example.jar Jar 文件,其中包含应用程序类文件。然后再创建一个 example.jnlp 的 JNLP 文件,文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" codebase="http://www.xiaoshan.com/" href="example.jnlp">
        <information>
            <title>Example Application</title>
            <vendor>Example Company</vendor>
        </information>
        <resources>
            <!-- 指定需要下载和使用的 Java 类 -->
            <jar href="example.jar" main="true"/>
        </resources>
        <application-desc main-class="com.xiaoshan.MainClass"/>
    </jnlp>
    
  2. example.jnlpexample.jar 文件上传到可以通过网络访问的服务器上;

  3. 打开终端或命令提示符窗口,并执行以下命令:

    javaws -Xnosplash http://www.xiaoshan.com/example.jnlp
    

    注意 http://www.xiaoshan.com/example.jnlp 为实际部署 JNLP 文件的 URL 地址。

  4. 执行该命令后,Java Web Start 将会自动下载 JNLP 文件和相关的资源,并启动应用程序。在使用 -Xnosplash 参数时,不会显示 Java Web Start 的启动画面。

以上案例展示了如何使用 javaws -Xnosplash 命令来启动Web上的Java应用程序。当执行该命令时,它会根据指定的 JNLP 文件下载所需的资源,并通过 example.jar 文件中的 com.xiaoshan.MainClass 主类来运行应用程序。当运行应用程序时,将直接进入应用程序界面,而不会显示 Java Web Start 的默认启动画面。

3.1.2 运行选项:-wait

以下是使用 javaws -wait 命令的示例:

  1. 仍然使用上边案例的已经传到可以通过网络访问的服务器上的 example.jnlpexample.jar 文件;

  2. 打开终端或命令提示符窗口,并执行以下命令:

    javaws -wait http://www.xiaoshan.com/example.jnlp
    
  3. 执行该命令后,Java Web Start 将会自动下载 JNLP 文件和相关的资源,并启动应用程序。在使用 -wait 参数时,命令行界面将保持打开状态,直到应用程序退出。

这个案例展示了如何使用 javaws -wait 命令来启动 Web 上的 Java 应用程序并等待其退出。当执行该命令时,Java Web Start 将自动下载 JNLP 文件和相关资源,并通过 example.jar 文件中的 com.xiaoshan.MainClass 主类来运行应用程序。命令行界面将一直保持打开状态,直到应用程序退出,这使得我们可以实时查看应用程序的输出和日志。

3.1.3 控制选项:-import [导入选项] < jnlp-file>

下面是使用 javaws -import 命令并使用 -silent 选项的示例:

  1. 仍然使用上边案例的已经传到可以通过网络访问的服务器上的 example.jnlpexample.jar 文件;

  2. 打开终端或命令提示符窗口,并执行以下命令:

    javaws -import -silent http://www.xiaoshan.com/example.jnlp
    
  3. 执行该命令后,Java Web Start 将自动下载 JNLP 文件和相关资源,并导入安装程序。在使用 -silent 参数时,不会显示任何对话框或警告。

这个案例展示了如何使用 javaws -import 命令并附加 -silent 选项来导入并静默安装 Java Web Start 应用程序。当执行该命令时,Java Web Start 将自动下载 JNLP 文件和相关资源,并执行所需的安装步骤(如果有)。在此过程中,不会显示任何对话框或警告,使安装过程在后台进行,并减少用户干预的需要。

4️⃣ 应用场景

Java Web Start适用于各种应用场景:

  • 企业内部分发和更新自定义Java应用程序;
  • 在教育领域提供易于分发和更新的教学软件;
  • 分发需要复杂计算和可视化的科研应用程序。

5️⃣ 注意事项

在使用javaws命令时,需要注意以下事项:

  • 用户需要正确安装并配置Java Runtime Environment(JRE)
  • JNLP文件链接需要正确设置MIME类型以及确保可访问性;
  • 应用程序开发人员需要考虑资源文件的大小和数量,以提高用户体验;
  • JNLP文件进行来源和数字签名审核,确保安全性。

🌾 总结

Java Web Start是一种通过JNLP文件描述配置和资源的Java技术,使得从Web浏览器中运行和分发Java应用程序变得更加简单和便捷。javaws命令是Java Web Start工具的命令行版本,它根据JNLP文件的配置来启动和运行Java应用程序。

Java Web Start提供了跨平台性、自动更新和沙盒安全模型等优势,适用于不同领域的应用场景。但在使用过程中,需要注意安装和配置Java Runtime Environment(JRE)以及审核JNLP文件的来源和安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/707752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA中删除某个模块后在创建同名模块显示已存在 的解决方案

IDEA中删除某个模块后在创建同名模块显示已存在 的解决方案 出现的问题复现解决方案成功添加后可能会出现的问题 出现的问题复现 前提是你认为已经删干净了&#xff0c;因为删除模块得删除两次才能从本地的文件夹中删除。 解决方案 右击项目名 找到 这个玩意儿&#xff0c;点…

MySQL不常用但非常实用的函数在项目中的应用

MySQL内置了不少函数&#xff0c;利用这些函数可以很好地在进行数据查询时候&#xff0c;进行数据处理&#xff0c;如果要查看MySQL所有的内置函数&#xff0c;可以在官网的文档中&#xff1a;Built-In Function and Operator Reference 有很详细的表格&#xff0c;列举了所有…

代码随想录二刷day39 |动态规划 之 62.不同路径 63. 不同路径

day39 62.不同路径确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组的初始化确定遍历顺序举例推导dp数组 63. 不同路径 II确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 62.不…

模仿QQ之右键菜单

参考&#xff1a;QT多级菜单 - 知乎 (zhihu.com) 运行效果图&#xff1a; 关键代码&#xff1a; void personMenu::contextMenuEvent(QContextMenuEvent *event) {//我完全可以写出一个代码生成器来把这些代码生成出来。parentnew QMenu(this);parent->addAction(QIcon(…

C++ 多态详解附图与代码

一、多态 1.1 什么是多态 多态是面向对象编程中的一个重要概念&#xff0c;它允许在不同类型的对象上执行相同的操作&#xff0c;并根据对象的实际类型来决定具体执行哪个操作。通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象…

2019年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&#xff0c;题目常常看&a…

【排序算法】堆排序

堆与一维数组 建立堆与一维数组的联系 堆排序并不是直接对堆节点Node类型排序&#xff0c;而是通过建立索引之间的关系&#xff0c;对一维数组排序。 称之为堆排序&#xff0c;是因为节点索引值之间的关系与完全二叉树的非常类似&#xff0c;而树又称堆。 设根节点为i&#xff…

【C#】委托、匿名方法、Lambda表达式和事件

【C#】委托、匿名方法、Lambda表达式和事件 委托 什么是委托&#xff1f; 委托和类一样&#xff0c;是用户自定义类型&#xff0c;是方法&#xff08;函数&#xff09;的抽象。通俗讲&#xff0c;委托就是 自定义类型的方法&#xff08;函数&#xff09;的代表。 声明委托 …

HTML+CSS+JavaScript华为主页

样式&#xff1a; HTMLCSSJavaScript仿华为首页 HTML: <!DOCTYPE html> <html><head><meta charset"utf-8"><link rel"stylesheet" type"text/css" href"Homepage.css"/><script type"text/ja…

NextJs下浅尝Prisma+Sqlite+逆向生成数据模型

1.安装prisma npm install prisma/client 2.创建schema.prisma npx prisma init 执行完命令后创建文件目录如下&#xff1a; 3.配置数据库连接 generator client {provider "prisma-client-js" }datasource db {provider "sqlite" //数据库类型 这…

libevent实践07:监听服务器并管理客户端

简介 函数bufferevent_new struct bufferevent * bufferevent_new(evutil_socket_t fd,bufferevent_data_cb readcb, bufferevent_data_cb writecb,bufferevent_event_cb eventcb, void *cbarg) 参数说明&#xff1a; fd:新客户端的文件描述符 readcb&#xff1a;一个函数指…

【Redis的优化】

目录 一、Redis 高可用二、 Redis 持久化2.1、Redis 提供两种方式进行持久化2.2、RDB 持久化1. 触发条件&#xff08;1&#xff09;手动触发&#xff08;2&#xff09;自动触发 2. 执行流程3. 启动时加载 2.3、AOF 持久化1. 开启AOF2. 执行流程(1&#xff09;命令追加(append)(…

深入理解 Linux 物理内存分配全链路实现

目录 内核物理内存分配接口 物理内存分配内核源码实现 内存分配的心脏 __alloc_pages prepare_alloc_pages 内存慢速分配入口 alloc_pages_slowpath 总结 内核物理内存分配接口 在物理内存分配成功的情况下&#xff0c; alloc_pages&#xff0c;alloc_page 函数返回的都是指…

2022最常用密码公布,你的账户安全吗?

密码管理工具 NordPass 公布了 2022 年最常用密码列表&#xff0c;以及破解密码所需的时间。该研究基于对来自 30 个不同国家 / 地区的 3TB 数据库的分析。研究人员将数据分为不同的垂直领域&#xff0c;使得其能够根据国家和性别进行统计分析。今年的研究主要聚焦于文化如何影…

工业软件对于现代制造业的生产效率和质量有何影响?

工业软件在提高现代制造业的生产力和质量方面发挥着至关重要的作用。比如&#xff1a; 流程自动化&#xff1a;工业软件可以实现各种制造流程的自动化&#xff0c;消除手动任务并减少人为错误。自动化通过简化操作、缩短周期时间和提高整体效率来提高生产力。它还可以最大限度地…

vue3和element plus踩坑

1.有说vue版本有两个&#xff0c;但检查之后发现只有一个&#xff0c;且为vue3的版本 2.也有说是因为命名的问题&#xff0c;组件名和页面名一致 最后发现是因为 在main.js里面引入element plus 使用这种use方式会报错&#xff0c;虽然也不知道为什么 import { createApp } …

《计算机系统与网络安全》第十一章 入侵检测与防御技术

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Dell-Precision5520 电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件配置 硬件型号驱动情况 主板Dell-Precision5520 处理器Intel Core i7-7820HQ已驱动 内存Micron 2400MHz DDR4 16GB x2已驱动 硬盘Samsung 970EVO 512GB已驱动 显…

Java中volatile的作用和原理

用法 volatile 是 Java 中的关键字&#xff0c;直接修饰成员变量&#xff0c;不能和 final 关键字同时使用。 private volatile boolean flag false;作用 当一个变量被声明为volatile时&#xff0c;它可以确保以下两点&#xff1a; 保证可见性&#xff1a;当一个线程修改了…

三维天地助力高校实验室数字化智能决策分析

近年来&#xff0c;随着检验检测行业技术的不断发展&#xff0c;高校实验室管理的复杂程度也在不断提高。由于传统的检测实验室日常工作任务繁重、费时费力&#xff0c;存在数据或信息的手动录入、人工计算&#xff0c;纸质文档资料的长期保存&#xff0c;数据快速汇总困难等诸…