【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

简化 Java 开发:启动多文件源码程序

  • 2024-03-22
    北京
  • 本文字数:1026 字

    阅读完需:约 3 分钟

大小:470.75K时长:02:40
简化Java开发:启动多文件源码程序

JEP 458(启动多文件源码程序)已经在 JDK 22 中 交付。这个 JEP 提议对 Java 启动器进行增强,可以执行包含一个或多个文件的 Java 源码应用程序。这样就可以通过推迟一个完整的项目设置来实现从小型应用程序到大型应用程序的渐进式过渡。


JDK 11 引入了 JEP 330 ,开发者可以直接使用 java 命令执行单个文件源码程序,但这个功能仅限于包含在单个 .java 文件中的程序。新的增强将此功能扩展到多文件源代码程序,通过减少初始设置要求并允许更加探索性的编程方法来促进更无缝的开发过程。


这一动机源于这样一个认识:所有大型程序都是从小项目开始的。在开发的早期阶段,重点是进行调试和探索,而不是最终的可交付成果。项目结构通常是流动的,在开发过程中频繁变更。JEP 458 通过执行多文件源码程序而不需要进行显式编译来支持快速迭代和变更,这在开发的初始阶段是至关重要的。这种方法通过消除学习和配置额外工具(如 Java 编译器(javac)或第三方构建系统)的即时需求,大大降低了经验丰富和新手开发者的障碍。


这个特性简单而强大。例如,假设一个目录包含两个文件,Prog.javaHelper.java,每个文件声明了一个类:


// Prog.java
class Prog {
public static void main(String[] args) { Helper.run(); }
}
// Helper.java
class Helper {
static void run() { System.out.println("Hello!"); }
}
复制代码


运行 java Prog.java 将在内存中编译 Prog 类并调用它的 main 方法。如果 Prog 类引用了 Helper 类,则启动器将自动在内存中编译 Helper.java。这个过程由 Java 启动器动态管理,根据需要编译和加载类,而不强制执行特定顺序,从而促进更灵活的开发工作流程。


为了确保与现有 Java 项目的顺利集成,增强功能规定只编译程序直接引用的 .java 文件。这样可以防止意外编译位于同一目录中的过时或实验性代码。此外,启动器遵循 Java 的打包约定,要求按照包结构组织源文件。这种结构化方法延伸到了模块化源码程序的处理,启动器能够识别并根据源树根目录中是否存在 module-info.java 文件来编译模块。


该提案明确规定了一些“非”目标。它明确表示,不支持通过 "shebang" 机制启动多文件源码程序,只支持单文件程序。此外,它的目标不在于简化源码程序中外部库依赖的集成,但在未来潜在的增强中会考虑这一目标。


这次对 Java 应用启动器的更新代表了 Java 开发生态系统向前迈出了重要一步,满足了 Java 社区不断发展的需求。


原文链接

https://www.infoq.com/news/2024/02/multi-file-program-launching/

2024-03-22 00:006045

评论

发布
暂无评论

自动化测试,有最佳实践吗?

老张

软件测试 自动化测试

大文件上传原理及实现方案 | 京东物流技术团队

京东科技开发者

4份报告简读Java生态

4ye

JVM, Java’

Seal 新春大挑战等你来参与!

SEAL安全

AI DevOps Walrus

macs fan control pro破解版序列号 mac电脑风扇控制 v1.5.17中文版

Rose

苹果电脑 风扇转速控制 Macs Fan Control Pro

高效率软件开发工具,提速开发,真的很赞!

互联网工科生

软件开发 低代码 JNPF

【教程】一个比较良心的C++代码混淆器

wrk压测

WiFi 7/QCN9274: Connecting the super network of the future

wallysSK

这篇深入浅出贴 助你早日实现Stable diffusion自由

京东科技开发者

有了ERP和MES,还需要质量管理QMS系统吗?

万界星空科技

数字化 生产管理系统 mes 万界星空科技 QMS

浅谈LocalCache | 京东云技术团队

京东科技开发者

Bookends for Mac(文献书籍管理工具)v14.2.9注册激活版

Rose

IT工单治理野史:由每周最高150+治理到20+ | 京东物流技术团队

京东科技开发者

100%中奖、会员回馈礼…星河会员新春福利到!

飞桨PaddlePaddle

百度 飞桨 飞桨AI 飞桨星河社区

Kubeadmiral 开源编程挑战 —— 我觉得不错

miraclejzd

字节跳动 Kubernetes 云原生 Kubeadmiral

2023 年已知被利用最多的十大CWE漏洞排名

华为云PaaS服务小智

软件开发 华为云

如何使用低代码+定制,打造一个个性化的社交媒体平台?

天津汇柏科技有限公司

低代码 定制软件开发 软件开发定制

测试开发+人工智能大礼包,让你在假期实现弯道超车

测试人

软件测试

全新 Amazon S3 Express One Zone 高性能存储类服务,震撼发布!

亚马逊云科技 (Amazon Web Services)

迎龙年接新春,来华为手机里寻找祥龙

最新动态

通义灵码——灵动指间,快码加编,你的智能编码助手

阿里巴巴云原生

阿里云 云原生

“祥龙守神州,舞瑞中国年”,京东超市携手王牌驼喜迎新春

科技热闻

安卓动态链接库文件体积优化探索实践

京东科技开发者

假期想学习,送你测试开发+人工智能大礼包

霍格沃兹测试开发学社

【教程】Python代码混淆工具,Python源代码保密、加密、混淆

雪奈椰子

OpenSPG新版发布:大模型知识抽取与快速知识图谱构建

百度开发者中心

人工智能 知识图谱 智能客服 大模型

Wireshark中的http协议包分析

小齐写代码

部署Palworld幻兽帕鲁服务器最佳实践(Ubuntu)

天翼云开发者社区

云计算 最佳实践 服务器 云服务器

KubeEdge v1.16.0 版本发布!10项新增特性

华为云开发者联盟

k8s 开发 华为云 kubeedge 华为云开发者联盟

探索大模型训练与多模态数据处理

百度开发者中心

人工智能 图像 大模型训练

简化Java开发:启动多文件源码程序_编程语言_A N M Bazlur Rahman_InfoQ精选文章