RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

springboot的輕量替代框架-Solon

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-09-30 10:55 ? 次閱讀

Java之所以是廣泛使用的編程語(yǔ)言,不僅僅因?yàn)槠渚哂锌缙脚_(tái)性、面向?qū)ο蟆⒖煽啃?,還有很重要的一點(diǎn)是強(qiáng)大的生態(tài)系統(tǒng),spring家族的一系列框架,對(duì)Java的崛起有著不可忽視的作用。

學(xué)Java的不可能不知道Spring,今天給大家介紹一個(gè)號(hào)稱(chēng)springboot的輕量替代框架-Solon,這個(gè)框架還是國(guó)人開(kāi)發(fā)的,真是一個(gè)單挑spring的男人。

認(rèn)識(shí)Solon

Solon是一個(gè)參考了Spring Boot和Javalin的設(shè)計(jì)而創(chuàng)建的框架。它吸取了這兩者的優(yōu)點(diǎn)并避免了繁重的設(shè)計(jì),使得它能夠支持HTTP、WebSocket和Socket等三種通信信號(hào)接入。

Solon只需要2MB的大小就可以支撐完整的MVC開(kāi)發(fā),并且在啟動(dòng)方面只需要0.1秒的時(shí)間。相比之下,一個(gè)普通的Spring Boot MVC項(xiàng)目通常需要起步20MB以上的內(nèi)存占用,并且啟動(dòng)時(shí)間要超過(guò)3秒,同時(shí)其QPS性能也較弱。

官方介紹:

相比springboot,啟動(dòng)快 5 ~ 10 倍;qps 高 2~ 3 倍;運(yùn)行時(shí)內(nèi)存節(jié)省 1/3 ~ 1/2;打包可以縮到 1/2 ~ 1/10;同時(shí)支持 jdk8, jdk11, jdk17, jdk20, graalvm native。

  • 克制、簡(jiǎn)潔、高效、開(kāi)放、生態(tài)
  • 支持 JDK8、JDK11、JDK17、JDK20
  • Http、WebSocket、Socket 三種信號(hào)統(tǒng)一的開(kāi)發(fā)體驗(yàn)(俗稱(chēng):三源合一)
  • 支持“注解”與“手動(dòng)”兩種模式,按需自由操控
  • Not Servlet,可以適配任何基礎(chǔ)通訊框架(最小 0.3m 運(yùn)行rpc架構(gòu))
  • 獨(dú)特的 IOC/AOP 容器設(shè)計(jì)。不會(huì)因?yàn)椴寮兌喽鴨?dòng)變很慢
  • 支持 Web、Data、Job、Remoting、Cloud 等任何開(kāi)發(fā)場(chǎng)景
  • 兼顧 Handler + Context 和 Listener + Message 兩種架構(gòu)模式
  • 強(qiáng)調(diào)插件式擴(kuò)展,可擴(kuò)展可切換;適應(yīng)不同的應(yīng)用場(chǎng)景
  • 支持 GraalVm Native 打包
  • 允許業(yè)務(wù)插件“熱插”、“熱拔”、“熱管理”

圖片
solon生態(tài)架構(gòu)圖

官網(wǎng):https://solon.noear.org/

項(xiàng)目地址:https://gitee.com/noear/solon

上手Solon

web開(kāi)發(fā)的模式和springboot基本一致,但是注解和springboot略有區(qū)別,具體區(qū)別可以看它的官方文檔。

一個(gè)重要的區(qū)別是,Solon 不是基于 Servlet 的開(kāi)發(fā)框架,雖然使用起來(lái)與 Springboot 相似的體驗(yàn),但內(nèi)部使用 Context 包裝請(qǐng)求上下文(底層為:Context + Handler 架構(gòu))。

創(chuàng)建Maven項(xiàng)目,引入依賴(lài)

< parent >
    < groupId >org.noear< /groupId >
    < artifactId >solon-parent< /artifactId >
    < version >2.3.6< /version >   
< /parent >

< dependencies >
    < dependency >
        < groupId >org.noear< /groupId >
        < artifactId >solon-web< /artifactId >
    < /dependency >
< /dependencies >

編寫(xiě)啟動(dòng)類(lèi)代碼

@SolonMain
public class App{
    public static void main(String[] args){
        long start = System.currentTimeMillis();
        Solon.start(App.class, args);
        long end = System.currentTimeMillis();
        System.out.println("啟動(dòng)耗時(shí):" + (end - start) + "ms");
    }
}

編寫(xiě)Controller

@Controller
public class DemoController {

    @Mapping("/hello")
    public String hello(String name){
        return "Hello " + name;
    }

}

運(yùn)行,測(cè)試

圖片

可以看出來(lái),啟動(dòng)還是非常非??斓?/p>

圖片

打包

圖片

???只有4kb?

有點(diǎn)兒驚人,為此,我專(zhuān)門(mén)去新建了個(gè)springboot項(xiàng)目,也是簡(jiǎn)單的一個(gè)接口,打包

圖片

好吧,這個(gè)項(xiàng)目也是4k,看來(lái)太簡(jiǎn)單的項(xiàng)目看不出來(lái)區(qū)別。等以后寫(xiě)新項(xiàng)目玩兒的時(shí)候再試試。

順便測(cè)試了一下啟動(dòng)時(shí)間

圖片

啟動(dòng)時(shí)間確實(shí)還是 Solon 更快!

小結(jié)

圖片

再來(lái)看看Solon的官方文檔,文檔寫(xiě)的很詳細(xì),功能很齊全,Solon的生態(tài)雖然沒(méi)有spring那么強(qiáng)大,但小型項(xiàng)目已經(jīng)完全可以勝任。

感興趣的小伙伴兒們快快用起來(lái)吧,對(duì)于自己的項(xiàng)目很適合,畢竟自己的服務(wù)器內(nèi)存和空間比較小,同樣的項(xiàng)目占用更小的空間和內(nèi)存還是很香的!

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2966

    瀏覽量

    104701
  • 開(kāi)發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    370

    瀏覽量

    40836
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    403

    瀏覽量

    17475
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    177
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    介紹一種OpenAtom OpenHarmony系統(tǒng)適配方案

    本文在不改變?cè)邢到y(tǒng)基礎(chǔ)框架的基礎(chǔ)上, 介紹了一種OpenAtom OpenHarmony(以下簡(jiǎn)稱(chēng)“OpenHarmony”)系統(tǒng)適配方案。
    的頭像 發(fā)表于 03-05 09:24 ?1138次閱讀
    介紹一種OpenAtom OpenHarmony<b class='flag-5'>輕</b><b class='flag-5'>量</b>系統(tǒng)適配方案

    SpringBoot知識(shí)總結(jié)

    SpringBoot干貨學(xué)習(xí)總結(jié)
    發(fā)表于 08-01 10:40

    mybatis支持?jǐn)?shù)據(jù)庫(kù)兼容的方案

    一個(gè)的方案, 令mybatis支持?jǐn)?shù)據(jù)庫(kù)兼容
    發(fā)表于 04-09 17:44

    一文解析SpringBoot2整合SSM框架

    SpringBoot2整合SSM框架詳解
    發(fā)表于 06-09 16:43

    【入門(mén)】1 升級(jí)應(yīng)用框架固件

    本帖最后由 jf_39160458 于 2021-5-21 16:04 編輯 首次拿到開(kāi)發(fā)板后,開(kāi)發(fā)板可能內(nèi)置不是應(yīng)用框架的固件,此時(shí)需要我們自己刷機(jī)。刷機(jī)流程如下:應(yīng)用框架
    發(fā)表于 05-21 15:51

    怎樣去使用springboot

    怎樣去使用springboot呢?學(xué)習(xí)springboot需要懂得哪些?
    發(fā)表于 10-25 07:13

    Springboot整合netty框架實(shí)現(xiàn)終端、通訊板子(單片機(jī))TCP/UDP通信案例

    如何springboot和netty案例的源代碼一個(gè)springboot整合netty框架的開(kāi)發(fā)小案例,實(shí)現(xiàn)服務(wù)端與單片機(jī)終端實(shí)時(shí)通信的通訊架構(gòu)案例。物聯(lián)網(wǎng)通信給板子下發(fā)指令案例附帶源碼及整合流程步驟
    發(fā)表于 12-29 18:55 ?20次下載
    <b class='flag-5'>Springboot</b>整合netty<b class='flag-5'>框架</b>實(shí)現(xiàn)終端、通訊板子(單片機(jī))TCP/UDP通信案例

    如何移植OpenHarmony系統(tǒng)

    摘要:本文簡(jiǎn)單介紹OpenHarmony系統(tǒng)移植,會(huì)分多篇
    的頭像 發(fā)表于 02-25 12:14 ?3030次閱讀
    如何移植OpenHarmony<b class='flag-5'>輕</b><b class='flag-5'>量</b>系統(tǒng)

    OpenHarmony系統(tǒng)開(kāi)發(fā)【1】初始OH

    本文簡(jiǎn)單介紹OpenHarmony、系統(tǒng)、小型系統(tǒng)、標(biāo)準(zhǔn)系統(tǒng)的差異,以及相關(guān)的官方資料和文檔 適合群體: 第一次接觸OpenHarmony、或者想要對(duì)OpenHarmony有一個(gè)全面的認(rèn)知
    發(fā)表于 02-25 17:49 ?981次閱讀

    為什么建議你替換掉SpringBoot框架中的Tomcat?

    SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認(rèn)的容器技術(shù),而且是內(nèi)嵌式的Tomcat。
    的頭像 發(fā)表于 01-07 10:26 ?1089次閱讀

    Web框架替代方案分享(上)

    上周,我們從框架試圖解決哪些核心問(wèn)題的角度出發(fā),考察了使用框架的不同好處和代價(jià),重點(diǎn)放在聲明性編程、數(shù)據(jù)綁定、反應(yīng)性、列表和條件。今天,我們來(lái)看看能否在 Web 平臺(tái)上找到替代方案。
    的頭像 發(fā)表于 03-20 14:51 ?485次閱讀

    Web框架替代方案分享(中)

    上周,我們從框架試圖解決哪些核心問(wèn)題的角度出發(fā),考察了使用框架的不同好處和代價(jià),重點(diǎn)放在聲明性編程、數(shù)據(jù)綁定、反應(yīng)性、列表和條件。今天,我們來(lái)看看能否在 Web 平臺(tái)上找到替代方案。
    的頭像 發(fā)表于 03-20 14:51 ?545次閱讀

    Web框架替代方案分享(下)

    上周,我們從框架試圖解決哪些核心問(wèn)題的角度出發(fā),考察了使用框架的不同好處和代價(jià),重點(diǎn)放在聲明性編程、數(shù)據(jù)綁定、反應(yīng)性、列表和條件。今天,我們來(lái)看看能否在 Web 平臺(tái)上找到替代方案。
    的頭像 發(fā)表于 03-20 14:51 ?555次閱讀

    什么是 SpringBoot

    本文從為什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里開(kāi)始入手,逐步分析了 `SpringBoot` 自動(dòng)裝配的原理,最后手寫(xiě)了一個(gè)簡(jiǎn)單的 `start` 組件,通過(guò)實(shí)戰(zhàn)來(lái)體會(huì)了 `
    的頭像 發(fā)表于 04-07 11:28 ?1304次閱讀
    什么是 <b class='flag-5'>SpringBoot</b>?

    Quarkus是SpringBoot替代品嗎?

    SpringBoot框架不用多介紹,Java程序員想必都知道。相對(duì)來(lái)說(shuō)熟悉Quarkus的人可能會(huì)少一些。Quarkus首頁(yè)放出的標(biāo)語(yǔ):超音速亞原子的Java(Supersonic Subatomic Java)。
    的頭像 發(fā)表于 11-10 10:01 ?712次閱讀
    Quarkus是<b class='flag-5'>SpringBoot</b>的<b class='flag-5'>替代</b>品嗎?
    RM新时代网站-首页