当前位置: 首页 > news >正文

简化 Hello World:Java 新写法要来了


OpenJDK 的 JEP 445 提案正在努力简化 Java 的入门难度。

这个提案主要是引入 “灵活的 Main 方法和匿名 Main 类” ,希望 Java 的学习过程能更平滑,让学生和初学者能更好地接受 Java 。

提案的作者 Ron Pressler 解释:现在的 Java 语言非常适合开发和维护大型复杂应用程序,但学校在教编程时往往会从变量、函数和子程序等基本的小型编程概念开始,在这个阶段,往往不需要类、包和模块的大型编程概念。

但现在的 Java 对初学者不太友好,比如经典的 Hello, World! 入门程序 :

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

Ron 认为,作为新手入门的第一个程序,这段代码太复杂了。

比如 class 声明和强制性的 public 访问修饰符是大型编程结构,它们在封装具有定义良好的外部组件接口的代码单元时很有用,但在这个入门小示例中毫无意义。

String [] args 参数用于将代码与外部组件连接起来,但在这段代码里面不会被使用。

static 修饰符是 Java 类和对象模型的一部分,但在新手村出现也为时尚早。

作为优化,该提案首先增强了启动 Java 程序的协议灵活性:

  • 允许已启动类的 main 方法具有 public 、 protected 或默认(即包)访问权限。

  • 如果启动的类不包含带 String [] 参数的 static main 方法,但包含不带参数的 static main 方法,则调用该方法。

  • 如果启动的类没有 static main 方法,但有一个非 private 零参数构造函数(即 public 、 protected 或包访问)和一个非 private 实例 main 方法,然后构造该类的一个实例。如果该类有一个带 String [] 参数的实例 main 方法,则调用该方法;否则,不带参数调用实例 main 方法。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

如此一来便允许省略 main 方法的 String[] 参数,并允许 main 方法既不是 public 也不是 static 。

可以稍微简化 Hello, World! :

class HelloWorld { void main() { System.out.println("Hello, World!");}
}

此外,还要引入匿名 Main 类 来隐式声明 class :

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

到这里 Java 的 Hello, World!  入门程序已经到了简化,但在 Ron 眼里,该 JEP 提供的优化只是使 Java 更易于学习的第一步,像 System.out.println 这种长方法 / 函数也是需要简化的地方,不过这些问题需要在未来的 JEP 提案中逐步解决。

该优化属于预览语言功能,默认禁用。

要在 JDK 21 中尝试该示例,必须启用预览功能:用 javac --release 21 --enable-preview Main.java 编译程序,用 java --enable-preview Main 运行;或者使用源代码启动器时,使用 java --source 21 --enable-preview Main.java 运行程序。

有关灵活的启动协议和匿名 main 类的更多信息,可以在提案正文中详阅(https://openjdk.org/jeps/445)。

提案目标

  • 为 Java 提供平滑的入口,方便教育工作者可以循序渐进地介绍编程的概念。

  • 帮助学生以简洁的方式编写基本入门程序,并随着其 Java 技能增长,优雅地扩展代码。

  • 减少编写简单程序(例如脚本和命令行实用程序)的仪式。

  • 不要单独介绍 Java 的初学者方言。

  • 不引入单独的初学者工具链;编译和运行学生的程序,使用的工具应该和生产环境的 Java 程序相同。

http://www.lryc.cn/news/94027.html

相关文章:

  • 【服务器】springboot实现HTTP服务监听
  • 浅谈常见的加密算法及实现
  • FTP协议详解
  • 网络安全|渗透测试入门学习,从零基础入门到精通—渗透中的开发语言
  • 八大排序算法之归并排序(递归实现+非递归实现)
  • 基于SpringBoot+Html的前后端分离的学习平台
  • MySQL实战解析底层---“order by“是怎么工作的
  • Linux和Shell:开源力量与命令行之美
  • 服务负载均衡Ribbon
  • hibernate vilidator主要使用注解的方式对bean进行校验
  • 华为HCIP第一天---------RSTP
  • Jmeter(二) - 从入门到精通 - 创建测试计划(Test Plan)(详解教程)
  • Autosar诊断实战系列06-详解Dem中Event的NvM存储
  • 04 todoList案例
  • 海睿思分享 | 浅谈企业数据质量问题
  • 神经网络:激活函数
  • 图像色彩增强相关论文阅读-Representative Color Transform for Image Enhancement(ICCV2021)
  • Elasticsearch介绍与应用
  • JavaEE规范
  • 嵌入式实时操作系统的设计与开发New(八)
  • MySQL事务相关笔记
  • 如何利用AI高效率快速调色
  • 数据结构--顺序表的基本操作--插入 and 删除
  • BCSP-玄子Java开发之Java Web编程CH01_初识动态网页
  • 【软件教程】农林生环、水文、海洋、水环境、大气科学、人工智能、碳中和、碳排放、3S、R与统计等软件模型
  • 如何加入开源社
  • 软件开发中的破窗效应
  • 机器视觉初步6-1:基于梯度的图像分割
  • 从0开始,精通Go语言Rest微服务架构和开发
  • Sui x KuCoin Labs夏季黑客松|本周Workshop预告