Java Rest Servis Denemesi Yaptım

Java ile ufak tefek şeyleri hep yapardım. Android uygulamaları, küçük oyunlar yapmışlığım da vardı. Ancak Java ile web üzerinde çalışacak bir şey yapmak her zaman kabusum olmuştu. Sunucuların ve uygulamanın konfigürasyonunu yapmanın zor olması ve bir kaç gün üst üste duvara çarpmamla zaten her defasında bu isteğim son buluyordu.

Geçen gün kafama koydum, java ile bir Rest Servis yazacağım. En azından post istekler üzerine veritabanına bağlanıp cevap verebilen bir şeyler ortaya çıkaracağım.

Deneme yapmaya karar vermemdeki en büyük etken, her şeyin standart olduğu bir ortamda çalışmanın daha kolay olmasıydı. Bu sadece “x işi y dilinde nasıl yapılır” “y için x kütüphanesi” aramalarıma son vermek için bile yapabileceğim bir şeydi.

Ancak tahmin ettiğiniz gibi bu mimariye alışık olmayan, bilmeyen biri için hiç kolay olmadı. Eclipse’e web developer tools kategorisinde işime yarayacak her şeyi kurarak başladım. Sunucu olarak gözüme en kolay görünen Tomcat oldu.

Jersey
Jersey

Daha sonra bu iş için bir Jax-RS implementasyonu bulmam gerekliydi. Jersey en uygun gözüken kütüphane idi. Maven gereksinimleri listeme son sürümü ile ilgili girdiyi de ekledim. Tabii bunun bana geri dönüşü iyi olmadı.

İnternette Jersey ile iligli bulanan eğitsellerin tamamı, 1.X sürümü için, 2.X sürümü için pek de fazla kaynak yok. E tabi web.xml dosyasında da doğru konfigürasyonunu uygulama başlatılamıyor. 1 günlük bir uğraş sonunda ekrana merhaba yazdırdım.

Sıra geldi bir nesneyi serialize edip ekrana json yahut xml yazdırmaya. Öncelikli isteği json idi, çünkü bütün havalı çocuklar json kullanıyor.

Meğer bunun için, Jersey’e “bak kardeş senin json kütüphanen bu” diye bir kütüphane göstermek gerekiyormuş. Bunun için de Jackson isimli kütüphaneyi sistemime tanıttım. Artık yazdığım Beanleri okuyup geri döndürebiliyorum, dedim ki bu iş tamam artık. Bir de DB bağlantısı koydum mu testim tamam. Derken aklıma geldi…

Cross Origin Request, POST ile bir istek yapmak istediğiniz sunucunun sizin isteğinizi kabul etmesi için size izin vermesi gerekiyor. Cors için de yine web.xml dosyasını değiştirmek gerekiyor, yine 2.X sürümü için gerekli konfigürasyonu bulmak zor oldu. Ancak stack overflow’daki abiler yardım etti bu kez de.

Çalıştırdım…

Evet, toplamda 2 günlük çeşitli denemeler sonucunda istediğim şeyi başardım. Mobil bir uygulamadan cevap bile aldım.

İzlenimlerim:

  • PHP gibi bir dil değil Java, (PHP dilini de çok güzel buluyorum lakin) çok daha rahat ettim. Tanımladığın nesnenin ne olduğunu anlamak için başka bir dosyaya açıp bakmam gerekmedi. Sonuçta aklımda tutamam sürekli.
  • JSON döndürmek için ekstra bir efor sarfetmedim. Produces anotasyonuna ne dönmek istediğimi verdiğimde sunucu artık o objeyi ona çevirip geri döndü.
  • Eclipse Java’ya tam olarak oturduğu için, kod yazarken bana büyük kolaylıklar sağladı. Birçok gereksiz işi benim yerime halleti
  • Maven’i de ilk defa kullandım. Ve açıkçası, sürümleri kendimin yönetiyor olmam yerine, bir yazılımın değiştirmeden sonraki ilk build anında kendisi hallediyor olması çok hoşuma gitti.
  • İnternette hep “Java ile web servisi yazmak, PHP, Python, RoR a göre çok yavaştır” diyorlardı. Açıkçası böyle bir hız farkı hissetmedim. PHP ile de bunun denemesini yapmıştım, açıkçası çok daha fazla tanımlama yapmam, daha çok şeyi kodlamam gerekiyor diye düşünmütüm. Ancak arada çok çok az fark oldu.
  • Karşımda daha az karışık bir uygulama vardı, package’lar aracılığı ile, uygulamanın karışıklığı epeyce düştü benim algılamam kolaylaştı.
  • Exception Handling bir scriptteki gibi değil, gerçekten hatanın ne olduğu ile ilgili istediğim gibi araştırma yapabiliyorum. İstediğim gibi hatalar dönebiliyorum.

 

Açıkçası yukarıdaki kazançlar bana yetti de arttı 🙂

Kısaca Java ile web teknolojilerinin kullanımını çok beğendim. Gerçekten iyi bir teknoloji olmasa bu kadar pay sahibi olmazdı diye düşünüyorum. Eğer yardımcı olmamı isteyen olursa konfigürasyon dosyalarını sizinle paylaşabilirim.

Siz de bu konuda aklınızdan geçenleri yorumlarınız ile bizimle paylaşabilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *