不只有 Spring,這四款 Java 基礎開發框架同樣值得關注! 稽核中

JavaGuide發表於2024-04-26

Java 開發不只有 Spring ,今天給大家推薦幾個同樣優秀的 Java 基礎開發框架,為日常專案開發提供更多的選擇。答應我,請不要再叫我 Spring 小子了,​好嗎?

專案概覽:

  1. Guice:輕量級依賴注入框架
  2. Javalin:輕量級 Java 和 Kotlin Web 框架
  3. Quarkus:雲原生時代高效能 Java 框架
  4. Vert.x:構建響應式應用的工具集

Guice:輕量級依賴注入框架

Guice(發音為 "juice") 是 Google 開源的一個輕量級依賴注入框架,你可以將其看作是隻提供依賴注入功能的 Spring 。不過,相比於 Spring 提供的依賴注入功能,Guice 設計上更加輕量,專注於透過註解提供依賴注入,儘量避免使用 XML。

Guice 在某些情況下非常實用,就比如說我們的專案只需要使用依賴注入,不需要 AOP 等功能特性,也不需要 Spring 強大的生態。

Guice 的 Hello World 示例如下:

我之前發表的一篇文章的的評論區就有一個民宿外企的小夥伴說自己用的就是 Guice 這個框架。

  • 專案地址:https://github.com/google/guice
  • 使用詳解:https://www.cnblogs.com/throwable/p/15925396.html

Javalin:輕量級 Java 和 Kotlin Web 框架

Javalin 是一個輕量級的 Web 框架,同時支援 Java 和 Kotlin,被微軟、紅帽、Uber 等公司使用。

Javalin 類似於 Spring ,有如下特點:

  • 輕量級
  • 簡單易用
  • 執行在 Web 伺服器 Jetty 之上
  • 同時支援阻塞和非同步程式設計模型
  • ……

下面幾行程式碼即可使用 Javalin 完成一個簡單的 Hello World 介面:

import io.javalin.Javalin;

public class HelloWorld {
    public static void main(String[] args) {
        Javalin app = Javalin.create().start(7070);
        app.get("/", ctx -> ctx.result("Hello World"));
    }
}

Javalin 並不是為了取代 Spring ,而是為了豐富 Java Web 框架生態,Spring 的生態無敵,Javalin 在開發一些簡單的專案上也是非常不錯!

  • Github 地址:https://github.com/tipsy/javalin
  • 官網:https://javalin.io/

Quarkus:雲原生時代高效能 Java 框架

Quarkus(夸克斯) 是 RedHat 在 2018 年開源的一款專為雲原生開發設計的 Java 框架,與 Kubernetes 緊密結合,可以提高構建微服務、無服務和基於雲的應用程式的開發效率。

Quarkus 的啟動速度非常快(為 GraalVM 量身定製),可以很方便整合 Docker 和 Kubernetes 。

Quarkus 和其他同型別框架的記憶體佔用和首次響應時間對比如下:

Quarkus和其他同型別框架的記憶體佔用和首次響應時間對比

相比較於 Spring Boot,Quarkus 更適合微服務、Serverless 或雲原生應用,它提供了許多有利的特性。

  • Github 地址:https://github.com/quarkusio/quarkus
  • 官方文件:https://quarkus.io/guides/
  • 官網:https://quarkus.io

Vert.x:構建響應式應用的工具集

Vert.x 是 Eclipse 基金會開源的一款針對 JVM 設計的非同步、事件驅動的應用框架。它支援多種程式語言,包括 Java、JavaScript、Groovy、Kotlin 和 Scala。

該框架採用響應式程式設計和函數語言程式設計正規化,特別適合於處理大規模併發連線、高吞吐量以及低延遲的應用場景。Vert.x 的非阻塞和事件驅動的特性使它成為開發高效能、可擴充套件且易於維護的微服務和網路應用的理想選擇。

不過,Vert.x 有一定的開發和學習成本,需要轉變常規的程式設計思維方式,對團隊成員的技術能力要求還是非常高的!

Vert.x 版本的 HelloWorld 如下:

import io.vertx.core.AbstractVerticle;

public class Server extends AbstractVerticle {
  public void start() {
    vertx.createHttpServer().requestHandler(req -> {
      req.response()
        .putHeader("content-type", "text/plain")
        .end("Hello World");
    }).listen(8080);
  }
}
  • Github 地址:https://github.com/eclipse-vertx/vert.x
  • 官網:**https://vertx.io/*

相關文章