Data+AI时代,如何打造下一代数智平台? 了解详情
写点什么

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

评论

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

让JavaScript在WebAssembly上快速运行

代码先生

JIT webassembly WASI

企业管理软件开发新模式:抛开旧思维,轻松做系统

雯雯写代码

软件开发 企业管理

Go timer 是如何被调度的?

HHFCodeRv

Go 语言

双向链表,还能这么实现

实力程序员

深度分享丨如何使用微细分仪打造金融场景下的战术级客户分群

索信达控股

大数据 金融科技 用户细分 客户数据平台 客户画像

【Vue2.x 源码学习】第七篇 - 阶段性梳理

Brave

源码 vue2 6月日更

读深入ES6记[一]

蛋先生DX

ES6 6月日更

Chia奇亚挖矿app开发|系统搭建

開發I3O6O643Zq7

挖矿 #区块链# IPFS怎么挖矿 Chia奇亚挖矿

公安警情研判分析系统搭建,警情可视化指挥调度

APISIX2.6微服务网关入门

菠萝吹雪—Code

架构实战营

Service worker 的概念和用法

编程三昧

大前端 ServiceWorker

独热编码&词向量

Qien Z.

nlp 6月日更 独热编码 词向量 句子向量

数仓建设之路(一)

undefined

MySQL next-key lock 加锁范围总结

程序员小航

MySQL 索引 锁机制

百度Geek们教你怎样成为复盘高手

百度Geek说

上新!H3C Magic NX54双频5400M Wi-Fi 6路由器:549元

科技热闻

Git使用

xujiangniao

react源码解析8.render阶段

全栈潇晨

React react源码

【LeetCode】汉明距离Java题解

Albert

算法 LeetCode 6月日更

【Flutter 专题】126 图解自定义两侧对齐 ACETabBar 标签导航栏

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

分布式管理员zookeeper

卢卡多多

zookeeper CAP 6月日更

El Camino de Santiago

escray

6月日更

安卓内存监控悬浮窗,算法题+JVM,知识点总结+面试题解析

欢喜学安卓

android 程序员 面试 移动开发

不看绝对血亏!跳槽面试大厂被拒,2021最新版!

欢喜学安卓

android 程序员 面试 移动开发

Java 并发编程—— Exchanger

Antway

6月日更

阿里云,让「服务」成为一种先进生产力

ToB行业头条

云计算 阿里云

Bzz云算力挖矿app开发,Bzz分币系统搭建

云图说|OLAP开源引擎的一匹黑马,MRS集群组件之ClickHouse

华为云开发者联盟

Clickhouse MRS 华为云 云图说 OLAP开源引擎

如何看懂常用原理图符号、如何阅读原理图

不脱发的程序猿

电路设计 原理图符号 阅读原理图

如何合并K个有序链表

Skysper

算法

美团主办国际顶会ICCV 2021研讨会,食品视觉领域顶级挑战赛开启报名

科技热闻

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