關(guān)于lombok項目的未來

我一直在使用lombok,并且很高興它讓我的懶惰避免了編寫樣板代碼。但也有一些關(guān)于龍博克的令人擔(dān)憂的信息,比如:

  1. 我在這里讀到,lombok完全依賴于JDK中非法的漏洞non-public API,如果關(guān)閉該漏洞,將導(dǎo)致lombok停止工作。甚至有人看到lombok dev與openjdk dev爭論,讓JDK non-public API保持打開,或者留下一個選項,使他們能夠在JDK關(guān)閉時將其打開(--add-open--illegal-access標(biāo)志)。但到目前為止,lombok甚至可以用v1.18.26處理java 19。
  2. 許多人說,如果你出于任何原因決定放棄lombok,那么你可以很容易地de-lombok,然而,有一篇文章描述de-lombok可能不是很好。

所以,我的問題是:

  1. 龍博克會停止工作嗎?或者java沒有關(guān)閉那些漏洞non-public API?
  2. 使用另一個注釋處理器會如何導(dǎo)致lombok失敗?

Thanks

? 最佳回答:

龍目作家在這里。

龍博克會停止工作嗎?

Not likely.

我們是intellij中的插件,或多或少是eclipse中的插件;這些路線不能被關(guān)閉,也不會成為oracle/openJDK的目標(biāo)。即使他們愿意,他們也根本不執(zhí)行這些項目。另外,“非法”指的是一個國家的刑法。無論Oracle/team OpenJDK喜歡說什么,“非法”都不是合適的術(shù)語。這是一個API訪問路由,團隊OpenJDK并不正式支持。這里沒有違反許可證的行為,所以讓我們小心措辭。同時,lombok在java上運行6到21;很少有圖書館能夠宣稱擁有這樣的影響力。

我們總是可以派生javac。它是開源的。我們知道如何做到這一點,如果歸根結(jié)底,我們也會這么做。然而,作為一個用戶,您的體驗將是令人煩惱的。這也會破壞javac不僅僅是您自己調(diào)用的工具的想法;通常其他工具會調(diào)用它,并且往往不允許您輕松地配置javac所在的位置,這使得fork更難使用。然而,在實踐中,我們可以列舉你可能遇到的工具,特別是因為javac雖然是開源的,但并沒有得到很好的許可,并且任何將javac用作更大工具一部分的嘗試都會受到j(luò)avac(作為API)所表現(xiàn)出的同樣好戰(zhàn)的lock-down處理:試圖與它深度糾纏是不受支持的,所以你真正能做的就是把它當(dāng)作一個命令行工具來調(diào)用。

這使得為這些工具編寫插件變得非常簡單。我們只需要添加一些--add-opens行,然后逐字逐句地運行javac,或者將lombok混合到它的模塊中并發(fā)貨。

具體來說,我們可以命名99%與javac的所有交互:

  • maven
  • gradle
  • 您的IDE(但我們已經(jīng)需要并擁有這些插件)
  • javac本身,但很少。

基本上就是這樣。大多數(shù)linter工具和其他AST-based分析器實際上在后臺使用ecj((eclipse's}編譯器),而不是javac。例如,VSCode使用eclipse作為語言服務(wù)器。可能是因為ecj明顯更快。可能是因為它更許可(MIT-style而不是GPL風(fēng)格)。

因此,如果OpenJDK團隊關(guān)閉了我們現(xiàn)在使用的每個漏洞,lombok真正需要做的就是為gradle和maven編寫插件。這不是問題:這兩個工具基本上都是基于插件的,編寫這些插件將是一項one-week工作。一旦這樣的插件存在,OpenJDK就表示沒有興趣關(guān)閉這條路。如果他們改變主意并嘗試改變,他們必須首先改變許可證,我認(rèn)為這不太可能發(fā)生,但你必須自己決定。當(dāng)然,如果OpenJDK改變了它的許可,那么[A]它的名字將是一個笑話,[B]這將對生態(tài)系統(tǒng)產(chǎn)生非常重大的影響。事實上,如果發(fā)生這種激烈的步驟,lombok需要整理它的許可可能不應(yīng)該被認(rèn)為是最令人擔(dān)憂的,[C]社區(qū)肯定會立即發(fā)布最后一個開源版本,找到一個新名稱(Oracle擁有“Java”和“OpenJDK”商標(biāo)),社區(qū)可能會支持該項目,并在這一點上完全放棄Oracle/OpenJDK。你可能會有不同的評價,但我想說,很明顯,在這個時候,這不是一個現(xiàn)實的偶然事件。

那篇關(guān)于德隆博克的文章

我感到受到攻擊。天哪,這是一篇寫得很糟糕的文章。他們提出的第一點,包括文章的一半,是談?wù)撘粋€奇異的錯誤(即枚舉上的@ToString,這很奇怪,因為枚舉已經(jīng)有了一個可行的tostring,做了錯誤的事情。是的,那是一個錯誤),并以某種方式將其轉(zhuǎn)化為某種“看到了嗎?”?這很奇怪,也很糟糕。我不知道你是怎么想的,但如果我在編程的基礎(chǔ)上:如果我遇到了一個依賴性的bug,我會立即放棄這個依賴性,寫一篇關(guān)于它的惡意博客文章——在這一點上,我會把我自己的電腦焊接在一起。

然而,生成的文件非常難看,沒有遵循任何樣式

豬洗。我們嘗試復(fù)制您的選項卡并遵循標(biāo)準(zhǔn)編碼約定(或多或少,google樣式)。我們也盡力不去修改任何我們不必修改的東西。

使用if/show塊而不是one-line解決方案(如Guava Preconditions或Validate from Apache Commons)將其轉(zhuǎn)換為許多行。

你可以告訴lombok生成這樣的東西,我想作者在決定寫博客之前沒有閱讀他們使用的工具的文檔。當(dāng)然,我們不會因為沒有充分的理由而默認(rèn)要求更多的依賴關(guān)系。它也根本沒有“很多行”,而且它非常結(jié)構(gòu)化,所以如果你出于某種原因真的不想要它們,那么很容易將其腳本化(但是,你添加了@NonNull注釋,除了添加這些檢查之外,它們什么都不做,所以這是一件奇怪的事情)。

(目前龍目仍面臨Java 9-11的問題)

謊言。至少,我沒有意識到任何錯誤,作者也沒有說他們在說什么。考慮到他們證明他們沒有費心閱讀任何文檔或嘗試任何設(shè)置,這很可能是另一種飛行員錯誤情況。它是幾年前寫的——lombok在9日和11日運行良好。(龍目對java 9的支持在java 9正式發(fā)布后花了幾周時間。這種情況時有發(fā)生;但是,不確定“java 11”是從哪里來的)。

一般來說,德隆博克應(yīng)該沒事。在那里,lombok為你生成了很多樣板(主要是@Builder),生成的代碼可能不是你本來應(yīng)該寫的(就像在中一樣,它很多),而且可能比你注冊的要維護得更多。然而,除了@Builder之外,其余的都很簡單。龍目有意不喜歡偏離其更換樣板的使命之外的錯誤,這被定義為:

  1. 這很常見
  2. 有一種普遍認(rèn)同的,或者至少是相當(dāng)標(biāo)準(zhǔn)的寫作方式

當(dāng)然,根據(jù)這個定義,德隆博克吐出的可能正是如果倫博克不在的話你會怎么寫。建設(shè)者走得最多,但它需要處理大量的樣板,所以我們肯定會留下@Builder

故意編寫的代碼可能不完全遵循您的風(fēng)格指導(dǎo)原則。它是可配置的,但“首選樣式”是一個非常寬泛的主題。您可以(也可能應(yīng)該!)通過auto-format ter來拋出您的已注銷代碼。如果你通常不auto-format你的源文件,并且喜歡以你想要的方式自由設(shè)置樣式,那么這不是一個選擇,但是,任何對delombok配置的添加以支持更多樣式都是我們很樂意接受的PR。

使用另一個注釋處理器會如何導(dǎo)致lombok失敗?

可能存在雞和蛋的問題:注釋處理器a運行(而不是lombok),并根據(jù)它們看到的源結(jié)構(gòu)鎖定某些決策。然后lombok運行并添加一些東西,但A已經(jīng)繼續(xù)了。我們使用注釋處理器的輪次系統(tǒng)(所有AP,不僅僅是lombok,都會受到這種影響,這就是為什么有輪次系統(tǒng)的原因),但lombok修改了基本注釋處理器規(guī)范所說的通常不會在輪次之間改變的東西,所以不是所有AP都能正確交互。很難告訴javac運行它們的順序(通常,首先運行l(wèi)ombok可以解決所有問題)。每當(dāng)發(fā)生這種情況時,我們都會嘗試與相關(guān)項目溝通,以確保我們解決任何問題,很少有AP基于代碼結(jié)構(gòu)生成代碼(大多數(shù)是基于注釋生成的!)出現(xiàn)這種情況的一個項目是MapStruct。無論我們中的哪一個人“先跑”,我們都會努力與他們合作,確保事情順利進(jìn)行。

如果您使用另一個使用源結(jié)構(gòu)作為輸入的AP,您可能會遇到一些問題,是的。就其價值而言,為構(gòu)建系統(tǒng)編寫插件可能會完全解決這個問題(如果我們這樣做,我們可以強制lombok首先運行)。

主站蜘蛛池模板: 一区二区传媒有限公司| 三上悠亚国产精品一区| 一区二区不卡视频在线观看| 无码精品前田一区二区| 国产一区二区成人| 国产一区二区三精品久久久无广告 | 麻豆果冻传媒2021精品传媒一区下载| 波多野结衣在线观看一区| 国产福利一区二区三区在线视频| 成人国内精品久久久久一区| 国产日韩精品一区二区在线观看 | 精品国产免费一区二区三区香蕉| 在线免费观看一区二区三区| 国产精品视频一区国模私拍| 国产乱人伦精品一区二区| 国产成人精品一区二区三区免费 | 国模丽丽啪啪一区二区| 一区二区三区日本电影| 一区二区国产在线观看| 一本岛一区在线观看不卡| 一区二区3区免费视频| 一区二区三区内射美女毛片| 无码毛片一区二区三区中文字幕 | 久久精品一区二区| 久久精品一区二区| 国产亚洲自拍一区| 久久精品国产第一区二区三区| 亚洲国产老鸭窝一区二区三区| 日本免费一区二区三区| 一区二区和激情视频| 国产精品亚洲专区一区| 色一乱一伦一区一直爽| 久久久人妻精品无码一区| V一区无码内射国产| 久久精品一区二区东京热| 国产精品一区二区久久精品| 国产成人久久一区二区不卡三区 | 色狠狠一区二区三区香蕉蜜桃| 亚洲熟女一区二区三区| 精品女同一区二区三区免费站 | 亚洲国产综合精品一区在线播放|