Java 21 将不再有public static void main !

基于传统算法的半导体晶圆缺陷检测原理及代码(二) 了解基于传统算法的半导体晶圆缺陷检测原理和方法,对于深入理解半导体制造工艺和质量控制具有重要意义。在半导体制造技术持续创新的浪潮中,基于传统算法的缺陷检测技术也将不断演进,为半导体产业的高质量发展提供坚实可靠的技术支撑,确保在芯片制造的每一个环节都能精准识别和管控缺陷,推动半导体产业迈向更高的发展水平。基于传统算法的半导体晶圆缺陷检测技术在半导体制造的长期发展历程中扮演了重要角色,凭借其成熟的技术体系、较快的检测速度和相对较低的成本,在各个工艺阶段为保障晶圆质量发挥了关键作用。 阅读详情

之前的Java是这样:

47ba522a84e3d63bc4cf97e99e3adc38.png

Java 21会是这样:

0704b9d002294d2d954a7051612280ee.png

看到这个消息,我最大的感受是: 

卧槽,怎么就Java 21了?!我还在用Java 8 呢!

实际上,从Java 8 到Java 21,中间也就是Java 11, Java 17是长期支持版本,其他的都是“小”版本,变化不大。 

这次去掉“public static void main”的提案来自JEP 445: Unnamed Classes and Instance Main Methods。

长期以来,关于Java的抱怨是“太冗长”,“太多仪式感”,Java把这种仪式感强加给了所有首次学习它的人。

对于类的声明和public static void main,每个新手都觉得是难以理解的咒语,它们成为了学习道路上的巨大障碍。 

有个可爱的美国老师居然创作了一首RAP来帮助新手记忆“public static void main”!

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

对于新手来说,这简单的五行代码说,信息严重过载了:

(1) 类上的public   

它只有在跨越package访问时才有意义,为什么一个简单的Hello World都必须把它写上?

(2) class 

新手只想写个hello world ,他们还必须理解什么叫类吗?

(3) 方法上的public 

这是什么鬼?为什么要加个public

(4) static 

新手根本理解不了什么静态方法,为什么需要静态方法。

(5)  String[] args

这个参数的定义,对于新手来说也是一团雾水

(6) System.out.println(...)

System是个类,out是个静态字段,println是实例方法,学生们唯一关心的是println啊。

在上课的第一天就需要解释很多东西,快下课了,学生也写不出任何程序,老师只好说:先记住吧,以后你会明白的。

所以Brian Goetz认为,必须要简化这一切。

第一步使用更宽容的“启动协议”,可以改成这样:

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

第二步通过引入“未命名的类”,改成这样:

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

第三步,“自动导入静态方法”,改成这样:

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

看起来更加清晰明了,对于Java初学者将会非常友好。 

但是真正到了JEP当中, System.out.println还是被保留了,不知道为什么。

对于这个变化,网友们炸锅了,有人说:Hey, 你忘记了一个东西:Script

d8d2d2c24a98b79a5808638795a677a2.png

还有人说,以后Java的logo应该变成这样:

e4513d085d9c98931a1d13ddb2335aef.png

需要提醒各位的是,这是个预览功能,在JDK中默认是禁用的,主要是为了降低在教Java时的认知负担。

经过这二十多年的发展,围绕Java建立了庞大的生态,各种各样的软件应有尽有,让Java极其成功的同时,也让Java背上了沉重的包袱,要想简化成Python,JS那样的脚本语言,几乎不可能了,这次能够迈出一小步已经是难能可贵了。

参考资料:https://openjdk.org/projects/amber/design-notes/on-ramp

https://openjdk.org/jeps/445

(完)

最后宣传下我和闪客建立的星球“ChatGPT基地”,专门探索程序员在ChatGPT时代的定位,如何使用ChatGPT来提升工作效率。

在程序员领域,我们这个星球可能是玩ChatGPT玩得最深入的,已经远远超出了ChatGPT聊天的阶段,很多人进入了API开发,甚至私有化模型训练。

ChatGPT聊天 ->使用ChatGPT API开发应用 -> 训练私有化部署大模型

这里的朋友们很多已经从小白进化成ChatGPT领域的熟练玩家,星球的专栏有很多有价值的主题:

60df698201c5e8e8b22abe24660dcc95.png

来到这个星球,用心刷上个几天,你就不知不觉超越了这个领域 99% 的人了。

现在星球有这些活动:

加入星球即送ChatGPT账号(仅限今天进入星球的前100名,联系方式:加微信onlyliuxin97,暗号:ChatGPT星球)

输出优质内容即送100元红包

现在星球处于试运行期,原价199元,现在有个100元的优惠券,相当于99元就可以加入,早点儿拥抱ChatGPT,成为第一批会用ChatGPT和用好ChatGPT的人,占据先机,吃到红利。

a548e6e793da9b887664d9e528b09286.png

C#串口通信上位机开发实战:轻松实现硬件控制与数据交互 摘要:本文介绍如何使用C#开发串口通信上位机应用,实现与硬件设备(如传感器、PLC等)的数据交互。文章涵盖串口通信原理、开发环境配置、功能实现(串口连接管理、数据收发、实时显示)及UI设计,重点讲解SerialPort类的应用、多线程数据接收处理和错误优化。通过Windows Forms构建直观界面,帮助开发者快速掌握工业控制和自动化系统中的串口通信技术,为物联网和智能设备开发提供实用解决方案。全文约150字。 阅读详情

相关推荐

告别机载网络通信混乱:利用ARINC825的LCC与带宽管理机制构建高可靠CAN总线

本文深入探讨了ARINC825规范如何通过逻辑通信通道(LCC)和带宽管理机制解决机载CAN总线通信的混乱问题。文章详细解析了ARINC825的核心架构设计、LCC工程实现、时间触发带宽管理等关键技术,展示了其在提升航空电子系统可靠性和实时性方面的显著效果,为现代飞机通信系统提供了高可靠解决方案。

weixin_26878995的博客 241

Java21的 main 方法声明要变天了吗?

程序员的成长之路互联网/程序员/技术/资料共享关注阅读本文大概需要 2.8 分钟。来自:网络,侵删如果你是一位苦逼的 Java 程序员,那么当你看到这张图的时候也许震惊的会跳起来!但是我最大的感受是:卧槽,怎么就Java 21了?!我还在用Java 8 呢!实际上,从Java 8 到Java 21,中间也就是Java 11, Java 17是长期支持版本,其他的都是“小”版本,变化不大。这次...

良月柒 339

新手必看:如何用R/qtl快速完成QTL定位分析(附实战代码)

本文为新手提供了使用R/qtl进行QTL定位分析的完整实战指南。内容涵盖从环境搭建、数据准备与清洗,到核心分析流程(包括遗传图谱计算、单QTL扫描、置换检验确定阈值)以及进阶结果可视化的全步骤。通过清晰的代码示例,帮助读者快速掌握这一数量遗传学关键分析技术,实现从数据到QTL峰值的完整分析闭环。

y7z8a的博客 504

Java 21 新特性—未命名类和实例的main方法

作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!

smart_an的专栏 1604

Quartus安装Altera USB-Blaster安装驱动程序出现问题(代码39)的解决办法

Quartus安装Altera USB-Blaster安装驱动程序出现问题(代码39)的解决办法

MCU_HOT的博客 1万+

C# WPF多页面间的数据共享(经典)

实现页面间的数据共享有很多方法,比如:①事件的发布订阅 ②委托③ioc容器④静态类等,这节主要通过静态的集合实现数据的添加和获取。

sf315418的博客 639

java为什么不需要头文件_关于什么情况下不需要include 头文件

include头文件有两种情况1.有头文件A头文件B在头文件B中include头文件A2.有头文件Ac文件D假如头文件B或c文件D要用到头文件A里面声明的东西话,我们都要include头文件A。但是后来发现有时候不include头文件A,也是可以用到A里面声明的东西,例如一些宏定义,不知道是不是makefile里面有些东西让它其作用。想问一下大家一下,哪些东西定义在头文件中,即...

weixin_39637059的博客 549

PD3.0详解 第十一章 策略层 电源协商(三)(sink端)

前面大师匈介绍了Source端的内容,今天再看一下sink端的内容。大师匈还是想把标准文件的状态机拿出来说一下。大师匈把一张图分成俩部分,大家凑合看一下,一张图实在看不清内容。 Sink 端电源协商状态机。基于sink端哦!!! 上图先!!! 上面俩张图就是整个SINK端口的状态机了。。。介绍一下这个流程: 1、收到hardreset或者刚上电的进入PE_SNK_Startup开始状态。 2、在PE_SNK_Startup阶段后进入PE_SNK_Discovery,并等待Vbus的到来。 3、当Vbus

大师匈的博客 4133

在xxx类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 ……/eclipse运行Java文件时执行上一个窗口

解决Java程序运行时找不到main方法或执行错误程序的常见问题。当Eclipse默认执行主类而找不到main方法时,可通过以下步骤解决: 1.进入Run→Run Configurations; 2.选择包含main方法的正确包和类; 3.确认后运行程序。该方法适用于解决找不到main方法或总是执行上一个程序的问题,确保程序从正确的入口启动。

BuerYouth分享 3661

基于jeecgboot3.9.0的项目管理——项目工作台(二)

基于jeecgboot3.9.0的项目管理——项目工作台(二)

宁波阿成的博客 206

电化学-论文分享-NanoStat: An open source, fully wireless potentiostat

本文主要分享论文NanoStat: An open source, fully wireless potentiostat,并记录学习笔记。如果有条件,建议看原文最好。

分享技术笔记,希望对大家能够有一定的帮助,同时也通过归纳总结提升自己的个人能力。 2878

Java 21 新功能展示(含示例)

Java 21 于 2023 年 9 月 19 日发布,是 Oracle 标准 Java 实现的下一个长期支持(LTS)版本。Java 21 具有以下 15 项功能。字符串模板(预览版) [JEP-430]序列集合 [JEP-431]代 ZGC [JEP-439]记录模式 [JEP-440]开关的模式匹配 [JEP-441]外来函数和内存 API(第三次预览) [JEP-442]未命名模式和变量(预览) [JEP-443]虚拟线程 [JEP-444]

长河的博客 1605

Q3D提取PCB走线RLCG参数

介绍一种提取PCB走线寄生电容和寄生电感的方法

sinat_15150363的博客 2926

java类加public和不加public

加public表示全局类,该类可以import到任何类内。不加public默认为保留类,只能被同一个包内的其他类引用。

斜阳雨陌 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

public static void main(String[] args){}函数诠释

主函数的一般写法如下:   public static void main(String[] args){…}   下面分别解释这些关键字的作用:   (1)public关键字,这个好理解,声明主函数为public就是告诉其他的类可以访问这个函数。   (2)static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当...

anshi5303的博客 436

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

关于 public static void main(String[] args) {...}

public static void main(String[] args) 这绝对不是凭空想出来的,也不是没有道理的死规定,而是java程序执行的需要。 jvm在试图运行一个类之前,先检查该类是否包含一个特殊方法。 这个方法必须是公有的,以便在任何位置都能访问得到。 这个方法必须是s...

choushe1877的博客 1293

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

public static void main(String[] args) {

public static void main(String[] args) {

weixin_73844684的博客 262

Static关键词与Main方法详解

Static与main

Tweek_的博客 290

java中main关键词_Java中的main函数详细讲解

JAVA中的主函数是我们再熟悉不过的了,相信每个学习过JAVA语言的人都能够熟练地写出这个程序的入口函数,但对于主函数为什么这么写,其中的每个关键字分别是什么意思,可能就不是所有人都能轻松地答出来的了。我也是在学习中碰到了这个问题,通过在网上搜索资料,并加上自己的实践终于有了一点心得,不敢保留,写出来与大家分享。主函数的一般写法如下:public static void main(String[]...

weixin_34501965的博客 1668

Java 21颠覆传统:未命名类与实例Main方法的编码变革

本文将深入研究Java 21中引入的创新特性——未命名类和实例Main方法。我们将详细探讨这一功能的语法结构、用法和其在实际编程中的应用。通过实例演示,读者将了解如何利用未命名类和实例Main方法构建更灵活、更模块化的代码结构。无论您是Java开发者、技术爱好者还是对最新编程特性的追随者,本文将为您揭示Java 21的这个引人瞩目的创新,带您领略未命名类和实例Main方法带来的编码新体验。跟随我们一同迎接Java编程的未来!

学而时习之,不亦说乎?温故而知新,可以为师矣! 906

Java经典面试题 带答案(三)_public class te1 {public static void main(string[]

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。erpreter(解释器模式),Visitor(访问者模式),Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),

2401_85699235的博客 884

3. 【Java】Hello, World!:第一行 Java 代码

本文手把手教你从零开始编写并运行第一个 Java 程序 “Hello, World!”。内容涵盖在 IntelliJ IDEA 中创建项目、编写代码、编译运行的全过程,并对代码进行逐行深度解读,阐述 public class、main 方法、System.out.println 等核心概念的含义。此外,还介绍了 JDK 21 中更简洁的预览特性写法,帮助初学者在动手实践中快速建立对 Java 程序基本结构的认知。

gugucoding的博客 374

public Static void main(String[]args){

一转眼又至月末,学习越来越吃力,面对老师、亲人的询问,都不知道如何回答。可笑当初我还以为很简单的…………,老师说现在已经学了2个月,大家都已不是菜鸟了,可我确实还有好多都不会,加油吧~  我可以的,不就是缺了几节课,不就是一些知识点掌握不熟悉么,怕什么!多看点视频,多写点程序,应该就能解决的。而且话说我不是越来越喜欢敲代码这种感觉吗?如同行云流水一般流畅,呵呵。     圆圈越大,圆圈外面的未知

hz2722289的专栏 415

123 - 长方形长方体类import java.util.Scanner; public class Main{ public static void main(String[] args)

123 - 长方形长方体类 Time Limit: 1000   Memory Limit: 65535 Submit: 288  Solved: 118 Description 定义一个长方形类Rectangle,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea() 定义一个子类长方体类,拥有长、宽、高属性,提供构造函数,getPerimeter...

rs_seaside的博客 2万+

Main函数解析

主函数的特殊: 1 格式固定 2 被jvm识别和调用 public static void main(String[] args) public :权限是最大的 static:不需要对象 直接用主函数即可 void:主函数没有具体的返回值 main:函数名,不是关键字,是jvm识别的固定名字 String[] args:主函数的参数列表,是一个数组类型的参数,元素都是字符串类型 转载于:...

weixin_30685029的博客 73
上一篇: 计算机底层的秘密,送5本
下一篇: 微软把我们都骗了,它最爱Unix,不是Windows.....
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值