速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

简化 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:006332

评论

发布
暂无评论
发现更多内容

卡塔尔央行启动CBDC项目 5月Solana区块链上创建近五十万种代币

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Web3.0区块链技术开发方案丨NFT项目开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

EdgeView 4 for Mac(快速图像查看器) v4.7.4版

Mac相关知识分享

macos Mac 办公软件 Mac软件

Naarak Studio DirEqual for Mac(文件夹比较工具)v5.8.3版

Mac相关知识分享

Mac 办公软件 Mac软件

李尔将收购西班牙自动化和智能公司WIP Industrial Automation

财见

Microsoft Remote Desktop for Mac(微软远程连接软件) v10.9.7版

Mac相关知识分享

Mac Mac软件 微软远程

工厂模式——工厂方法模式+注册表

快乐非自愿限量之名

工厂模式

DevOps全面综述:从概念到实践

EquatorCoco

DevOps 运维

低代码平台:国内十大低代码开发平台排名

优秀

低代码 低代码平台

你真的完全理解 Logistic 回归算法了吗

不在线第一只蜗牛

人工智能 数据挖掘 逻辑回归

探索区块链挖矿App开发:技术、挑战与未来展望

dappweb

Native Instruments Kontakt 7 for Mac(苹果专业音频采样器)v7.10.5版

Mac相关知识分享

Mac Mac软件 音频处理

为什么观测云选择持续输出最佳实践

可观测技术

可观测性

Native SQLite Manager for Mac(极简SQLite数据库管理器) v1.28.0版

Mac相关知识分享

数据库 Mac Mac软件

Web3.0区块链技术开发方案丨2D3D多类型链游开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Web3.0区块链技术开发方案丨ICO与IDO代币开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Web3.0区块链技术开发方案丨dapp项目模式制度开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Web3.0区块链技术开发方案丨中心化与去中心化交易所开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

作为CTO,你还能忍受公司内部监控系统的无限增殖吗?

可观测技术

监控

Python高频面试题解析公开课

霍格沃兹测试开发学社

软件测试学习笔记丨Flask操作数据库一对多操作

测试人

软件测试

不懂ArkTS语言会影响鸿蒙App的开发吗?

Geek_2305a8

探索API主导的最佳AI创业项目商业模式

幂简集成

AI 商业模式 API

豆瓣评分9.6!有趣又实用的典范,Python小白应该人手一份!

我再BUG界嘎嘎乱杀

Python 编程 入门 开发语言 零基础

软件测试学习笔记丨Flask操作数据库-数据增删改查

测试人

软件测试

Dynatrace仅是APM,你需要的是全方位的监控观测平台

可观测技术

监控

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