Quarkus: Pemodenan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart

Halo semua orang di blog ini, inilah catatan keempat dalam siri Quarkus!

Quarkus: Pemodenan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart

Jawatan sebelumnya adalah tentang cara Quarkus menggabungkan MicroProfile dan Spring. Biar kami ingatkan anda itu quarkus diletakkan sebagai "Jawa subatom ultra-pantas", aka "Timbunan Java berorientasikan Kubernetes, disesuaikan untuk GraalVM dan OpenJDK HotSpot dan dipasang daripada perpustakaan dan piawaian terbaik." Hari ini kami akan menunjukkan cara untuk memodenkan aplikasi Java sedia ada menggunakan keupayaan Quarkus, menggunakan contoh aplikasi helloworld daripada repositori Mula Pantas Red Hat JBoss Enterprise Application Platform (JBoss EAP), yang menggunakan teknologi CDI dan Servlet 3 yang disokong oleh Quarkus.

Adalah penting untuk ambil perhatian di sini bahawa kedua-dua Quarkus dan JBoss EAP menekankan penggunaan alatan yang berasaskan standard yang mungkin. Tidak mempunyai aplikasi yang dijalankan pada JBoss EAP? Tiada masalah, ia boleh dipindahkan dengan mudah daripada pelayan aplikasi semasa anda ke JBoss EAP menggunakan Kit Alat Migrasi Aplikasi Red Hat. Selepas itu versi terakhir dan kod yang dimodenkan yang berfungsi akan tersedia dalam repositori github.com/mrizzi/jboss-eap-quickstarts/tree/quarkus, dalam modul Hai dunia.

Semasa menulis catatan ini kami gunakan Manual Quarkus, pada asasnya Mencipta Aplikasi Pertama Anda dan Bangunan a Boleh Laku Asli.

Jom dapatkan kod

Pertama sekali, mari buat klon tempatan repositori JBoss EAP bermula pantas:

$ git clone https://github.com/jboss-developer/jboss-eap-quickstarts.git
Cloning into 'jboss-eap-quickstarts'...
remote: Enumerating objects: 148133, done.
remote: Total 148133 (delta 0), reused 0 (delta 0), pack-reused 148133
Receiving objects: 100% (148133/148133), 59.90 MiB | 7.62 MiB/s, done.
Resolving deltas: 100% (66476/66476), done.
$ cd jboss-eap-quickstarts/helloworld/

Mari lihat cara helloworld asal berfungsi

Sebenarnya, intipati aplikasi ini jelas dari namanya, tetapi kami akan memodenkan kodnya secara saintifik. Oleh itu, pertama, mari kita lihat aplikasi ini dalam bentuk asalnya.

Menggunakan helloworld

1. Buka terminal dan pergi ke akar folder JBoss EAP (anda boleh memuat turunnya di sini), iaitu, ke folder EAP_HOME.

2. Lancarkan pelayan JBoss EAP dengan profil lalai:

$ EAP_HOME/bin/standalone.sh

Nota: Pada Windows, skrip EAP_HOMEbinstandalone.bat digunakan untuk melancarkannya.

Selepas beberapa saat, sesuatu seperti ini akan muncul dalam log:

[org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) started in 3315ms - Started 306 of 527 services (321 services are lazy, passive or on-demand)

3. Buka dalam pelayar 127.0.0.1:8080 dan kita lihat ini:

Quarkus: Pemodenan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart

nasi. 1. Halaman Utama JBoss EAP.

4. Ikut arahan dalam manual Bina dan Gunakan Permulaan Pantas: kembangkan helloworld dan jalankan (dari folder akar projek) arahan berikut:

$ mvn clean install wildfly:deploy

Selepas berjaya melaksanakan arahan ini, kita akan melihat sesuatu seperti berikut dalam log:

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 8.224 s

Jadi, penggunaan pertama aplikasi helloworld pada JBoss EAP mengambil masa lebih 8 saat sahaja.

Menguji helloworld

Bertindak tegas mengikut arahan Akses Aplikasi, buka dalam penyemak imbas 127.0.0.1:8080/helloworld dan kita lihat ini:

Quarkus: Pemodenan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart

nasi. 2. Hello World asal daripada JBoss EAP.

Membuat perubahan

Tukar parameter input createHelloMessage(String name) dari World kepada Marco:

writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");

Jalankan arahan berikut sekali lagi:

$ mvn clean install wildfly:deploy

Kemudian kami memuat semula halaman dalam penyemak imbas dan melihat bahawa teks telah berubah:

Quarkus: Pemodenan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart

nasi. 3. Hello Marco dalam JBoss EAP.

Kembalikan penggunaan helloworld dan tutup JBoss EAP

Ini adalah pilihan, tetapi jika anda ingin membatalkan penggunaan, anda boleh melakukannya dengan arahan berikut:

$ mvn clean install wildfly:undeploy

Untuk menutup contoh JBoss EAP anda, hanya tekan Ctrl+C dalam tetingkap terminal.

Menaik taraf helloworld

Sekarang mari kita modenkan aplikasi helloworld yang asal.

Buat cawangan baharu

Kami mencipta cawangan kerja baharu selepas projek permulaan pantas selesai:

$ git checkout -b quarkus 7.2.0.GA

Menukar fail pom.xml

Kami akan mula menukar aplikasi daripada fail pom.xml. Untuk membenarkan Quarkus memasukkan blok XML ke dalamnya, jalankan arahan berikut dalam folder helloworld:

$ mvn io.quarkus:quarkus-maven-plugin:0.23.2:create

Semasa menulis artikel ini, versi 0.23.2 telah digunakan. Quarkus sering mengeluarkan versi baharu, anda boleh mengetahui versi mana yang terbaru di laman web github.com/quarkusio/quarkus/releases/latest.

Perintah di atas akan memasukkan elemen berikut ke dalam pom.xml:

  • Harta benda , yang menentukan versi Quarkus untuk digunakan.
  • Sekat untuk mengimport Quarkus BOM (bil bahan), supaya tidak menambah versi untuk setiap pergantungan Quarkus.
  • Quarkus-maven-plugin bertanggungjawab untuk membungkus aplikasi dan menyediakan mod pembangunan.
  • Profil asli untuk mencipta boleh laku aplikasi.

Selain itu, kami secara manual membuat perubahan berikut pada pom.xml:

  1. Menarik keluar tag dari blok dan letakkan di atas tag . Kerana dalam langkah seterusnya kita akan mengeluarkan blok , maka anda perlu menyimpan .
  2. Mengalih keluar blok , kerana apabila berjalan dengan Quarkus, aplikasi ini tidak lagi memerlukan parent pom daripada JBoss.
  3. Tambah tag dan letakkan di bawah tag . Anda boleh menentukan nombor versi yang anda mahu.
  4. Mengalih keluar tag , kerana aplikasi ini bukan lagi PERANG, tetapi JAR biasa.
  5. Kami mengubah suai kebergantungan berikut:
    1. Tukar dependency javax.enterprise:cdi-api kepada io.quarkus:quarkus-arc, mengalih keluar disediakan , kerana (mengikut dokumen) sambungan Quarkus ini menyediakan suntikan kebergantungan CDI.
    2. Tukar dependency org.jboss.spec.javax.servlet:jboss-servlet-api_4.0_spec kepada io.quarkus:quarkus-undertow, mengalih keluar disediakan , kerana (mengikut dokumen) sambungan Quarkus ini menyediakan sokongan untuk servlet.
    3. Kami mengalih keluar kebergantungan org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec kerana ia disertakan dengan kebergantungan yang baru kami ubah.

Versi fail pom.xml dengan semua perubahan terletak di github.com/mrizzi/jboss-eap-quickstarts/blob/quarkus/helloworld/pom.xml.

Ambil perhatian bahawa perintah mvn io.quarkus:quarkus-maven-plugin:0.23.2:create di atas bukan sahaja mengubah fail pom.xml, tetapi juga menambah beberapa komponen pada projek, iaitu fail dan folder berikut:

  • Fail mvnw dan mvnw.cmd dan folder .mvn: Maven Wrapper membenarkan anda menjalankan projek Maven versi Maven yang diberikan tanpa memasang versi tersebut.
  • Folder Docker (dalam direktori src/main/): Ini mengandungi contoh Dockerfiles untuk mod asli dan jvm (bersama dengan fail .dockerignore).
  • Folder sumber (dalam direktori src/main/): Ini mengandungi fail application.properties kosong dan contoh halaman mula Quarkus index.html (lihat Jalankan helloworld yang dimodenkan untuk mendapatkan butiran lanjut).

Lancarkan helloworld
Untuk menguji aplikasi, kami menggunakan quarkus:dev, yang melancarkan Quarkus dalam mod pembangunan (untuk butiran lanjut, lihat bahagian ini dalam manual Mod Pembangunan).

Nota: Langkah ini dijangka akan mengakibatkan ralat, kerana kami belum membuat semua perubahan yang diperlukan.

Sekarang mari jalankan arahan untuk melihat cara ia berfungsi:

$ ./mvnw compile quarkus:dev
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Building Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Listening for transport dt_socket at address: 5005
INFO  [io.qua.dep.QuarkusAugmentor] Beginning quarkus augmentation
INFO  [org.jbo.threads] JBoss Threads version 3.0.0.Final
ERROR [io.qua.dev.DevModeMain] Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.jboss.as.quickstarts.helloworld.HelloService and qualifiers [@Default]
	- java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- declared on CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
	at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:841)
	at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:214)
	at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:106)
	at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:249)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:780)
	at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
	at java.lang.Thread.run(Thread.java:748)
	at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.jboss.as.quickstarts.helloworld.HelloService and qualifiers [@Default]
	- java member: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService
	- declared on CLASS bean [types=[javax.servlet.ServletConfig, java.io.Serializable, org.jboss.as.quickstarts.helloworld.HelloWorldServlet, javax.servlet.GenericServlet, javax.servlet.Servlet, java.lang.Object, javax.servlet.http.HttpServlet], qualifiers=[@Default, @Any], target=org.jboss.as.quickstarts.helloworld.HelloWorldServlet]
	at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:428)
	at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:371)
	at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:206)
	... 14 more

Jadi, ia tidak berfungsi... Kenapa?

UnsatisfiedResolutionException menunjuk ke kelas HelloService, yang merupakan ahli kelas HelloWorldServlet (ahli java: org.jboss.as.quickstarts.helloworld.HelloWorldServlet#helloService). Masalahnya ialah HelloWorldServlet memerlukan instance HelloService yang disuntik, dan ia tidak dapat ditemui (walaupun kedua-dua kelas ini berada dalam pakej yang sama).

Sudah tiba masanya untuk kembali ke dokumentasi dan baca cara ia berfungsi di Quarkus Suntikan, dan oleh itu Konteks dan Suntikan Ketergantungan (CDI). Oleh itu, buka panduan Suntikan Konteks dan Ketergantungan dan dalam bahagian Penemuan Kacang kita membaca: "Kelas kacang yang tidak mempunyai anotasi penentu kacang tidak dicari."

Mari lihat kelas HelloService - ia benar-benar tidak mempunyai anotasi sedemikian. Oleh itu, ia mesti ditambah supaya Quarkus boleh mencari dan mencari kacang. Dan kerana ini adalah objek tanpa kewarganegaraan, kami boleh menambah anotasi @ApplicationScoped seperti ini dengan mudah:

@ApplicationScoped
public class HelloService {

Nota: di sini persekitaran pembangunan mungkin meminta anda menambah pakej yang diperlukan (lihat baris di bawah), dan anda perlu melakukan ini secara manual, seperti ini:

import javax.enterprise.context.ApplicationScoped;

Jika anda ragu-ragu tentang skop yang harus digunakan dalam kes apabila ia tidak dinyatakan untuk kacang sumber sama sekali, baca dokumentasi JSR 365: Konteks dan Suntikan Ketergantungan untuk Java 2.0—Skop lalai.

Sekarang kami sekali lagi cuba melancarkan aplikasi dengan arahan ./mvnw compile quarkus:dev:

$ ./mvnw compile quarkus:dev
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------< org.jboss.eap.quickstarts:helloworld >----------------
[INFO] Building Quickstart: helloworld quarkus
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ helloworld ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ helloworld ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /home/mrizzi/git/forked/jboss-eap-quickstarts/helloworld/target/classes
[INFO]
[INFO] --- quarkus-maven-plugin:0.23.2:dev (default-cli) @ helloworld ---
Listening for transport dt_socket at address: 5005
INFO  [io.qua.dep.QuarkusAugmentor] (main) Beginning quarkus augmentation
INFO  [io.qua.dep.QuarkusAugmentor] (main) Quarkus augmentation completed in 576ms
INFO  [io.quarkus] (main) Quarkus 0.23.2 started in 1.083s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profile dev activated. Live Coding activated.
INFO  [io.quarkus] (main) Installed features: [cdi]

Sekarang semuanya berjalan tanpa kesilapan.

Melancarkan helloworld yang dimodenkan
Seperti yang ditulis dalam log, bukanya dalam penyemak imbas 0.0.0.0:8080 (halaman permulaan Quarkus lalai) dan kami melihat ini:

Quarkus: Pemodenan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart

nasi. 4. Halaman permulaan Quarkus dev.

Anotasi WebServlet untuk aplikasi ini mengandungi definisi konteks berikut:

@WebServlet("/HelloWorld")
public class HelloWorldServlet extends HttpServlet {

Oleh itu, kita pergi dalam pelayar ke 0.0.0.0:8080/HelloWorld dan kami melihat perkara berikut:

Quarkus: Pemodenan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart

nasi. 5: Halaman pembangunan Quarkus untuk aplikasi Hello World.

Nah, semuanya berfungsi.

Sekarang mari buat perubahan pada kod. Ambil perhatian bahawa arahan ./mvnw compile quarkus:dev masih berjalan dan kami tidak berniat untuk menghentikannya. Sekarang mari cuba gunakan perubahan yang sama - sangat remeh - pada kod itu sendiri dan lihat bagaimana Quarkus menjadikan kehidupan lebih mudah untuk pembangun:

writer.println("<h1>" + helloService.createHelloMessage("Marco") + "</h1>");

Simpan fail dan kemudian muat semula halaman web untuk melihat Hello Marco, seperti yang ditunjukkan dalam tangkapan skrin di bawah:

Quarkus: Pemodenan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart

nasi. 6. Halaman Hello Marco dalam Quarkus dev.

Sekarang mari kita semak output dalam terminal:

INFO  [io.qua.dev] (vert.x-worker-thread-3) Changed source files detected, recompiling [/home/mrizzi/git/forked/jboss-eap-quickstarts/helloworld/src/main/java/org/jboss/as/quickstarts/helloworld/HelloWorldServlet.java]
INFO  [io.quarkus] (vert.x-worker-thread-3) Quarkus stopped in 0.003s
INFO  [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Beginning quarkus augmentation
INFO  [io.qua.dep.QuarkusAugmentor] (vert.x-worker-thread-3) Quarkus augmentation completed in 232ms
INFO  [io.quarkus] (vert.x-worker-thread-3) Quarkus 0.23.2 started in 0.257s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (vert.x-worker-thread-3) Profile dev activated. Live Coding activated.
INFO  [io.quarkus] (vert.x-worker-thread-3) Installed features: [cdi]
INFO  [io.qua.dev] (vert.x-worker-thread-3) Hot replace total time: 0.371s

Muat semula halaman mencetuskan pengesanan perubahan dalam kod sumber dan Quarkus secara automatik melakukan prosedur berhenti mula. Dan semua ini telah disiapkan dalam hanya 0.371 saat (inilah, "Jawa subatom ultra-pantas").

Membina helloworld menjadi pakej JAR
Sekarang bahawa kod berfungsi sebagaimana mestinya, mari bungkusnya dengan arahan berikut:

$ ./mvnw clean package

Perintah ini mencipta dua fail JAR dalam folder /target: fail helloworld-.jar, yang merupakan artifak standard yang dipasang oleh pasukan Maven bersama-sama dengan kelas dan sumber projek. Dan fail helloworld-runner.jar, yang merupakan JAR boleh laku.

Sila ambil perhatian bahawa ini bukan uber-jar, kerana semua kebergantungan hanya disalin ke dalam folder /target/lib (tidak dibungkus ke dalam fail JAR). Oleh itu, untuk menjalankan JAR ini dari folder lain atau pada hos lain, anda perlu menyalin kedua-dua fail JAR itu sendiri dan folder /lib di sana, memandangkan elemen Class-Path dalam fail MANIFEST.MF dalam pakej JAR mengandungi penyenaraian JAR yang jelas daripada folder lib
Untuk mengetahui cara membuat aplikasi uber-jar, sila rujuk tutorial Penciptaan Uber-Jar.

Lancarkan helloworld yang dibungkus dalam JAR

Sekarang kita boleh menjalankan JAR kami menggunakan arahan java standard:

$ java -jar ./target/helloworld-<version>-runner.jar
INFO  [io.quarkus] (main) Quarkus 0.23.2 started in 0.673s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profile prod activated.
INFO  [io.quarkus] (main) Installed features: [cdi]

Selepas semua ini selesai, pergi ke penyemak imbas anda di 0.0.0.0:8080 dan pastikan semuanya berfungsi sebagaimana mestinya.

Menyusun helloworld ke dalam fail boleh laku asli

Jadi helloworld kami berjalan sebagai aplikasi Java kendiri menggunakan kebergantungan Quarkus. Tetapi anda boleh pergi lebih jauh dan mengubahnya menjadi fail boleh laku asli.

Memasang GraalVM
Pertama sekali, untuk ini anda perlu memasang alat yang diperlukan:

1. Muat turun GraalVM 19.2.0.1 daripada github.com/oracle/graal/releases/tag/vm-19.2.0.1.

2. Kembangkan arkib yang dimuat turun:

$ tar xvzf graalvm-ce-linux-amd64-19.2.0.1.tar.gz

3. Pergi ke folder untar.

4. Jalankan arahan di bawah untuk memuat turun dan menambah imej asli:

$ ./bin/gu install native-image

5. Daftarkan folder yang dibuat dalam langkah 2 kepada pembolehubah persekitaran GRAALVM_HOME:

$ export GRAALVM_HOME={untar-folder}/graalvm-ce-19.2.0.1)

Untuk mendapatkan maklumat lanjut dan arahan pemasangan pada OS lain, lihat manual Membina Native Executable—Prasyarat.

Membina helloworld menjadi fail boleh laku asli
Membaca manual Membina Native Executable—Menghasilkan native executable: “Sekarang mari kita cipta fail boleh laku asli untuk aplikasi kita bagi mengurangkan masa pelancarannya dan saiz cakera. Fail boleh laku akan mempunyai segala yang diperlukan untuk menjalankan aplikasi, termasuk JVM (atau lebih tepat, versi terpotongnya, mengandungi hanya perkara yang diperlukan untuk menjalankan aplikasi) dan aplikasi kami sendiri."

Untuk mencipta fail boleh laku asli, anda perlu mendayakan profil Maven asli:

$ ./mvnw package -Pnative

Binaan kami mengambil masa satu minit dan 10 saat, dan fail helloworld—runner f terakhir telah dibuat dalam folder /target.

Jalankan helloworld asli boleh laku

Dalam langkah sebelumnya, kami menerima fail boleh laku /target/helloworld—runner. Sekarang mari jalankan:

$ ./target/helloworld-<version>-runner
INFO  [io.quarkus] (main) Quarkus 0.23.2 started in 0.006s. Listening on: http://0.0.0.0:8080
INFO  [io.quarkus] (main) Profile prod activated.
INFO  [io.quarkus] (main) Installed features: [cdi]

Buka semula dalam penyemak imbas 0.0.0.0:8080 dan pastikan semuanya berfungsi sebagaimana mestinya.

Akan bersambung!

Kami percaya bahawa kaedah memodenkan aplikasi Java menggunakan keupayaan Quarkus yang dibincangkan dalam siaran ini (walaupun menggunakan contoh mudah) harus digunakan secara aktif dalam kehidupan sebenar. Dengan berbuat demikian, anda mungkin akan menghadapi beberapa masalah, yang sebahagiannya akan kami atasi dalam siaran seterusnya, di mana kami akan bercakap tentang cara mengukur penggunaan memori untuk menilai peningkatan prestasi, bahagian penting dalam keseluruhan proses pemodenan aplikasi.

Sumber: www.habr.com

Tambah komen