JEP 477 通过隐式声明类和实例主方法提升初学者体验

JEP 477: 隐式声明类和实例主方法(第三次预览)

JEP 477 已经从“Proposed to Target”状态提升到“Targeted”状态。该提案旨在“发展Java语言,使学生能够在不需要理解为大型程序设计的语言特性的情况下编写他们的第一个程序。”这一JEP是继2022年9月由Oracle Java语言架构师Brian Goetz发布的博客文章《Paving the on-ramp》之后进一步推进的。Oracle技术团队咨询成员Gavin Bierman的最新规范文档草案已开放给Java社区进行审查。

背景与动机

Java长期以来因其构建大型复杂应用程序的能力而闻名,但其丰富的功能对于初学者来说可能显得复杂。为了解决这一问题,JEP 477引入了新的预览特性,简化了语言,使新程序员能够编写他们的第一个程序,而无需理解为大型应用程序设计的复杂语言结构。同时,这些特性也使有经验的开发者能够更简洁地编写小型程序,从而提高生产力和代码可读性。

特性介绍

  1. 隐式声明类:允许新程序在没有显式类声明的情况下编写。所有方法和字段都被视为隐式声明类的一部分,该类继承自Object,不实现接口,且不能在源代码中通过名称引用。
  2. 实例主方法:主方法不再需要是staticpublic,并且没有参数的方法也被视为有效的程序入口点。
  3. 简化控制台输出:隐式声明类现在自动从新的java.io.IO类中导入三个静态方法,用于简单的文本I/O,从而简化了控制台输出。

示例代码

传统的Hello, World!程序如下:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

通过JEP 477,可以简化为:

void main() {
    println("Hello, World!");
}

还可以进一步简化为:

String greeting = "Hello, World!";

void main() {
    println(greeting);
}

其他改进

  1. 自动导入:隐式声明类自动导入java.base模块中的所有公共顶级类和接口,减少了常用的API(如java.util.List)的显式导入需求。
  2. 预览特性:该特性是预览语言特性,需要通过JDK 23编译器和运行时的--enable-preview标志启用。

总结

JEP 477通过简化单类程序的声明过程,为初学者提供了一个渐进的学习曲线,使他们能够从简单、简洁的代码开始,逐步采用更高级的特性。通过简化语法和减少样板代码,Java继续保持了其作为适用于广泛应用的强大编程语言的声誉。这一增强不仅使Java对新程序员更加友好,还提高了有经验开发者在小型项目中的生产力和代码可读性。

阅读 33
0 条评论