29 Eylül 2011 Perşembe

İşinize Yarayabilecek Hizmet Kitaplıkları

Bu yazıda Java projelerinizde kullanmak isteyebileceğiniz ve çeşitli amaçlarla işinizi oldukça kolaylaştırabilecek Java hizmet kitaplıklarından bahsedeceğiz. İşte onlardan bazıları:
  • Google Guava: Google tarafından geliştirilmiş ve çeşitli amaçlara yönelik paketler sunan bir Java hizmet kitaplığıdır. Guava'daki paketleri aşağıdaki gibi özetleyebiliriz: 
    • temel (.base): Java genelinde hizmet sınıfları sunar. Bu sınıflar arasında karakter katarı (String) işlemleri, istisnai durum yönetimi (exception handling) gibi dil özelliklerini kolaylaştıran sınıflar bulunmaktadır. 
    • koleksiyonlar (.collect): Java koleksiyon sınıflarını (List, Set, Map) genişleten özel koleksiyon yapıları sunmaktadır. Ayrıca koleksiyonlar üzerinde işlem yapılmasını kolaylaştırmak üzere birtakım sınıflar sağlamaktadır (örn: Lists, Sets, Maps, Iterators vb.).
    • girdi-çıktı (.io): Java I/O kitaplığı ile kolay çalışmayı sağlayacak hizmet sınıfları sunmaktadır. Özellikle girdi-çıktı akışları (input-output stream) ve dosyalar arasında veri kopyalama işlemlerini oldukça kolaylaştıran işlevler bulunmaktadır. Örneğin, copy(InputStream from, OutputStream to) metodu ile bir girdi akışından okunan veri doğrudan bir çıktı akışına aktarılabilir.
    • eşzamanlılık (.concurrent): Java'da eşzamanlı programlamayı kolaylaştırmak üzere kapsamlı bir kitaplık sunar.
    • Bahsedilen bu paketler dışında Guava, matematik işlemleri, ilkel tip işlemleri ve yayın-abonelik (publish-subscribe) iletişimi için de paketler sunmaktadır.
  • Apache Commons: Guava gibi Apache Commons'da Java'yı birçok yönden genişleten ve dolayısıyla geliştiren bir hizmet kitaplığıdır. Guava'dan çok daha geniş bir içerik sunan Apache Commons, işlev bazında ayrı ayrı paketlenmiştir. Bu nedenle tüm kitaplığı projenize indirmek yerine ihtiyaç duyduğunuz paketi alıp kullanabilirsiniz. Apache Commons projesi tarafından sağlanan tüm paketlerin listesine buradan ulaşabilirsiniz.
  • Gson: JSON (Java Script Object Notation) metinleri ile Java nesneleri arasında dönüşüm yapmak için kullanılan bir kitaplıktır. Java nesnelerini JSON'a çevirebildiği gibi JSON metinlerinden Java nesneleri oluşturmak için de kullanılabilir. Gson, dönüşümler için Java sınıflarının Java belirtimleri (annotation) ile işaretlenmesine gerek duymaz. JsonObject, JsonArray gibi sınıflar sayesinde Java sınıflarına dönüşüme gerek kalmadan da JSON ile çalışmak mümkün olmaktadır.
  • Guice: Java'da bağımlılık iletimi (dependency injection) deseninin uygulanması için bir çerçeve sağlar. @Inject belirtimi ile sınıflar arasındaki bağımlılığı azaltarak daha kolay değiştirilebilir, test edilebilir ve yeniden kullanılabilir kod yazılmasını sağlar. 
  • Joda-Time: Java tarih-zaman sınıfları yerine kullanılabilecek güçlü bir hizmet kitaplığıdır. Joda-Time, dayOfYear, hourOfDay gibi basit sahalar ile önemli tarihsel bilgileri hızlıca elde etmemizi sağlarken sunduğu hizmet sınıfları ile karmaşık tarih işlemlerini kolayca yapabilmemize olanak verir. Yaygın olarak kullanılan kitaplık şu an için (sürüm 2.0) 8 takvim sistemini desteklemektedir.
  • XStream: Java nesnelerini XML'e serileştirmek ve XML belgelerinden Java nesnelerini okumak için kullanılan güçlü bir kitaplıktır. XStream ile birçok nesne herhangi bir eşleme bilgisine (mapping) gerek duymadan XML'e serileştirilebilir.
  • log4j: İyi bilinen ve Java projelerinde oldukça yaygın kullanılan bir günlükleme (logging) kitaplığıdır.
  • logback: log4j projesinin takipçisi olarak geliştirilen bu proje log4j'nin eksik kaldığı noktaları geliştirmektedir. Başarım ve testler açısından log4j'ye göre üstünlük gösteren logback'in diğer üstünlüklerine buradan ulaşabilirsiniz.
  • SLF4J: SLF4J (Simple Logging Facade for Java), java.util.logging, Log4J, Jakarta Commons Logging ve logback gibi seçkin günlükleme kitaplıkları için bir arayüz ve soyutlama sağlar. Böylece kullanıcılar altta kullanılan günlükleme kitaplığını, dağıtım anında bile, kolayca değiştirebilirler.
  • Mockito ve EasyMock: Bu iki kitaplık birim testler sırasında henüz gerçekleştirilmemiş Java arayüzlerinin davranışlarını taklit edebilmemizi ve böylece testlerin yazılımın erken aşamalarında bile yazılmasını sağlar.   


Hiç yorum yok:

Yorum Gönder