首页 > 编程语言 >不只有 Spring,这四款 Java 基础开发框架同样值得关注! 审核中

不只有 Spring,这四款 Java 基础开发框架同样值得关注! 审核中

时间:2024-04-26 09:33:58浏览次数:20  
标签:Java 框架 Spring 四款 Javalin https 轻量级

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 这个框架。

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 在开发一些简单的项目上也是非常不错!

Quarkus:云原生时代高性能 Java 框架

Quarkus(夸克斯) 是 RedHat 在 2018 年开源的一款专为云原生开发设计的 Java 框架,与 Kubernetes 紧密结合,可以提高构建微服务、无服务和基于云的应用程序的开发效率。

Quarkus 的启动速度非常快(为 GraalVM 量身定制),可以很方便集成 Docker 和 Kubernetes 。

Quarkus 和其他同类型框架的内存占用和首次响应时间对比如下:

Quarkus和其他同类型框架的内存占用和首次响应时间对比

相比较于 Spring Boot,Quarkus 更适合微服务、Serverless 或云原生应用,它提供了许多有利的特性。

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);
  }
}

标签:Java,框架,Spring,四款,Javalin,https,轻量级
From: https://www.cnblogs.com/javaguide/p/18159253

相关文章

  • 2024年JAVA1.8于window10系统下的安装安装
    2024年JAVA1.8于window10系统下的安装安装导航2024年JAVA1.8于window10系统下的安装安装导航一、下载JAVA1.8二、安装JAVA1.8三、配置环境一、下载JAVA1.8Oracle官网各历史版本:https://www.oracle.com/cn/java/technologies/downloads/archive/首先,我们选择这个版本......
  • Java登陆第四十四天——跟写微头条遇到的问题
    微头条项目链接作为JavaWeb的收官之作,这里记载了写项目时遇到的问题。前提:使用maven进行依赖管理1.JJWT导入依赖太少最初只导入了<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.5<......
  • 图文结合手把手教你创建SpringCloud项目
    前言什么是SpringCloud?SpringCloud是一系列框架的有序集合,它利用SpringBoot的开发便利性简化了分布式系统的开发,比如服务注册、服务发现、网关、路由、链路追踪等。SpringCloud并不是重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成......
  • IDEA中springboot项目编译两次的问题
    原因:因为在导入项目的之后,项目无法运行,问题1:显示缺少org.springbootframe的依赖,不知道怎么解决,网上搜了个方法,就是勾选下图的选项,意思是把build操作由IDEA交给Maven,勾选之后确实可以启动项目了但是后面在执行Mybatis时,问题2:我发现无论如何都会报一个唯一键值重复的错误,思考原因......
  • Springboot版本升级
    升级简介开发软件:IDEA2019项目环境:java8,springboot2.0.5目标版本:java8,springboot2.5.5本文档前后变化对比,旧代码使用、//等表示。依赖升级升级版本<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <!......
  • springboot的日志swagger的配置
    我们导入swagger分为三步一.导入依赖首先我们需要在项目的pom里导入依赖<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0......
  • 4 25spring Task
    由spring框架提供的定时处理任务的 websocket:使得客户端浏览器跟服务端双向传递数据    ......
  • 【vue3入门】-【3】使用javascript表达式
    使用javascript表达式每个绑定仅支持单一表达式,也就是一段能够被求值的JavaScript代码。一个简单的判断方法是是否可以合法的写在return后面。<template><h3>模版语法</h3><p>{{msg}}</p><p>{{number+1}}</p><p>{{ok?"yes":"No"}}</......
  • 招聘java 然后进去写.net ?
    这刚好金三银四嘛,最近社区呢,经常出现这种讨论。很多企业招聘java然后进去实际做项目写.net,这说明.net平台的人很少嘛,java的人很多,目前阶段.net8一点都不比java差,甚至还比java更好!目前很多国外在对比java和.net的时候,已经得出一些结论,甚至在性能上更比java好,可以去找找这方......
  • JAVA程序连接es(Elasticsearch)会出现长时间不请求,突然请求会连接超时的问题
       可以使用这个方法试试设置长时间保持策略 伪代码 /***配置长连接保持策略**@return*/publicConnectionKeepAliveStrategyconnectionKeepAliveStrategy(){return(response,context)->{//Honor'keep......