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

Spring Native與WebFlux一樣注定曇花一現(xiàn)?

開(kāi)發(fā) 項(xiàng)目管理
現(xiàn)如今,多少新的概念或產(chǎn)品曇花一現(xiàn)都不足為奇。我們對(duì)于一個(gè)未知的事物都會(huì)感到好奇以及充滿期待,就像你突然得知自己要當(dāng)父親了,對(duì)孩子的降臨充滿期待一樣,也沒(méi)有哪個(gè)父母不希望自己的孩子優(yōu)秀。

 [[405391]]

現(xiàn)如今,多少新的概念或產(chǎn)品曇花一現(xiàn)都不足為奇。我們對(duì)于一個(gè)未知的事物都會(huì)感到好奇以及充滿期待,就像你突然得知自己要當(dāng)父親了,對(duì)孩子的降臨充滿期待一樣,也沒(méi)有哪個(gè)父母不希望自己的孩子優(yōu)秀。

或許你并不期待一個(gè)窮人家庭生出來(lái)的小孩長(zhǎng)什么模樣,智商多少,以及他以后能有多大的成就,這些我們都不會(huì)去關(guān)心。但我想喜歡追星的朋友一定好奇他的偶像的孩子長(zhǎng)得像不像他。

這,或許就是主角光環(huán)。

Spring Native就是這樣一個(gè)優(yōu)秀家庭的孩子,在它還未成熟時(shí),我們意識(shí)已經(jīng)接受了它的優(yōu)秀,不可否認(rèn),它是被它的父親們懷著遠(yuǎn)大目標(biāo)創(chuàng)造出來(lái)的,它的未來(lái)是已知的。但它是否能取得像Spring Boot一樣的成績(jī)還是未知的。

我最近看了一些關(guān)于它的熱點(diǎn),一些博主寫(xiě)的文章,但讓我感覺(jué)到的是,寫(xiě)這些文章的博主或許自己都沒(méi)了解Spring Native長(zhǎng)什么樣,就是追個(gè)熱點(diǎn),翻譯一下國(guó)外的視頻,或者官方文檔,對(duì)比下啟動(dòng)耗時(shí)、編譯耗時(shí)、占用內(nèi)存、編譯后的文件體積等參數(shù),所以我從他們的文章中了解不到更多。當(dāng)然,我也是來(lái)蹭個(gè)熱度的。

很多人都喜歡嘴上夸國(guó)產(chǎn)汽車(chē)越來(lái)越牛了,但行動(dòng)卻很誠(chéng)實(shí)。有一邊夸比亞迪N.B,一邊掏錢(qián)買(mǎi)特斯拉的;有一邊夸華為中華有為,一邊萬(wàn)把塊錢(qián)追趕最新款iphone的。所以優(yōu)秀是一回事,能有什么樣的市場(chǎng)反應(yīng)又是另一回事。

漂亮的姑娘并不一定就搶手,但有趣的靈魂是。

從Spring Native官方文檔來(lái)看,我是承認(rèn)它的優(yōu)秀的,我也會(huì)繼續(xù)關(guān)注它,或許將來(lái)在合適的項(xiàng)目中去使用它,至少?gòu)哪壳暗牧私鈦?lái)看,我還不會(huì)只為性能買(mǎi)單,一是對(duì)現(xiàn)有項(xiàng)目的改造成本略高,二是出于目前項(xiàng)目的成熟度考慮我們還缺少一些云原生組件的支持。

Spring Native出生自帶光環(huán),這與當(dāng)初的Spring WebFlux如出一轍,然而幾年過(guò)去了,Spring WebFlux有沒(méi)有流行起來(lái)相信大家也有目共睹。難度是WebFlux不夠優(yōu)秀嗎?當(dāng)然不是。我也曾用WebFlux+R2DBC+Lettuce開(kāi)發(fā)過(guò)一個(gè)消息推送微服務(wù),也用它開(kāi)發(fā)過(guò)網(wǎng)關(guān),但我不會(huì)使用它來(lái)開(kāi)發(fā)業(yè)務(wù)項(xiàng)目,它的優(yōu)點(diǎn)不足以讓我們忽略它的缺點(diǎn),所以它在業(yè)務(wù)開(kāi)發(fā)上注定不會(huì)流行起來(lái),現(xiàn)在不會(huì),以后也不會(huì)。至于它的優(yōu)點(diǎn),別的框架、編程語(yǔ)言難道就沒(méi)有嗎?

圖片 https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/

Spring Native provides support for compiling Spring applications to native executables using the GraalVM native-image compiler.

Spring Native 支持使用GraalVM 本機(jī)映像編譯器將 Spring 應(yīng)用程序編譯為本機(jī)可執(zhí)行文件。

Spring Native使用GraalVM的Native Image編譯器在編譯期就將JVM字節(jié)碼編譯成可執(zhí)行鏡像文件(機(jī)器碼),運(yùn)行在Hotspot虛擬機(jī)之外的GraalVM(編譯時(shí)寫(xiě)入),這說(shuō)明它為了性能將會(huì)拋棄一些運(yùn)行時(shí)特性,如類(lèi)的延遲加載(常見(jiàn)如遠(yuǎn)程類(lèi)加載、tomcat動(dòng)態(tài)部署war)、反射、動(dòng)態(tài)代理、Java Agent。

關(guān)于GraalVM:《一文了解GraalVM》https://www.sohu.com/a/375404869_355142

雖然Spring Native可以通過(guò)編譯期處理方式支持AOP,將動(dòng)態(tài)代理轉(zhuǎn)為靜態(tài)代理,但并非所有動(dòng)態(tài)代理都能轉(zhuǎn)為靜態(tài)代理。我記得Dubbo框架中的自適應(yīng)SPI機(jī)制就需要根據(jù)請(qǐng)求參數(shù)來(lái)生成目標(biāo)代理方法體,這用到了動(dòng)態(tài)字節(jié)碼技術(shù)。同樣的,CGLIB也將不支持,這意味著使用CGLIB實(shí)現(xiàn)的Bean屬性拷貝不能使用,非實(shí)現(xiàn)接口的@Async、@Scheduled也將要改成使用接口,反射也需要靜態(tài)配置。

其次,在微服務(wù)中,我們目前使用的一些調(diào)用鏈追蹤平臺(tái)需要借助JavaAgent實(shí)現(xiàn)無(wú)代碼侵入,動(dòng)態(tài)修改類(lèi)的字節(jié)碼插入埋點(diǎn)代碼后重新加載類(lèi)的字節(jié)碼。如果使用Spring Native,這些JavaAgent將會(huì)被遺棄,這些調(diào)用鏈追蹤平臺(tái)要么選擇支持在編譯期完成插樁要么就放棄無(wú)代碼侵入。

當(dāng)然,Spring Native的目標(biāo)是云原生市場(chǎng),而在云原生占有一席之地的golang也并不支持這類(lèi)特性,但并阻止不了開(kāi)發(fā)者、組織們擁抱它。而Istio這類(lèi)目標(biāo)讓流量控制、重試、監(jiān)控、鏈接追蹤、負(fù)載均衡、動(dòng)態(tài)路由下沉到基礎(chǔ)設(shè)施層的服務(wù)網(wǎng)格技術(shù)將替代JavaAgent。但…也只是支持進(jìn)程間的鏈路,進(jìn)程內(nèi)方法的鏈路就不關(guān)心了,但…有必要關(guān)心嗎?過(guò)多的埋點(diǎn)只會(huì)影響性能。

隨著Service Mesh(服務(wù)網(wǎng)關(guān))、FaaS(函數(shù)計(jì)算,無(wú)服務(wù)器)技術(shù)的發(fā)展,相信Spring Navite將會(huì)被很多組織使用,支持GraalVM Native Image的Spring有著快速啟動(dòng)的特性,更好的支持FaaS,同樣體積小構(gòu)建小的容器鏡像也更好的適應(yīng)云原生,減少運(yùn)行時(shí)內(nèi)存占用也將為組織減少更多為此付出的成本。

因此,雖然Spring Native在我看來(lái),與Spring WebFlux也很相似,但至少不會(huì)是難兄難弟,雖然它們的目標(biāo)都是提升性能,但WebFlux強(qiáng)行開(kāi)發(fā)者改變現(xiàn)有的編程方式,并有很強(qiáng)的API侵入,注定不會(huì)被廣泛接受。而Spring Native只是為保持Spring的特性去支持原生鏡像,開(kāi)發(fā)者不需要付出很多的學(xué)習(xí)成本就能接受它。

或許這是一個(gè)更直觀的比喻,WebFlux更像是Window Phone系統(tǒng),需要更多開(kāi)發(fā)者與組織的支持來(lái)構(gòu)建生態(tài),而Spring Navite更像是鴻蒙系統(tǒng),采用適配Android應(yīng)用去繼承現(xiàn)有的Android生態(tài),如果不改變主題,你把手機(jī)交給身邊的朋友,他們不一定看得出這是鴻蒙操作系統(tǒng)。

但即便如此,也有很多未知的因素。

目前也并不只有Spring Native支持GraalVM,與之在同一賽道的還有Quarkus,而且更輕量,然而廣大開(kāi)發(fā)者也并沒(méi)有為此買(mǎi)單,因?yàn)樗谖覀兊氖孢m圈之外,所以Quarkus的流行度并不足以衡量Spring Native的流行度,就像文章前面說(shuō)的,Spring Native還自帶光環(huán)。

最后一個(gè)不是那么確定的因素,為了性能,你會(huì)選擇Spring Native還是選擇換一門(mén)語(yǔ)言如golang呢?我猜選擇Spring Native的至少占九層以上,包括我。雖然golang很簡(jiǎn)潔,但不像java一樣能帶給我很多驚喜,創(chuàng)造很多“藝術(shù)”、藝術(shù)。

本文轉(zhuǎn)載自微信公眾號(hào)「Java藝術(shù)」,作者wujiuye。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java藝術(shù)公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: Java藝術(shù)
相關(guān)推薦

2022-06-17 11:05:33

區(qū)塊鏈NFT加密貨幣

2022-04-20 10:32:33

加密貨幣區(qū)塊鏈數(shù)字貨幣

2012-12-04 09:37:29

視頻分享App

2020-03-11 09:30:07

疫情遠(yuǎn)程辦公技術(shù)

2012-05-21 21:49:34

Windows Pho

2018-08-31 21:26:19

2015-06-25 17:19:53

2012-03-20 09:33:27

諾基亞Window Phon

2011-01-21 06:55:59

業(yè)界googleipad

2015-01-21 11:14:44

DockerLXCLinux

2011-05-31 11:31:27

谷歌錢(qián)包Google Wall移動(dòng)支付

2013-12-19 09:58:22

2023-02-21 13:46:09

ChatGPT人工智能

2022-07-14 10:02:26

混合硬盤(pán)性能

2009-06-08 09:08:19

必應(yīng)市場(chǎng)份額

2017-12-22 09:39:43

MeeGo手機(jī)操作系統(tǒng)iOS

2018-11-14 08:55:45

物聯(lián)網(wǎng)IoTAI

2010-05-11 11:01:23

2018-09-17 15:09:28

區(qū)塊鏈去中心化互聯(lián)網(wǎng)

2017-06-22 17:03:15

可信云
點(diǎn)贊
收藏

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