JAVA 新提案:努力简化 Hello World 写法
OpenJDK 的 JEP 445 提案正在努力简化 Java 的入门难度。这个提案主要是引入“灵活的 Main 方法和匿名 Main 类” ,希望 Java 的学习过程能更平滑,让学生和初学者能更好地接受 Java 。
提案的作者 Ron Pressler 解释:现在的 Java 语言非常适合开发和维护大型复杂应用程序,但学校在教编程时往往会从变量、函数和子程序等基本的小型编程概念开始,在这个阶段,往往不需要类、包和模块的大型编程概念。但现在的 Java 对初学者不太友好,比如经典的 Hello, World! 入门程序 :
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 方法。
如此一来便允许省略 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 类的更多信息,可以在提案正文中详阅。
提案目标
为 Java 提供平滑的入口,方便教育工作者可以循序渐进地介绍编程的概念。
帮助学生以简洁的方式编写基本入门程序,并随着其 Java 技能增长,优雅地扩展代码。
减少编写简单程序(例如脚本和命令行实用程序)的仪式。
不要单独介绍 Java 的初学者方言。
不引入单独的初学者工具链;编译和运行学生的程序,使用的工具应该和生产环境的 Java 程序相同。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
树莓派获得索尼投资,将带来芯片级 AI
索尼与树莓派一直保持着非常紧密的合作,自 2012 年树莓派成立以来,索尼就一直在负责树莓派产品的生产制造。在 2021 年,树莓派还推出了官方的「回收翻新」计划,回收回来的旧产品都会被送至索尼技术中心,经过全面测试、修复和翻新后,再以较低的价格转售。 在今年 1 月和 3 月,树莓派还联合索尼推出了 Camera Module 3 和 Global Shutter Camera 这两个相机模块。 如今,树莓派和索尼之间的合作关系进一步加深,索尼集团的子公司 Sony Semiconductor Solutions(索尼半导体解决方案)在一份声明中表示,他们已经向树莓派进行了战略投资,这项交易旨在推进其在 AI 方面的研究,只不过具体的投资金额并没有披露。 虽然没有透露具体的融资金额,但树莓派的联合创始人兼首席执行官 Eben Upton 表示,他们以与 2021 年一轮融资相同的 5 亿美元估值筹集了现金,而当时的那笔融资带来了 4500 万美元。 通过此次合作,未来的树莓派产品将在芯片组上集成索尼的 Aitrios 边缘计算 AI。这可以让树莓派硬件在本地运行机器学习负载,而不用依...
- 下一篇
开发者使用 GPT-4 创建“金刚狼”,实现自修复 bug
开发者"BioBootloader"基于 GPT-4 开发了一个 AI 程序,命名为"Wolverine"(金刚狼)。它具有和超级英雄金刚狼一样的“自愈”能力——可以不断地对代码进行 debug,直到被修复,为 Python 程序提供了“再生治疗”。 根据 BioBootloader 的介绍,Wolverine 用法很简单。使用者只需用它来运行自己的 Python 脚本,当它们出现问题时,GPT-4 会自动编辑并解释出了什么问题。即使脚本有很多错误,它也会反复重新运行,直到一切都被修复。 在 Wolverine 的演示视频中,BioBootloader 展示了一个并排的窗口,左侧是 Python 代码,右侧是终端中 Wolverine 运行的结果。他加载了一个自定义计算器脚本,并在其中故意添加了一些错误,然后执行它。 演示视频地址:demo video 先来看看正确的代码片段: BioBootloader 故意将返回值"result"改为"res",并删除了"subtract_numbers(a, b)"函数。 毫无疑问,运行这段脚本会报错。这时候 Wolverine 便派上了用场。 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Hadoop3单机部署,实现最简伪集群