Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Quarkus Dersleri
  • Spring Dersleri
    • Spring Cloud
    • Spring Boot
    • Spring Uygulama Örnekleri
    • Spring Core
    • Spring JDBC Template
    • Spring MVC
  • İleri Java Dersleri
    • Java Server Faces
    • Java Server Pages
    • PrimeFaces
    • Servlet
    • JDBC
    • JSTL
    • Java 8
  • Hibernate Dersleri
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
  • Hakkımda
Quarkus

Quarkus Dersleri : Uygulama Native Derleme

Paylaş

Quarkus Dersleri‘ne devam ediyoruz.

Bu yazımızda Quarkus uygulamızı navite olarak derlemeyi ve çalıştırmayı göreceğiz. Quarkus’un en büyük ve en yararlı yanlarından biri olan native derleme işlemini sıkça kullanacağımı düşünerek not etmek istedim.

Quarkus projemizi native olarak derlemek ve çalıştırabilmek için GraalVM’e ihtiyacımız bulunmaktadır. Öncelikle Quarkus Native uygulama derlemek için GraalVM’i bilgisayarımıza kuralım.

GraalVM, Java’da uygulanan HotSpot / OpenJDK tabanlı bir Java VM ve JDK’dır. Hızlı başlatma ve düşük bellek alanı için Java uygulamalarının önceden derlenmesi gibi ek programlama dillerini ve yürütme modlarını destekler. wikipedia.com

GraalVM Kurulumu


Bu kurulumu Linux işletim sistemi için anlatacağım.

Öncelikle https://github.com/graalvm/graalvm-ce-builds/releases adresinden indiriyoruz. İndirdiğimiz dosyayı kuruyoruz.

tar -xzf dosyaadi.tar.gz

Sonrasında ise alias olarak tanımlamalarımız yapıyoruz.

export PATH=<graalvm>/bin:$PATH
export JAVA_HOME=<graalvm>

export GRAALVM_HOME=$HOME/graalvm/

##native image yüklüyoruz
${GRAALVM_HOME}/bin/gu install native-image

Quarkus Uygulaması


Basit bir Quarkus uyglaması yapacağız. Bu Quarkus uygulamamızı native olarak çalıştıracağız.

Uygulamamız basit bir javax.rs uygulaması olacak.

@Path("/hello")
public class ExampleResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String merhaba() {
        return "Burak KUTBAY";
    }
}

Uygulamamızın native olarak derleneceğini maven’a bildirmemiz gerekiyor. Bunun için Quarkus paket tipi özelliğini native olarak belirteceğiz.

<profiles>
    <profile>
        <id>native</id>
        <properties>
            <quarkus.package.type>native</quarkus.package.type>
        </properties>
    </profile>
</profiles>

Eğer uygulamamızda bu satır varsa Quarkus projeniz navite olarak derlenmeye hazır demektir.

Quarkus uygulamamızı native olarak derlemek için kodumuzu girelim.

./mvnw package -Pnative 

Quarkus uygulamamızın çıktısı aşağıdaki gibi olacaktır.

[INFO] Scanning for projects...
[INFO] -----------< com.burakkutbay:quarkus-native-uygulama-ornegi >-----------
[INFO] Building quarkus-native-uygulama-ornegi 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- quarkus-maven-plugin:1.10.5.Final:generate-code (default) @ quarkus-native-uygulama-ornegi ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ quarkus-native-uygulama-ornegi ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ quarkus-native-uygulama-ornegi ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- quarkus-maven-plugin:1.10.5.Final:dev (default-cli) @ quarkus-native-uygulama-ornegi ---
Listening for transport dt_socket at address: 5005
__  ____  __  _____   ___  __ ____  ______ 
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ 
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2020-12-28 23:20:20,445 INFO  [io.quarkus] (Quarkus Main Thread) quarkus-native-uygulama-ornegi 1.0-SNAPSHOT on JVM (powered by Quarkus 1.10.5.Final) started in 0.917s. Listening on: http://localhost:8080
2020-12-28 23:20:20,447 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2020-12-28 23:20:20,447 INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, resteasy]
^C2020-12-28 23:20:31,108 INFO  [io.quarkus] (Shutdown thread) quarkus-native-uygulama-ornegi stopped in 0.003s

 ~/quarkus-native-uygulama-ornegi  ./mvnw package -Pnative.
INT ✘  16s  23:20:31 
Warning: JAVA_HOME environment variable is not set.
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------< com.burakkutbay:quarkus-native-uygulama-ornegi >-----------
[INFO] Building quarkus-native-uygulama-ornegi 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- quarkus-maven-plugin:1.10.5.Final:generate-code (default) @ quarkus-native-uygulama-ornegi ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ quarkus-native-uygulama-ornegi ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ quarkus-native-uygulama-ornegi ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- quarkus-maven-plugin:1.10.5.Final:generate-code-tests (default) @ quarkus-native-uygulama-ornegi ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ quarkus-native-uygulama-ornegi ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory quarkus-native-uygulama-ornegi/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ quarkus-native-uygulama-ornegi ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ quarkus-native-uygulama-ornegi ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.burakkutbay.ExampleResourceTest
2020-12-28 23:21:50,105 INFO  [io.quarkus] (main) Quarkus 1.10.5.Final on JVM started in 1.448s. Listening on: http://localhost:8081
2020-12-28 23:21:50,119 INFO  [io.quarkus] (main) Profile test activated. 
2020-12-28 23:21:50,119 INFO  [io.quarkus] (main) Installed features: [cdi, resteasy]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.119 s - in com.burakkutbay.ExampleResourceTest
2020-12-28 23:21:51,553 INFO  [io.quarkus] (main) Quarkus stopped in 0.046s
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ quarkus-native-uygulama-ornegi
[INFO] --- quarkus-maven-plugin:1.10.5.Final:build (default) @ quarkus-native-uygulama-ornegi ---
[INFO] [org.jboss.threads] JBoss Threads version 3.1.1.Final
[INFO] [io.quarkus.deployment.pkg.steps.JarResultBuildStep] Building thin jar: /quarkus-native-uygulama-ornegi/target/quarkus-native-uygulama-ornegi-1.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.QuarkusAugmentor] Quarkus augmentation completed in 881ms
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

Böylelikle Quarkus uygulamamız native olarak build edildi. Build edilen Quarkus native uygulamamız

/quarkus-native-uygulama-ornegi/target/quarkus-native-uygulama-ornegi-1.0-SNAPSHOT-runner

yolunda bulabiliriz ve Quarkus Uygulama Örneğimizi Native Derlenmiş olan programımızı çalıştırabiliriz.


Önceki Ders: Quarkus Rest Api Uygulaması Yapmak
Quarkus Dersleri
Sonraki Ders: Quarkus Panache

Tags:

Quarkus DersQuarkus DersleriQuarkus native uygulamaquarkus örnekquarkus uygulama örneği

Paylaş

Diğer Yazılar

Quarkus Dersleri Uygulama Örnekleri
Previous

Quarkus Rest Api Uygulaması Yapmak

Quarkus Dersleri Uygulama Örnekleri
Next

Quarkus Hibernate Panache Nedir? Uygulama Örneği

Next
Quarkus Dersleri Uygulama Örnekleri
04 Ocak 2021

Quarkus Hibernate Panache Nedir? Uygulama Örneği

Previews
24 Aralık 2020

Quarkus Rest Api Uygulaması Yapmak

Quarkus Dersleri Uygulama Örnekleri

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Quarkus Dersleri Uygulama Örnekleri

Quarkus Nesnelerin Yaşam Döngüsü

Quarkus Dersleri Uygulama Örnekleri

Quarkus Custom Property Kullanmak

Quarkus Dersleri Uygulama Örnekleri

Quarkus Projelerinde Fault Tolerance Kullanmak

Quarkus Dersleri Uygulama Örnekleri

Quarkus Uygulaması Başlatma ve Kapanma Döngüsünü Yakalamak

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Röportaj
Struts
Android
Vue.js
Node.js
Redis
XCode
Spring Data
Debezium
Mikroservis Mimarisi
Spring Native
Video
Spring Security
Objective C
iPhone Uygulama Geliştirme
JPA
DevOps
PostgreSQL
Apache Kafka
Git
Design Patterns
Yaptığım Projeler
Servlet
Maven
Spring Cloud
Linux
Spring
JDBC
PrimeFaces
Spring Jdbc Template
RabbitMQ
Google
Manset
Spring MVC
OCA Java SE 8
Quarkus
Spring Core
Microsoft
Veritabanı
Tanıyalım
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github