AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

评论

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

已发表的技术文章-大数据方面

绝影-大数据

短视频时代下的知识摄取

Neco.W

学习 知识管理 知识体系 短视频

美国播客节目《指数视角》专访李飞飞:疫情、 AI 伦理、人才培养

神经星星

人工智能 程序员 李飞飞 硅谷 AI 伦理

我们都可能陷入经济困境

董一凡

生活

谈谈控制感(10):怎么做一个靠谱的人

史方远

职场 心理 成长

技术工作中的颜值

N维空间的尘埃

df 和 ls 命令执行夯主

首富手记

生产力

ARTS week 1

丽子

实战 Java8-CompletableFuture

子路无倦

Java 多线程 java8 CompletableFuture

要和竞争对手做比较吗?

邓瑞恒Ryan

创业 战略管理

Java开发工具与HelloWorld

编号94530

Java eclipse Hello World ! IDEA 开发工具

这个名字,你不能再读错了

小天同学

历史 科普

我的时间管理之路(附工具集合及使用心得)

YoungZY

App 时间管理

ARTS打卡 第1周

引花眠

ARTS 打卡计划

孩子,我们在睡前一起来阅读 15 分钟的好书,让彼此都带着好的故事入眠。

叶小鍵

正确阅读 托马斯·奥本 Doug Antin 蒂·泰德罗克

系统化服务构建-软件工程分层

图南日晟

微服务 软件工程 架构设计

如何在团队中做好Code Review

Ken

团队协作 代码审查 Code Review 代码质量

自制操作系统

贾献华

字符与编码

引花眠

计算机基础 utf-8

不要抱怨,也别憋屈

孙苏勇

职场 随笔杂谈

Flink 完美搭档:数据存储层上的 Pravega

Apache Flink

大数据 flink 流计算 实时计算

docker19.03读取NVIDIA显卡

首富手记

Docker Dockerfile

C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

Python名人堂

C# .net 算法 LeetCode

阿里的OceanBase上天了,但你还不会用Explain看SQL的查询计划吗?

Super~琪琪

MySQL 数据库 后台开发 后端

世界那么大,你有偏见吗?

谢锐 | Frozen

创业 技术管理

重新开始,被自己搞砸的生活

小天同学

个人感想 日常思考

怎么控制老板不断加需求?

kimmking

Java运算符实际运用

凌轩

Java 编程语言

关于用户体验的一些思考

码字与律动

android 产品开发

【转载】如何在团队中做好Code Review?

北纬32°

写给产品经理的信(2):产品设计能力怎样进阶

punkboy

产品 个人成长 产品经理 产品设计 进阶

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