Pambuka
Tanggal XNUMX Maret, RedHat (enggal IBM)
Tujuane kanggo nggawe Java minangka platform utama kanggo penyebaran Kubernetes lan pangembangan aplikasi tanpa server, nyedhiyakake pangembang kanthi pendekatan terpadu kanggo pangembangan ing gaya reaktif lan imperatif.
Yen sampeyan ndeleng
Kacepetan aplikasi sing dhuwur banget lan konsumsi memori sing sithik dijanjekake. Mangkene data saka situs web pangembang:
Wektu saka wiwitan nganti tanggapan pisanan (s):
Konfigurasi
REST
REST+JPA
Quarkus+GraalVM
0.014
0.055
Quarkus+OpenJDK
0.75
2.5
Tumpukan Asli Awan Tradisional*
4.3
9.5
Konsumsi memori (Mb):
Konfigurasi
REST
REST+JPA
Quarkus+GraalVM
13
35
Quarkus+OpenJDK
74
130
Tumpukan Asli Awan Tradisional*
140
218
Nyengsemaken, ta?
*Aku ora nemokake informasi babagan tumpukan teknologi iki, kita bisa nganggep manawa iki minangka Spring Boot kanthi kit awak tambahan..
Hello World!
Aplikasi paling gampang sing ditulis ing Quarkus bakal katon kaya iki:
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello";
}
}
Iku secara harfiah siji kelas lan iku cukup! Sampeyan bisa mbukak aplikasi nggunakake Maven ing mode pangembangan:
mvn compile quarkus:dev
β¦
$ curl http://localhost:8080/hello
hello
Bedane saka aplikasi biasa yaiku ora ana kelas Aplikasi! Quarkus ndhukung reload panas, supaya sampeyan bisa ngganti aplikasi tanpa miwiti maneh, nggawe pembangunan luwih cepet.
Apa sabanjure? Sampeyan bisa nambah layanan menyang controller nggunakake anotasi
@ApplicationScoped
public class GreetingService {
public String greeting(String name) {
return "Hello " + name + "!";
}
}
pengontrol:
@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!
Elinga yen Quarkus nggunakake anotasi standar saka kerangka kerja sing akrab - CDI lan JAX-RS. Ora perlu sinau sing anyar yen sampeyan wis kerja karo CDI lan JAX-RS sadurunge, mesthi.
Nggarap database
Hibernate lan anotasi JPA standar kanggo entitas digunakake. Kaya pengontrol REST, sampeyan kudu nulis kode minimal. Cukup kanggo nunjukake dependensi ing file perakitan, nambah anotasi @Entity
lan ngatur sumber data ing application.properties.
Kabeh. Ora ana sessionFactory, persistence.xml utawa file layanan liyane. Kita nulis mung kode sing dibutuhake. Nanging, yen perlu, sampeyan bisa nggawe file persistence.xml lan ngatur lapisan ORM luwih apik.
Quarkus ndhukung caching entitas, koleksi kanggo hubungan siji-kanggo-akeh, lan pitakon. Ing kawitan marketing katon apik, nanging iku lokal caching, kanggo siji simpul Kubernetes. Sing. Cache saka macem-macem simpul ora disinkronake karo saben liyane. Mugi iki sak wentoro.
Eksekusi kode asinkron
Kaya kasebut ing ndhuwur, Quarkus uga ndhukung gaya pemrograman reaktif. Kode aplikasi sadurunge bisa ditulis ing wangun sing beda.
@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 + "!";
});
}
}
Kode asinkron uga bisa ditransfer menyang layanan, asil bakal padha.
Tes
Tes kanggo aplikasi Quarkus bisa ditulis ing JUnit4 utawa JUnit5. Ing ngisor iki minangka conto tes kanggo titik pungkasan, ditulis nggunakake RestAssured, nanging kerangka liya bisa digunakake:
@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 + "!"));
}
}
Anotasi @QuarkusTest menehi pitunjuk kanggo mbukak aplikasi sadurunge nglakokake tes. Liyane iku kode akrab kanggo kabeh pangembang.
Aplikasi khusus platform
Wiwit Quarkus wis Integrasi tightly karo GraalVM, iku mesthi bisa kanggo generate kode platform-tartamtu. Kanggo nindakake iki, sampeyan kudu nginstal GraalVM lan nemtokake variabel lingkungan GRAALVM_HOME. Salajengipun
mvn package -Pnative
Apike, aplikasi sing digawe bisa diuji. Lan iki penting amarga eksekusi kode asli bisa beda karo eksekusi ing JVM. Anotasi @SubstrateTest nganggo kode aplikasi khusus platform. Nggunakake maneh kode tes sing ana bisa ditindakake nggunakake warisan; minangka asil, kode kanggo nguji aplikasi sing gumantung ing platform bakal katon kaya iki:
@SubstrateTest
public class GreetingResourceIT extends GreetingResourceTest {
}
Gambar sing digawe bisa dikemas ing Docker lan mbukak ing Kubernetes utawa OpenShift, diterangake kanthi rinci ing
Piranti
Framework Quarkus bisa digunakake karo Maven lan Gradle. Maven didhukung kanthi lengkap, ora kaya Gradle. Sayange, saiki Gradle ora ndhukung nggawe proyek kosong; ana informasi rinci ing situs web
Ekstensi
Quarkus minangka kerangka kerja sing bisa diperpanjang. Saiki ana pesenan
kesimpulan
Miturut pendapatku, Quarkus cukup cocog karo tren jaman saiki. Pangembangan kode backend dadi luwih gampang lan luwih gampang, lan kerangka kerja iki luwih gampang lan nyepetake pangembangan layanan kanthi nambah dhukungan asli kanggo Docker lan Kubernetes. A plus ageng punika dibangun ing support kanggo GraalVM lan generasi saka gambar gumantung platform, sing ngidini layanan kanggo miwiti tenan cepet lan njupuk munggah sethitik papan memori. Lan iki penting banget ing wektu semangat massa kanggo layanan mikro lan arsitektur tanpa server.
Situs resmi -
Source: www.habr.com