-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathextension-maturity-matrix.adoc.po
319 lines (254 loc) · 15 KB
/
extension-maturity-matrix.adoc.po
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
msgid ""
msgstr ""
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: jekyll-l10n\n"
#: _guides/extension-maturity-matrix.adoc
msgid "A maturity matrix for Quarkus extensions"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "What makes a good Quarkus extension? What capabilities is a Quarkus extension expected to provide? Of course, it depends on the extension you are building. But, we found a set of attributes common to many extensions. This document explains what they are."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "This isn't defining an exact order, even within a single row. Different extensions have different goals, and different developers will have different views on what capabilities are most important. You may wish to (for example) prioritise a fantastic programming model over enhancing your extension's Dev UI tile. That's fine!"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Also, not every step will apply to every extension. For example, you don't need a Dev Service if your extension doesn't depend on external services."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "It's completely OK to publish a first version of an extension that doesn't handle everything. In fact, it's OK if your extension _never_ gets to the more advanced features. This is a suggested pathway, not a minimum feature set."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Also note that this list only includes the technical features of your extension.\n"
"You might also want to think about how you share your extension, and how it presents itself to the world.\n"
"The link:https://hub.quarkiverse.io/checklistfornewprojects/[new extension checklist] on the Quarkiverse Hub has a useful list of ways extensions can participate in the ecosystem.\n"
"It's also a good idea to spend some time on the metadata in the xref:extension-metadata.adoc#quarkus-extension-yaml[`quarkus-extension.yaml` file], which is used by Quarkus tooling."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Here are some pointers on how to achieve those capabilities."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Run modes"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Quarkus applications can be run as a normal jar-based JVM application,\n"
"or live-coded in dev mode, or compiled to a native binary.\n"
"Each environment places different demands on framework extensions."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Works in JVM mode"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"For most extensions, this is the minimum expectation.\n"
"When wrapping an existing library, this is usually trivial to achieve; if an extension is providing net-new capability, it might be a bit more work. Quarkus provides tools for xref:writing-extensions.adoc#testing-extensions[unit testing and integration testing] extensions."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Works in dev mode"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"In some cases, extra work may be needed to ensure any wrapped libraries can tolerate\n"
"dev mode, since the classloading is different and hot reloading can break some assumptions. Extensions may also wish to add some\n"
"xref:writing-extensions.adoc#integrating-with-development-mode[special handling for dev mode].\n"
"To add automated tests which validate dev mode, you can xref:writing-extensions.adoc#testing-hot-reload[add tests which extend the `QuarkusDevModeTest`]."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Works as a native application"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "For many libraries, native mode support is the primary motivation for creating an extension. See xref:writing-extensions.adoc#native-executable-support[the guide on native executable support] for more discussion about some of the adaptations that might be needed."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Developer Joy"
msgstr "Satisfacción del desarrollador"
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Developer Joy is an important Quarkus principle.\n"
"Here are some extension capabilities that contribute to joyful development."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Configuration support"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Extensions should support Quarkus's unified configuration, by xref:writing-extensions.adoc#configuration[integrating with the Quarkus configuration model].\n"
"The Writing Extensions guide has more guidance on xref:writing-extensions.adoc#how-to-expose-configuration[the Quarkus configuration philosophy]."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "CDI Beans"
msgstr "Beans CDI"
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Quarkus extensions should aim to xref:writing-extensions.adoc#expose-your-components-via-cdi[expose components via CDI], so that they can be consumed in a frictionless way by user applications.\n"
"Having everything injectable as CDI beans also helps testing, especially xref:getting-started-testing.adoc#mock-support[mocking]."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Dev Service"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Dev Services are generally relevant for extensions that \"connect\" to something, such as databases for datasources, a keycloak instance for security, an Apache Kafka instance for messaging, etc."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "To provide a Dev Service, use the `DevServicesResultBuildItem` build item. See the xref:extension-writing-dev-service.adoc[Dev Services how-to] for more information."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Basic Dev UI"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Every extension gets a tile in the Dev UI. The default tile pulls information from the xref:extension-metadata.adoc[extension metadata], which is another reason to spend a bit of time getting the metadata right."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Extensions also use Dev UI hooks to present extra information to users. For example, the tile could include a link to an external console, or an internal page which presents simple text metrics. See the xref:dev-ui.adoc[Dev UI for extension developers] guide."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Rich Dev UI"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Some extensions provide extremely sophisticated Dev UIs.\n"
"For example, they might allow users to interact with the running application, xref:dev-ui.adoc#hot-reload[respond to reloads], visualise application metrics, or xref:dev-ui.adoc#add-a-log-to-the-footer[stream an application-specific log].\n"
"The xref:dev-ui.adoc[Dev UI for extension developers] guide also explains these more advanced options."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Joyful programming model"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Quarkus's build-time philosophy means extensions can tidy up API boilerplate and make programming models more concise and expressive.\n"
"A good starting point is usually to use\n"
" xref:writing-extensions.adoc#scanning-deployments-using-jandex[Jandex] to scan user code for annotations and other markers.\n"
"Although providing new, joyful, ways to do things is good,\n"
"it's important to not break the normal patterns that users may be familiar with."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "For some inspiration in this area, have a look at xref:logging.adoc#simplified-logging[simplified logging], xref:hibernate-orm-panache.adoc[simplified Hibernate ORM with Panache], the xref:rest-client.adoc#query-parameters[`@RestQuery` annotation], or the way Quarkus allows test containers to be used xref:getting-started-dev-services.adoc[without any configuration]."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Codestart application template"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Codestarts are templates which can be used to generate applications for users.\n"
"Extensions can xref:extension-codestart.adoc[provide their own codestart templates]."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Supersonic subatomic performance"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Extensions should use build-time application knowledge to eliminate wasteful runtime code paths. We call this supersonic subatomic performance.\n"
"Because Quarkus moves work to the build stage, Quarkus applications should have fast startup, high throughput, and low memory requirements. Performance tuning is a large subject, but extensions should use build-time application knowledge to eliminate wasteful runtime code paths at runtime."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Static initialization"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Do as much initialization as much as possible statically.\n"
"This avoid runtime overhead."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Replace reflection with generated bytecode"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Many Java libraries make heavy use of reflection to delay decisions to run-time. Quarkus aims to improve performance by moving logic to build time, reducing unnecessary dynamism.\n"
"Extensions should aim to replace reflection with build-time code.\n"
"This is enabled by\n"
" xref:writing-extensions.adoc#scanning-deployments-using-jandex[Jandex], an \"offline reflection\" library. It may also be necessary to do some bytecode transformation of existing libraries."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "For a case study of how to eliminate reflection and what the performance benefits turned out to be, see https://quarkus.io/blog/quarkus-metaprogramming/[reflectionless Jackson serialization]"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Virtual thread support"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Not every library is suitable for using with virtual threads, out of the box.\n"
"xref:virtual-threads.adoc#why-not[\"Why not virtual threads everywhere?\"] explains why."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"To get your library working properly with virtual threads, you should make sure the library is not pinning the carrier thread.\n"
" Quarkus has xref:virtual-threads.adoc#testing-virtual-thread-applications[test helpers to do these checks in an automated way].\n"
" For dispatching work, you should use the xref:virtual-threads.adoc#inject-the-virtual-thread-executor[virtual executor managed by Quarkus]. The link:https://quarkus.io/extensions/io.quarkus/quarkus-websockets-next/[WebSockets-next extension] uses the virtual dispatcher and smart dispatch, and is a good example to follow."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Hot path performance optimization"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Although Quarkus offers some unique opportunities for extension performance, extension developers shouldn't forget https://www.linkedin.com/pulse/how-optimize-software-performance-efficiency-subcodevs/[the basics of performance optimization]."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Non-blocking internals"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Quarkus's reactive core is a key contributor to its excellent throughput and scalability. Extensions should consider adopting this model for their own internal operations."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Add Mutiny-based APIs"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"For maximum scalability, go beyond the reactive core and enable fully reactive programming, using Mutiny. Most projects that support a reactive programming model offer two distinct extensions, a `-reactive` and a plain one.\n"
"See, for example, https://quarkus.io/extensions/io.quarkiverse.quarkus-elasticsearch/quarkus-elasticsearch/[ElasticSearch] and https://quarkus.io/extensions/io.quarkiverse.quarkus-elasticsearch-reactive/quarkus-elasticsearch-reactive/[ElasticSearch Reactive] extensions."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Operations"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Developer joy is important, but so are observability, maintainability, and other operational considerations.\n"
"Many of these characteristics come by default with the Quarkus framework or https://quarkus.io/extensions/io.quarkus/quarkus-opentelemetry/[observability-focussed extensions]. But extensions can do more."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
#, fuzzy
msgid "Logging"
msgstr "Registro"
#: _guides/extension-maturity-matrix.adoc
msgid "Quarkus uses JBoss Logging as its logging engine, and xref:logging.adoc[supports several logging APIs]. (This is normal Java logging, not OpenTelemetry logging.)"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Avoid using errors and warnings for conditions that will not affect normal operation. These outputs can cause false alarms in user monitoring systems."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Define health endpoints"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Extensions may wish to xref:writing-extensions.adoc#extension-defined-endpoints[define library-specific endpoints] for health criteria which are specific to that extension. To add a new endpoint, extensions should produce a `NonApplicationRootPathBuildItem`."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Tracing context"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"You should test that OpenTelemetry output for applications using your extension have properly-defined spans. You may need to do extra work to ensure spans are created with the right tracing ID.\n"
"For example, extensions which have reactive internals should support xref:duplicated-context.adoc[duplicated contexts] for correct context propagation."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "Advanced Kubernetes and containers integration"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid ""
"Quarkus is designed to be a Kubernetes-native runtime.\n"
"Extensions can continue this philosophy by adding library-specific integration points with Kubernetes.\n"
"Being Kubernetes-native implies being container-native. At a minimum, extensions should always work well in containers, but extensions may also have opportunities to integrate with the lower levels of the container stack."
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "References"
msgstr "Referencias"
#: _guides/extension-maturity-matrix.adoc
msgid "xref:writing-extensions.adoc[Writing your own extension] guide"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "xref:building-my-first-extension.adoc[Building your first extension]"
msgstr ""
#: _guides/extension-maturity-matrix.adoc
msgid "link:https://hub.quarkiverse.io.adoc[The Quarkiverse Hub documentation]"
msgstr ""