Okwu Mmalite
Na Maachị XNUMXth, RedHat (n'oge na-adịghị anya IBM)
Ebumnuche bụ ime Java ka ọ bụrụ isi ikpo okwu maka ntinye Kubernetes na mmepe ngwa na-enweghị ihe nkesa, na-enye ndị mmepe ụzọ dị n'otu maka mmepe na ụdị mmeghachi omume na nke dị mkpa.
Ọ bụrụ na ị na-ele anya
A na-ekwe nkwa mwepụta ngwa dị oke ọsọ yana obere ebe nchekwa. Nke a bụ data sitere na webụsaịtị onye nrụpụta:
Oge site na mmalite ruo nzaghachi mbụ (s):
Nhazi
REST
REST+JPA
Quarkus+GraalVM
0.014
0.055
Quarkus+OpenJDK
0.75
2.5
Omenala igwe ojii
4.3
9.5
Oriri ebe nchekwa (Mb):
Nhazi
REST
REST+JPA
Quarkus+GraalVM
13
35
Quarkus+OpenJDK
74
130
Omenala igwe ojii
140
218
Na-akpali mmasị, ọ bụghị ya?
*Ahụghị m ozi ọ bụla gbasara nchịkọta teknụzụ a, anyị nwere ike iche na nke a bụ ụdị Boot Spring nwere ngwa ahụ ọzọ..
Ndewo Ụwa!
Ngwa kachasị mfe edere na Quarkus ga-adị ka nke a:
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello";
}
}
Ọ bụ otu klas na nke ahụ ezuola! Ị nwere ike iji Maven mee ngwa a na ọnọdụ mmepe:
mvn compile quarkus:dev
…
$ curl http://localhost:8080/hello
hello
Ihe dị iche na ngwa mgbe niile bụ na enweghị klas ngwa! Quarkus na-akwado ibugharị ọkụ, yabụ ị nwere ike ịgbanwe ngwa gị na-enweghị ịmalitegharị ya, na-eme mmepe ngwa ngwa.
Gịnị na-esote? Ịnwere ike ịgbakwunye ọrụ na njikwa site na iji nkọwa
@ApplicationScoped
public class GreetingService {
public String greeting(String name) {
return "Hello " + name + "!";
}
}
Onye njikwa:
@Path("/hello")
public class GreetingResource {
@Inject
GreetingService service;
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/{name}")
public String greeting(@PathParam("name") String name) {
return service.greeting(name);
}
}
$ curl http://localhost:8080/hello/developer
Hello developer!
Rịba ama na Quarkus na-eji nkọwa ọkọlọtọ sitere na usoro ndị ama ama - CDI na JAX-RS. Ọ dịghị mkpa ịmụta ihe ọhụrụ ma ọ bụrụ na ị na-arụ ọrụ na CDI na JAX-RS na mbụ, n'ezie.
Na-arụ ọrụ na nchekwa data
A na-eji nkọwa nkọwa Hibernate na ọkọlọtọ JPA maka ụlọ ọrụ. Dịka ọ dị na ndị njikwa REST, ịkwesịrị ide opekempe koodu. O zuru ezu igosi ihe ndabere na faịlụ mgbakọ, tinye nkọwa @Entity
ma hazie datasource na ngwa.properties.
Ha niile. Enweghị ụlọ ọrụ sessions, persistence.xml ma ọ bụ faịlụ ọrụ ndị ọzọ. Anyị na-ede naanị koodu achọrọ. Agbanyeghị, ọ bụrụ na ọ dị mkpa, ịnwere ike ịmepụta faịlụ persistence.xml wee hazie oyi akwa ORM nke ọma.
Quarkus na-akwado caching nke ụlọ ọrụ, nchịkọta maka otu-na-ọtụtụ mmekọrịta, yana ajụjụ. Na ilele mbụ ọ dị mma, mana ọ dị mpaghara caching, maka otu ọnụ ụzọ Kubernetes. Ndị ahụ. A naghị emekọrịta cache nke ọnụ ọnụ dị iche iche na ibe ha. Enwere m olileanya na nke a bụ nwa oge.
Mkpebi koodu asynchronous
Dịka ekwuru n'elu, Quarkus na-akwadokwa ụdị mmemme na-emeghachi omume. Enwere ike dee koodu nke ngwa gara aga n'ụdị dị iche.
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/{name}")
public CompletionStage<String> greeting(@PathParam("name") String name) {
return CompletableFuture.supplyAsync(() -> {
return "Hello " + name + "!";
});
}
}
Enwere ike ịnyefe koodu asynchronous na ọrụ ahụ, nsonaazụ ga-abụ otu.
Ule
Enwere ike dee ule maka ngwa Quarkus na JUnit4 ma ọ bụ JUnit5. N'okpuru bụ ule atụ maka njedebe njedebe, ejiri RestAssured dee ya, mana enwere ike iji usoro ọzọ:
@QuarkusTest
public class GreetingResourceTest {
@Test
public void testGreetingEndpoint() {
String uuid = UUID.randomUUID().toString();
given()
.pathParam("name", uuid)
.when().get("/hello/{name}")
.then()
.statusCode(200)
.body(is("Hello " + uuid + "!"));
}
}
Nkọwa @QuarkusTest na-agwa gị ka ịmee ngwa ahụ tupu ịme ule. Ndị ọzọ bụ koodu maara nke ọma maka ndị mmepe niile.
Ngwa akọwapụtara nke ikpo okwu
Ebe ọ bụ na ejikọtara Quarkus na GraalVM nke ọma, ọ ga-ekwe omume ịmepụta koodu akọwapụtara nke ọma. Iji mee nke a, ịkwesịrị ịwụnye GraalVM wee kọwapụta mgbanwe gburugburu GRAALVM_HOME. Ọzọkwa
mvn package -Pnative
N'ụzọ na-akpali mmasị, enwere ike ịnwale ngwa emepụtara. Na nke a dị mkpa n'ihi na ogbugbu nke koodu obodo nwere ike ịdị iche na ogbugbu na JVM. Nkọwa @SubstrateTest na-eme koodu ngwa akọwapụtara nke ikpo okwu. Enwere ike ịmegharị koodu ule dị ugbu a site na iji ihe nketa; N'ihi ya, koodu maka ịnwale ngwa dabere na ikpo okwu ga-adị ka nke a:
@SubstrateTest
public class GreetingResourceIT extends GreetingResourceTest {
}
Enwere ike ịchịkọta onyonyo emepụtara na Docker wee gbaa ọsọ na Kubernetes ma ọ bụ OpenShift, akọwara n'uju
Ngwaọrụ
Enwere ike iji usoro Quarkus na Maven na Gradle. A kwadoro Maven nke ọma, n'adịghị ka Gradle. Ọ dị nwute, ugbu a Gradle anaghị akwado ịmepụta ọrụ efu; enwere ozi zuru ezu na webụsaịtị
Ndokwa
Quarkus bụ usoro nwere ike ịgbatị. Ugbu a enwere iwu
nkwubi
N'uche nke m, Quarkus dabara na usoro nke oge ahụ. Mmepe koodu azụ na-adị mfe ma dịkwa mfe, usoro a na-eme ka ọ dị mfe ma na-eme ka mmepe ọrụ dị ngwa site na ịgbakwunye nkwado obodo maka Docker na Kubernetes. Nnukwu gbakwunyere bụ nkwado wuru n'ime maka GraalVM na ọgbọ nke onyonyo dabere na ikpo okwu, nke na-enye ohere ọrụ ịmalite ngwa ngwa ma were obere ebe nchekwa. Ma nke a dị ezigbo mkpa n'oge anyị nwere oke agụụ maka microservices na ihe owuwu enweghị ihe nkesa.
Saịtị gọọmentị -
isi: www.habr.com