Jooby框架简介

Introduction to the Jooby Framework

Jooby

为什么选择Java? 为什么选择乔比?

您认为Java运行缓慢吗? 我想改变主意。 让我们来看看!

我每三个月检查一次Techempower基准测试。 但是这个月,我对自己的发现感到惊讶。 您知道Java平台非常快,并且在集成C和C ++之后,Java平台通常比其他平台更快。 但是这次,我看到了一个微框架以及诸如Raws Servlet之类的更快的框架。

Java有很多框架,微框架,平台和库。 去年,我们看到了许多可扩展的,快速的Java框架和微框架。 但是,您是否了解Jooby-

在本文中,我们讨论了Jooby以及在项目中测试和使用它的原因。

什么是乔比?

Jooby是适用于Java和Kotlin的可扩展,快速且模块化的微型Web框架。

Jooby遵循以下基本概念:"做得更多,更容易" —例如,注释和依赖项注入被减少到最低限度,并且在某些方面是完全可选的。 由于在标准部署模式下使用了JVM Bootstrap,因此可以进一步向开发人员展示"类路径深渊"的出路。

Jooby由开发人员Edgar Espina构建,可利用NIO(非阻塞IO)服务器(包括Netty,Jetty或Undertow)提供模块化,无状态的应用程序开发。

在本文中,我们将学习Jooby在构建大型Web应用程序及其功能时提供的选项。

什么是微框架?

微框架是用于指代简约的 web应用程序框架的术语。 与全栈框架形成对比。 它缺少完整的Web应用程序框架中常见的大多数功能,例如:

  • 帐户,身份验证,授权和角色

  • 通过对象关系映射进行数据库抽象

  • 输入验证和输入卫生。

  • Web模板引擎

  • 通常,微框架通过接收HTTP请求,将HTTP请求路由到适当的控制器,分派控制器并返回HTTP响应来提供便利。 微框架通常是专门为构建另一个服务或应用程序的API而设计的。

    微框架和Jooby框架

  • 您有一个模板引擎

  • 多个ORM

  • 安全性(帐户,身份验证等)

  • 输入验证

  • 那么,Jooby是微框架吗? 我不这么认为。 实际上,在Jooby中,所有对象都是一个模块,您可以在项目中使用它们。

    Image title

    Jooby:功能

  • 简单易学

  • 用于构建小型和大型Web应用程序的简单有效的编程模型

  • 可扩展的无状态应用程序开发

  • 脚本编程模型,例如express.js,Sinatra

  • 考虑开发人员的生产力

  • 用于路由的普通Java DSL(无XML或类似语言)

  • 反射批注依赖项注入保持为最小值,在某些情况下,它们是完全可选的

  • 没有类路径问题-默认部署模型使用普通的JVM引导程序

  • MVC路由和脚本路由

  • 多协议:HTTP,HTTPS,HTTP 2.0,Web套接字

  • 用于创建API文档的多种API工具

  • 用于SQL和NoSQL的数据库访问模块

  • 简单易学

  • 用于构建小型和大型Web应用程序的简单有效的编程模型

  • 可扩展的无状态应用程序开发

  • 脚本编程模型,例如express.js,Sinatra

  • 考虑开发人员的生产力

  • 用于路由的普通Java DSL(无XML或类似语言)

  • 反射批注依赖项注入保持为最小值,在某些情况下,它们是完全可选的

  • 没有类路径问题-默认部署模型使用普通的JVM引导程序

  • MVC路由和脚本路由

  • 多协议:HTTP,HTTPS,HTTP 2.0,Web套接字

  • 用于创建API文档的多种API工具

  • 用于SQL和NoSQL的数据库访问模块

  • 关系数据库的JDBC访问

  • 非SQL

  • 关系数据库的JDBC访问

  • 非SQL

  • 资产管理,用于创建节点和资源的前端

  • 使用模板引擎创建视图并进行解析

  • 重要部分:反应和异步

  • 由于受支持的Web服务器:Netty,Jetty和Undertow,您可以将Jooby视为事件循环服务器。 默认的Web服务器是Netty。

  • 由于受支持的Web服务器:Netty,Jetty和Undertow,您可以将Jooby视为事件循环服务器。 默认的Web服务器是Netty。

  • HTTP会话和缓存

  • 会话(默认)

  • GUAVA会话商店

  • CASSANDRA Session Store

  • COUCHBASE会话存储

  • REDIS会话存储

  • MONGODB会话存储

  • 会话(默认)

  • GUAVA会话商店

  • CASSANDRA Session Store

  • COUCHBASE会话存储

  • REDIS会话存储

  • MONGODB会话存储

  • 安全

  • 多种部署方式

  • 伺服器

  • Netty-异步事件驱动的网络应用程序框架

  • Undertow-用Java编写的灵活的高性能Web服务器

  • Jetty-提供Web服务器和javax.servlet容器,以及对HTTP / 2和许多其他集成的支持

  • Servlet-部署到Servlet容器中

  • Netty-异步事件驱动的网络应用程序框架

  • Undertow-用Java编写的灵活的高性能Web服务器

  • Jetty-提供Web服务器和javax.servlet容器,以及对HTTP / 2和许多其他集成的支持

  • Servlet-部署到Servlet容器中

  • 其他模块:

  • 语言支持

  • 语言支持

  • Kotlin

  • Kotlin

  • 网页服务

  • AWS

  • 领事

  • AWS

  • 领事

  • 作业调度

  • 石英

  • 石英

  • 全文搜索

  • 弹性搜寻

  • 弹性搜寻

  • 代码质量

    代码质量是构建坚如磐石的软件的唯一方法。 我们在Jooby中对代码质量非常重视,进行了4000多次测试,并且代码覆盖率达到99.5%。

    您可以在GitHub上自行检查。

    巨柏基准

    要了解有关Jooby性能的更多信息,请查看以下链接:

    <。>

  • <。>
    技术力量

    技术力量

    <更多>
    的GitHub
    <铅>

    这是我的服务器中打招呼世界的基准:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    ab -n 10000 -c 100 http://172.16.0.6:8080/

    This is ApacheBench, Version 2.3 <$Revision: 1757674 $>

    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

    Licensed to The Apache Software Foundation, http://www.apache.org/




    Benchmarking 172.16.0.6 (be patient)

    Completed 1000 requests

    Completed 2000 requests

    Completed 3000 requests

    Completed 4000 requests

    Completed 5000 requests

    Completed 6000 requests

    Completed 7000 requests

    Completed 8000 requests

    Completed 9000 requests

    Completed 10000 requests

    Finished 10000 requests




    Server Software:        

    Server Hostname:        172.16.0.6

    Server Port:            8080




    Document Path:          /

    Document Length:        9 bytes




    Concurrency Level:      100

    Time taken for tests:   3.351 seconds

    Complete requests:      10000

    Failed requests:        0

    Total transferred:      860000 bytes

    HTML transferred:       90000 bytes

    Requests per second:    2984.59 [#/sec] (mean)

    Time per request:       33.505 [ms] (mean)

    Time per request:       0.335 [ms] (mean, across all concurrent requests)

    Transfer rate:          250.66 [Kbytes/sec] received




    Connection Times (ms)

                 min mean[+/-sd] median   max

    Connect:        2 15 2.7 16      23

    Processing:     5 18 9.2 17     120

    Waiting:        5 17 9.0 16     118

    Total:          7 33 7.9 32     124




    Percentage of the requests served within a certain time (ms)

     50%     32

     66%     33

     75%     33

     80%     34

     90%     35

     95%     36

     98%     55

     99%     76

    100%    124 (longest request)

    运行您的应用程序

    Jooby应用程序如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class App extends Jooby { // 1.
     {
       // 2. add a route
       get("/", () ->"Hello");
     }

     public static void main(String[] args) {
       // 3. run my app
       run(App::new, args);
     }
    }

    1)创建一个扩展Jooby的新应用

    2)在实例初始化程序中定义您的应用程序

    3)运行应用程序。

    结论

    Jooby使Java Web开发变得简单而有趣。 它具有良好的文档,您可以快速轻松地运行Web应用程序。 可读性成为衡量程序质量的重要指标,Jooby代码的可读性非常高。

    同样,正交性是Jooby中的重要因素之一。 此外,它简单,富有表现力,有效,并且当然具有出色的性能,因此可以通过使用辅助线程来确保您的安全。

    Jooby提供了所有工具来提高您的工作效率,例如hotreload,浏览器实时重载,单元/集成测试以及许多模块。 此外,构建某些内容所需的行数通常少于任何其他Java框架。

    您可以在此处加入Jooby频道。