自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java 21 將不再有public static void main !

開發(fā) 前端
經(jīng)過這二十多年的發(fā)展,圍繞Java建立了龐大的生態(tài),各種各樣的軟件應有盡有,讓Java極其成功的同時,也讓Java背上了沉重的包袱,要想簡化成Python,JS那樣的腳本語言,幾乎不可能了,這次能夠邁出一小步已經(jīng)是難能可貴了。

之前的Java是這樣:

圖片圖片

Java 21會是這樣:

圖片圖片

看到這個消息,我最大的感受是: 

臥槽,怎么就Java 21了?!我還在用Java 8 呢!

實際上,從Java 8 到Java 21,中間也就是Java 11, Java 17是長期支持版本,其他的都是“小”版本,變化不大。 

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

長期以來,關(guān)于Java的抱怨是“太冗長”,“太多儀式感”,Java把這種儀式感強加給了所有首次學習它的人。

對于類的聲明和public static void main,每個新手都覺得是難以理解的咒語,它們成為了學習道路上的巨大障礙。 

有個可愛的美國老師居然創(chuàng)作了一首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 

新手根本理解不了什么靜態(tài)方法,為什么需要靜態(tài)方法。

(5)  String[] args

這個參數(shù)的定義,對于新手來說也是一團霧水

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

System是個類,out是個靜態(tài)字段,println是實例方法,學生們唯一關(guān)心的是println啊。

在上課的第一天就需要解釋很多東西,快下課了,學生也寫不出任何程序,老師只好說:先記住吧,以后你會明白的。

所以Brian Goetz認為,必須要簡化這一切。

第一步使用更寬容的“啟動協(xié)議”,可以改成這樣:

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

第二步通過引入“未命名的類”,改成這樣:

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

第三步,“自動導入靜態(tài)方法”,改成這樣:

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

看起來更加清晰明了,對于Java初學者將會非常友好。 

但是真正到了JEP當中, System.out.println還是被保留了,不知道為什么。

對于這個變化,網(wǎng)友們炸鍋了,有人說:Hey, 你忘記了一個東西:Script

還有人說,以后Java的logo應該變成這樣:


圖片圖片

需要提醒各位的是,這是個預覽功能,在JDK中默認是禁用的,主要是為了降低在教Java時的認知負擔。

經(jīng)過這二十多年的發(fā)展,圍繞Java建立了龐大的生態(tài),各種各樣的軟件應有盡有,讓Java極其成功的同時,也讓Java背上了沉重的包袱,要想簡化成Python,JS那樣的腳本語言,幾乎不可能了,這次能夠邁出一小步已經(jīng)是難能可貴了。

參考資料:https://openjdk.org/projects/amber/design-notes/on-ramp

https://openjdk.org/jeps/445

如需轉(zhuǎn)載,請通過作者微信公眾號coderising獲取授權(quán)

責任編輯:武曉燕 來源: 碼農(nóng)翻身
相關(guān)推薦

2011-01-21 16:38:03

HTML 5chormegoogle

2009-03-25 17:57:45

Linux新版企鵝

2009-04-02 09:25:16

ApacheJava SDKJava 7

2012-07-26 11:07:41

Safari 6Windows

2012-08-20 13:03:52

SUSEAttachmate

2009-04-15 09:04:35

Firefox瀏覽器

2009-03-06 16:44:48

Linux紅帽Enterprise

2012-02-06 09:22:19

Windows 8開始按鈕

2012-03-28 10:30:33

ScalaJava

2012-08-23 11:22:38

火狐瀏覽器

2012-06-28 09:55:56

KDE桌面操作系統(tǒng)

2012-06-29 14:11:42

jQuery

2021-11-03 14:56:15

Facebook 人臉識別技術(shù)

2013-08-19 09:31:16

Google工程師

2009-07-02 11:02:55

Java許可甲骨文

2011-06-07 16:12:56

SEO

2013-11-25 13:52:17

微軟Windows 9

2012-10-30 10:45:49

JavaJDKJDBC-ODBC

2013-09-22 09:20:49

Java 8Windows

2012-07-25 10:17:07

Windows 8 SHyper-V
點贊
收藏

51CTO技術(shù)棧公眾號