写点什么

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

评论

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

开源大数据OLAP引擎最佳实践

五分钟学大数据

数仓 4月月更

rm格式的文件怎么打开?

InfoQ IT百科

电脑上怎么快速切换显示不同的软件界面

InfoQ IT百科

悟空的私藏「架构』书籍推荐

悟空聊架构

4月日更 悟空聊架构

面向全球市场,PlatoFarm今日登录HUOBI等全球四大平台

西柚子

2022年,网传苹果即将发布的新机型iPhone 14 Pro和iPhone 14 Pro Max将会是全新屏幕造型,不再是刘海屏,你对新屏幕造型的iPhone 14期待吗?

InfoQ IT百科

APP应该关注哪些数据指标?

InfoQ IT百科

坚持做正确的事情

FunTester

优麒麟 22.04 LTS 版本正式发布 | UKUI 3.1开启全新体验!

优麒麟

Linux 开源 操作系统 优麒麟 22.04

CrashSight 常规功能&特色功能介绍

WeTest

面向全球市场,PlatoFarm今日登录HUOBI等全球四大平台

小哈区块

全网征集!说说你跟宜搭之间的故事吧

一只大光圈

阿里 低代码 数字化 钉钉宜搭 宜搭

2022年,5G芯片会有哪些值得期待的发展趋势?

InfoQ IT百科

企业级知识管理(KM)建设方法及过程

小炮

知识管理

报名开启|QKE 容器引擎托管版暨容器生态发布会!

青云技术社区

社区运营书籍推荐

坚果

4月月更

对线郭老师职业发展,记下自己的心得体会

北洋

面试 职业规划 程序猿 4月月更

这个API Hub厉害了,收录了钉钉企业微信等开放Api,还能直接调试 !

Liam

前端 Postman API OpenAPI 开放api

Go 学习笔记——Switch(我不是游戏机)

为自己带盐

Go 学习笔记 4月月更

如何彻底删除电脑上的文件?

InfoQ IT百科

Rust异步框架的性能评估

非凸科技

tokio Zenoh 异步框架 async_std smol

敏捷实践 | 提高小组可预测性的敏捷指标

LigaAI

敏捷开发 敏捷度量

如何通过云效Codeup完成代码合并 | 云效

阿里云云效

云计算 阿里云 代码管理 Codeup 代码合并

为什么智能手机传感器市场一直是索尼占主导

InfoQ IT百科

你知道你的手机上有多少传感器吗?

InfoQ IT百科

手机运行内存应该怎么选?

InfoQ IT百科

秒云助力中电科32所发布“基于拟态应用集成框架的SaaS云管理平台解决方案”

MIAOYUN

内生安全 拟态应用集成框架 网络空间内生安全大会

企业级知识管理(KM)建设方法及过程

小炮

知识管理

众妙之门玄之又玄,游戏系统中的伪随机(Pseudo-Randomization)和真随机(True-Randomization)算法实现Python3

刘悦的技术博客

算法 游戏 Python3 算法实践 随机数

科创人·派拉软件CEO谭翔:零信任本质是数字安全,To B也要深研用户心智

科创人

设计千万级学生管理系统的考试试卷存储方案

哈喽

「架构实战营」

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