Gereksiz JAR’ lardan Kurtulun!
Belki ufak projelerde değil ama gitgide çapı büyüyen projelerde, uygulamanız Jar çöplüğüne dönüşebilir. Eminim sizlerde şöyle bir uygulama olsa da, gereksiz Jar’ ları temizlesek diye zamanın birinde düşünmüşsünüzdür.
Projelerimizde bazen ihtiyaçtan, bazen de, daha kolay yazılım geliştirmek amacıyla Jar kütüphaneleri kullanmaktayız. Projelerin Jar çöplüğüne dönmesinin en büyük sebeplerinden birisi hangi kütüphanenin ne işe yaradığını bil(e)memekten kaynaklanabilir. Dolayısıyla bizlerde bağımlılıklardan ötürü, derleme veya çalışma anı istisnaları almamak adına açık tabiriyle, “ne var ne yoksa” Jar kütüphanelerini projeye dahil edebiliyoruz.
İşte bu maksatla sizlere, projelerinizde kullanılmayan Jar’ları testpit edebileceğiniz güzel bir yazılım aracını tanıtmak istiyorum.
LooseJar
LooseJar, Java Instrumentation kütüphanesi aracılığıyla hangi Jar dosyasının ne oranda kullanıldığını tespit eden bir yazılım. Instrumentation, Java kodlarının olağan işleyişine dokunmadan koda dair ölçüm işlemi sunan, çeşitli bilgileri elde etmeyi sağlayan bir standart java kütüphanesi.
Nasıl çalıştırılır
LooseJar yazılımını çalıştırmak için, uygulamanızın JVM parametre kısmında yazılımı bir Java Agent olarak tanımlanamız gerekiyor.
Örneğin;
java -javaagent:<LooseJar Path> <Your ClassName> -cp <Your Jars>
Yukarıda bulunan örnek sözdizimdeki gibi Java Agent’i kullanabilirsiniz. Eğer uygulamanız bir web uygulaması ise, kullanılan uygulama sunucusunun JVM settings kısımından Java Agent tanımlanabilir.
Burada dikkat edilecek husus; Tam olarak hangi kütüphanenin ne kadar kullanıldığının tespitini elde etmekçün, uygulama çalışmasından sonlanışına kadar tüm kütüphanelere bağımlı noktaları test edilmelidir. Bu maksatla Looser’in uygulamanın ekseriyeti ölçebilmesi için Birim testleri, BDD testleri veya kullanılan eğer bir web uygulamasıysa Selenium testleri kullanılabilir. Örneğin sizin elinizde getSQLConnection() adında bir metodu varsa ve Looser agent kullanıldığı anda bu yordama uğranmamışsa, Looser size mysql bağımlılığının hiç kullanılmadığı hakkında bilgi verebilir. Bu sebeple Looser kullanımında bu noktaya dikkat edilmelidir.
Sonuç
Peki Looser bize hangi Jar’ın ne kadar kullanıldığı bilgisini nasıl verecek? Bu bilgiyi elde etmenin iki yolu var. Birincisi, uygulama sonlandıktan hemen sonra, konsol çıktısı olarak bu bilgi veriliyor. İkinci yol ise, çalışma anında JMX bağlantısıyla erişmek ve MBean metodu olarak Looser’in summary() metoduna erişmek. JMX ile erişmek için Jconsole veya VisualVM kullanılabilir.
Örnek çıktı
2 Comments