如果你是一位苦逼的 Java 程序員,那么當你看到這張圖的時候也許震驚的會跳起來!
但是我最大的感受是:
臥槽,怎么就Java 21了?!我還在用Java 8 呢!
實際上,從Java 8 到Java 21,中間也就是Java 11, Java 17是長期支持版本,其他的都是“小”版本,變化不大。
這次去掉“public static void main”的提案來自JEP 445: Unnamed Classes and Instance Main Methods (Preview) ;翻譯過來是 “未命名類和實例 main 方法”,僅看標題你可能并不認為和上面那些東西有什么關系,但事實上,上述特性確實是由此 JEP 帶來的。
這種簡化寫法并不是 Java 的特例,其實早在 .NET 6,C# 就引入了一套 "控制臺模板" 語法,其允許你在 C# 的主類文件(這里是 Program.cs)這么寫:
//Seehttps://aka.ms/new-console-templateformoreinformation Console.WriteLine("Hello,World!");
其等價于:
usingSystem; namespaceMyApp//Note:actualnamespacedependsontheprojectname. { internalclassProgram { staticvoidMain(string[]args) { Console.WriteLine("HelloWorld!"); } } }
很神奇對不對,但實際上說簡單點這只是套語法糖而已。那么,JEP 445 也是如此嗎?答案是否定的,甚至,它連語法糖都沒有引入 。
基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能
項目地址:https://github.com/YunaiV/ruoyi-vue-pro
視頻教程:https://doc.iocoder.cn/video/
真的是變天了嗎?
如果你仔細查看 JEP 提案的原文,你會發現他們在 Summary 和 Goal 上提到最多的兩個詞是:sutdents 和 beginners:
而仔細讀讀這部分內容你會知道,這個 JEP 設立的初衷是為了為學生和 Java 新手隱去晦澀難懂的部分,僅保留一些簡單的語法,方便他們快速入門和學習 Java,但并不是引入了一套額外的 Java 方言 。
從始至終,這套東西就不是給普通 Java 開發者使用的,而是面向學生和新手入門使用的。
有個可愛的美國老師居然創作了一首RAP來幫助新手記憶“public static void main”!
publicclassHelloWorld{ publicstaticvoidmain(String[]args){ System.out.println("HelloWorld"); } }
對于新手來說,這簡單的五行代碼說,信息嚴重過載了:
(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認為,必須要簡化這一切。
第一步使用更寬容的“啟動協議”,可以改成這樣:
classHelloWorld{ voidmain(){ System.out.println("HelloWorld"); } }
第二步通過引入“未命名的類”,改成這樣:
voidmain(){ System.out.println("HelloWorld"); }
第三步,“自動導入靜態方法”,改成這樣:
voidmain(){ println("HelloWorld"); }
看起來更加清晰明了,對于Java初學者將會非常友好。
經過這二十多年的發展,圍繞Java建立了龐大的生態,各種各樣的軟件應有盡有,讓Java極其成功的同時,也讓Java背上了沉重的包袱,要想簡化成Python,JS那樣的腳本語言,幾乎不可能了,這次能夠邁出一小步已經是難能可貴了。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能
責任編輯:彭菁
-
JAVA
+關注
關注
19文章
2973瀏覽量
104939 -
RBAC
+關注
關注
0文章
44瀏覽量
9978 -
開發者
+關注
關注
1文章
590瀏覽量
17054
原文標題:Java21的 main 方法聲明要變天了嗎?
文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論