JDK 9:JShell和Jlink——Java开发与部署的新篇章

简介: JDK 9引入了两个强大的新特性:JShell和Jlink,它们为Java开发者和部署带来了巨大的便利。本文将详细介绍这两个特性的原理、优势以及如何在实际开发中应用它们。

一、JShell的原理与优势

JShell是JDK 9中新增的交互式Java命令行工具,它允许开发者在命令行环境中直接运行Java代码片段,无需创建完整的Java类或项目。

  1. 快速原型设计: JShell使得开发者能够快速尝试和测试Java代码片段,无需编写完整的类或程序。这对于快速原型设计和调试非常有用。
  2. 即时的反馈循环: 使用JShell,你可以即时查看代码的输出结果,从而快速验证代码的正确性。
  3. 集成到IDE: 许多现代IDE(如IntelliJ IDEA和Eclipse)已经集成了JShell功能,使得开发者可以在IDE内部直接运行代码片段。

二、实际应用示例

使用JShell非常简单。只需在命令行中输入“jshell”并按下回车键,即可启动JShell。然后,你可以直接输入Java代码并查看其输出。例如:

jshell> int x = 5;
jshell> System.out.println(x);
5

三、Jlink的原理与优势

Jlink是JDK 9中引入的链接器,允许开发者创建自定义的Java运行时映像,只包含应用程序实际使用的模块。这为Java应用程序的部署提供了更大的灵活性。

  1. 定制化部署: 通过使用Jlink,开发者可以创建仅包含应用程序所需模块的自定义运行时映像,从而减小映像大小并提高部署速度。
  2. 减少类加载器开销: 由于只包含必要的模块,Jlink可以减少应用程序的类加载器开销,提高性能。
  3. 简化部署过程: Jlink简化了Java应用程序的部署过程,因为开发者只需打包一个包含所有必要模块的自定义运行时映像,而无需担心依赖关系和类路径问题。

四、实际应用示例

使用Jlink创建一个自定义运行时映像的步骤如下:

  1. 使用“jdeps”工具分析应用程序的依赖关系,确定需要的模块。
  2. 使用“jlink”命令行工具创建一个自定义的运行时映像,指定所需的模块。例如:
    jlink --module-path <module_path> --add-modules <modules> --output <output_directory>
    
    其中,“”是模块路径,“”是需要包含在运行时映像中的模块,“”是输出目录。
  3. 将自定义的运行时映像作为应用程序的运行时环境。在启动应用程序时,指定该运行时映像作为JVM的路径。例如:
    java --add-modules <modules> -p <runtime_image_path> -m <module_name>/<main_class>
    
    其中,“”是自定义运行时映像的路径,“”是包含主类的模块名,“”是主类的名称。

五、总结

JDK 9中的JShell和Jlink为Java开发者和部署带来了巨大的便利。通过快速原型设计和即时反馈循环,JShell提高了开发效率;而通过创建自定义的运行时映像,Jlink简化了Java应用程序的部署过程,提高了部署灵活性。随着更多开发者熟悉这两个特性,相信它们将在未来的Java版本中发挥更大的作用。

相关文章
|
20天前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
96 7
|
1月前
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
65 5
|
26天前
|
人工智能 Java 定位技术
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
本文以原理与示例结合的形式讲解 Java 开发者如何基于 Spring AI Alibaba 框架玩转 MCP。
698 90
|
1月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
226 70
|
25天前
|
人工智能 Java 定位技术
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
本文详细讲解了Java开发者如何基于Spring AI Alibaba框架玩转MCP(Model Context Protocol),涵盖基础概念、快速体验、服务发布与调用等内容。重点包括将Spring应用发布为MCP Server(支持stdio与SSE模式)、开发MCP Client调用服务,以及在Spring AI Alibaba的OpenManus中使用MCP增强工具能力。通过实际示例,如天气查询与百度地图路线规划,展示了MCP在AI应用中的强大作用。最后总结了MCP对AI开发的意义及其在Spring AI中的实现价值。
460 9
|
2月前
|
机器学习/深度学习 人工智能 NoSQL
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
随着大模型的越来越盛行,现在很多企业开始接入大模型的接口,今天我从java开发角度来写一个demo的示例,用于接入DeepSeek大模型,国内的大模型有很多的接入渠道,今天主要介绍下阿里云的百炼模型,因为这个模型是免费的,只要注册一个账户,就会免费送百万的token进行学习,今天就从一个简单的可以执行的示例开始进行介绍,希望可以分享给各位正在学习的同学们。
279 3
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
|
1月前
|
人工智能 Java 物联网
没有好的学历,Java开发未来的路应该怎么走?
在数字化时代,Java开发者即使没有高学历,也能通过拥抱新兴技术(如大模型应用与鸿蒙系统开发)、积累实战经验、持续学习新技能等途径实现职业突破。从参与开源项目到关注行业动态,再到规划技术专家或管理路线,建立人脉网络并利用教育平台提升能力,开发者可拓宽技术边界,适应日新月异的技术需求,在未来发展中占据一席之地。
|
2月前
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
104 0
|
19天前
|
Oracle Java 关系型数据库
Tomcat和JDK的详细安装、下载和环境配置指南
以上就是JDK和Tomcat的下载、安装和环境配置的详细步骤。希望这个指南能帮助你顺利完成设置。
97 32
|
8月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
695 61