Saturday, December 16, 2017

Pengenalan Vert.x

Untuk post saya kali ini, saya ingin mengenalkan sebuah toolkit di JVM yang sangat yahud bernama Vert.x.Yeay!

Apa itu Vert.x? Vert.x adalalah sebuah toolkit untuk membuat aplikasi yang reaktif di atas JVM. Kenapa dia dikatakan sebuah toolkit dan bukan sebuah framework?Karena dengan Vert.x bisa membuat sebuah asynchronous networked applications dan bisa menggunakan framework lain di aplikasi tersebut. Vert.x dibuat berdasarkan Netty project.

Vert.x juga bersifat polyglot yang dimana support berbagai macam bahasa yang berdiri di atas JVM. Contoh : Java, Groovy, Scala, Kotlin, JavaScript, Ruby and Ceylon. 

Banyak library dan framework networking bergantung pada threading yang sederhana: setiap klien jaringan diberi thread saat koneksi, dan thread ini berhubungan dengan klien sampai terputus. Ini adalah kasus Servlet atau kode jaringan yang ditulis menggunakan java.io dan java.net. Sementara model threading synchronous I/O ini memiliki keuntungan yang mudah dipahami, tapi tidak memiliki skalabilitasnya yang bagus.Karena dengan jumlah koneksi konkuren yang terlalu banyak, kernel sistem operasi dapat menghabiskan waktu yang cukup lama hanya pada manajemen penjadwalan thread. Sehingga dalam kasus seperti itu, kita perlu beralih ke asynchronous I / O dan Vert.x adalah sendiri menggunakan konsep asynchronous.

Oke, selanjutnya saya akan menuliskan sedikit kode yang sangat sangat dasar, yaitu membuat hello world dengan Vert.x.

Langkah pertama adalah import gradle dari vertx, yang bisa diambil dari :
https://mvnrepository.com/artifact/io.vertx

 // https://mvnrepository.com/artifact/io.vertx/vertx-core  
 compile group: 'io.vertx', name: 'vertx-core', version: '3.5.0'  

Langkah kedua, saatnya untuk mulai menulis kode. Kita buat kelas Java HelloWorldVertx

 public class HelloWorldVertx extends AbstractVerticle {  
   @Override  
   public void start(Future<Void> fut) {  
     Router router = Router.router(vertx);  
     router.get("/hello").handler(routingContext -> {  
       HttpServerResponse response = routingContext.response();  
       response  
           .putHeader("content-type", "text/html")  
           .end("Hello World!\nVert.x is GOOD!");  
     });  
     vertx.createHttpServer()  
         .requestHandler(router::accept)  
         .listen(  
             config().getInteger("http.port", 2227),  
             result -> {  
               if (result.succeeded()) {  
                 fut.complete();  
               } else {  
                 fut.fail(result.cause());  
               }  
             }  
         );  
   }  
 }  

Jika kita lihat, kelas tersebut extends ke AbstractVerticle. Untuk kelas HelloWorldVertx adalah verticle, yaitu unit deployment pada vert.x. Karena itu kita perlu extends ke kelas AbstractVerticle. Ada 2 hal yang harus diperhatikan dari kode di atas, yaitu :
  • Router : untuk menentukan url request yang diminta
  • RequestHandler : untuk memproses request dan mengolah hasilnya
Pada kelas diatas,  kode : router.get("/hello"), menunjukan kita mengatur urlnya ke /hello dan menggunakan method GET.

Langkah ketiga, kita deploy kelas HelloWorldVertx sehingga bisa dijalankan dari postman.Untuk mendeploynya, pada tutorial kali ini kita deploy secara programmatically. Kita akan buat kelas HelloRestVertx :

 public class HelloRestVertx {  
   public static void main(String[] args) {  
     caseVertxBasic();  
   }  
   private static void caseVertxBasic() {  
     Vertx vertx = Vertx.vertx();  
     vertx.deployVerticle(new HelloWorldVertx(), event -> System.out.println("HelloWorldVertx deployment complete"));  
   }  
 }  

Selamat. Hello World sudah jadi! Saatnya untuk menjalakankan kode tersebut dari IDE yang digunakan dan coba jalankan http://127.0.0.1:2227/hello di postman menggunakan GET.Jika kode tersebut berjalan dengan lancar tanpa halangan, maka akan jadi seperti ini :


Yeay! Hello world sudah berhasil ditampilkan, maka kita sudah melangkah 1 step untuk menguasai Vert.x.Tunggu postingan berikutnya untuk membahas lebih jauh tentang vert.x. Sekian dari post saya kali ini, jika ada kesalahan dari post saya mohon untuk koreksinya. :D

Referensi :
http://vertx.io/docs/guide-for-java-devs/

No comments:

Post a Comment