Introduction to the Jooby Framework
为什么选择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应用程序框架 U>的术语。 与全栈框架形成对比。 它缺少完整的Web应用程序框架中常见的大多数功能,例如:
帐户,身份验证,授权和角色
通过对象关系映射进行数据库抽象
输入验证和输入卫生。
Web模板引擎
通常,微框架通过接收HTTP请求,将HTTP请求路由到适当的控制器,分派控制器并返回HTTP响应来提供便利。 微框架通常是专门为构建另一个服务或应用程序的API而设计的。
微框架和Jooby框架
您有一个模板引擎
多个ORM
安全性(帐户,身份验证等)
输入验证
那么,Jooby是微框架吗? 我不这么认为。 实际上,在Jooby中,所有对象都是一个模块,您可以在项目中使用它们。
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
<铅>
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
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频道。