Maven nedir ve neden kullanılır?

  Bu yazıda Maven kurulumu veya kullanımı, JAR formatında çıktı alma veya JAR dosyalarıyla işlemler gibi pratiğe dayalı içerik bulunmuyor.  Yazının amacı Maven teknolojisini hiç bilmeyenlere ve yeni başlayanlara teorik olarak bu teknoloji hangi problemi nasıl çözer, neden ihtiyacımız vardır gibi sorulara cevap vermektir.   Maven kısaca bir bağımlılık yönetim aracıdır. Bu cümleyi ilk okuduğunuzda hiçbir şey anlamamanız gayet normal. Fakat bu yazının en sonuna gelindiğinde bu cümleyi anlamış olacağınızı düşünüyorum. Maven’in ne olduğunu anlamaya başlamadan önce  JAR kavramını öğrenmemiz gerekiyor. JAR yani uzun haliyle Java Archive, Java için kullanabileceğimiz bir arşiv formatıdır. Dosya uzantısı yine adı gibi .jar’dır. Tamam ama arşiv formatı nedir? Kısaca Java projelerinin tek bir dosya şeklinde kullanılabilmesine olanak sağlayan bir formattır. Yazdığımız Java uygulamalarını sadece... Devamını oku..

Heap Dump nasıl yapılır?

Şu yazıda Heap Dump nedir, neden ihtiyacımız var gibi sorulara cevap vermiştim.Bu yazıya başlamadan önce göz atmakta fayda var. İki şekilde Heap Dump alma yöntemini inceleyeceğiz. İlki hali hazırda çalışıyor olan bir Java programının Heap Dump ile çıktısını alma yöntemidir. Bunun için Linux’ta terminali açıyoruz. top yazarak Java uygulamamızın sahip olduğu PID değerini öğreniyoruz. Ardından aşağıdaki komutu terminal aracılığıyla çalıştırıyoruz. Komut şunun gibi bir çıktı verecektir; Çıktımıza belirtilen klasörden ulaşabiliriz. Bir diğer yöntem ise bellek dolduğu an JVM’in bizim için bir Heap Dump çıktısı üretmesidir.Bunu da vereceğimiz JVM argümanları ile gerçekleştirebiliriz.Aşağıdaki kodları Eclipse için anlatmak gerekirse Run -> Run Configurations -> Arguments -> VM Arguments kısmına yazıyoruz. Tabi böyle ezbere argüman yazarak ne yaptığımızı anlamadan iş yapmak pek... Devamını oku..

Heap Dump nedir?

Heap Dump’ı açıklamak için öncelikle Heap nedir onu bilmek lazım. Herhangi bir Java sınıfından new operatörü ile bir nesne oluşturulduğunda, bu nesnenin bilgisayarın hafızasında konuşlandırıldığı alana Java Heap adı verilir. Bu heap alanı ise JVM kontrolündedir. Bildiğimiz gibi Java kodlarının çalıştırılabilmesi isin Java Virtual Machine kısaca JVM’e ihtiyacımız var. JVM bizim için heap alanını oluşturur ve Garbage Collector aracılığı ile kontrolünü sağlar. Peki Heap Dump nedir? Heap Dump, heap bölgesinin bir kopyasını bizim için çıktı olarak alma işlemidir. Bu dosyadan heap’te ne kadar nesne yaşıyor,bellek ne kadar kullanılıyor gibi sorulara gerekirse saniye saniye cevap bulabiliyoruz. Yani kısaca bellekte ne var ne yok öğrenebiliyoruz. Güzel öğrendik ama neden böyle birşeye ihtiyaç duyalım ki? Daha ortada Java yokken nesnelerden bir diğer deyişle bellek tahsis edilen her bir değişkenden... Devamını oku..

Fonksiyonlar

Nesneye yönelimli programlama kullanan herkes hiç şüphesiz fonksiyonları kullanmaktadır. Bu da temiz kod yazmamız gerektiğinde bu yapıya büyük önem verir. Bu kurallara göz atalım. Küçük! İlk kuralımız fonksiyonların uzunluğu küçük olmalıdır.İkinci kural ise ondan daha da küçük olmalıdır. Peki ne demek bu? 500 satırlık fonksiyon yazıp ne yazdım be deme demek  Özellikle Github sayesinde devamlı proje inceleyen birisi olarak en çok karşılaşılan hatanın bu olduğunu görüyorum. Bunu bende yaptım tabi ki. Ancak fonksiyonları uzun tutmak hem Tek Sorumluluk Prensibine aykırı olacaktır hem de ileride o kodun bakımını zorlaştıracaktır. Bu nedenle fonksiyonumuz çok büyükse mümkün oldukça küçük fonksiyonlara ayırmalıyız. Peki, ne kadar küçük olmalı? Cevap: Olabildiğince. Tek , iki veya üç satır. Mümkün oldukça küçük tutmaya çalışacağız. Fonksiyonlara isim verirken tek bir işe yönelik verdiğimizde zaten... Devamını oku..

Anlamlı İsimlendirme

30 Ocak-2 Şubat tarihleri arasında Akademik Bilişim 2016 organizasyonunun düzenlediği Temiz Kod kursuna eğitime katılmıştım. Uzun süredir okumayı planladığım fakat bir türlü gerekli motivasyon ve zamanı ayıramadığım Robert C. Martin’in Clean Code kitabını da bu kurs boyunca okudum. Hem kurs notlarımdan hem de kitaptan faydalanarak bir yazı dizisi yazmaya karar verdim. Kısa bir önsözün ardından kitabında 1. konusu olan Meaningful Names yani Anlamlı İsimlendirme’yi anlatalım. Not: Bölüm isimlerini Türkçe’ye çevireceğim.Fakat örnek kodlarda İngilizce kullanmaya devam edeceğim.Bazı şeylerin İngilizce kalması anlam bütünlüğü açısından daha doğru oluyor.   Değişkenler İsimlendirme yaparken mümkün oldukça değişkenin anlamı verilmeli. Yorum satırında belirteceğimize isimlendirme yaptığımız değişken veya metoda o yorumu isim olarak vermeliyiz. int d; // days of year gibi bir kod yerine int... Devamını oku..

Spring Security – MongoDB – Thymeleaf Örnek Uygulama

Şu sıralar Spring Boot ile uygulama geliştirme üzerinde çalışıyorum. Özellikle XML konfigürasyonlarıyla devamlı vakit geçirdiğim için başlangıçta biraz garip geldi.”Neyi benim için yapıyor? Bağlantıları nasıl sağlıyor? Varsayılan(Default) ayarları nedir?” gibi sorular kafamı oldukça karıştırdı.Fakat takıldığın yerde gerekli arayüzleri implement ederek müdahale etme esnekliği konuyu kavramam konusunda oldukça yardımcı oldu.Spring Boot’un sunduğu hızlı geliştirme imkanı gerçekten çok etkileyici. Bunu belirtmeden geçemeyeceğim. Şuan Spring Security,Thymeleaf,Spring MVC,MongoDB kullanarak bir blog projesi yapıyorum. Her zaman yaptığım üzere çalışan en küçük kod parçasını yedeklemek açısından Github’ta paylaşıyorum. Burada da faydalı olması açısından açıklayacağım.Evet, bu kadar gevezelik yeter kodlara geçelim. Aşağıda pom.xml dosyamızı görüyoruz.Eğer kendi isteğinize... Devamını oku..

Tuprime Fitness Kulübü Yönetim Sistemi

Java teknolojilerini öğrenmek için yaptığım bir projeyi paylaşmak istiyorum.Projenin gelişim sürecini başından itibaren Github hesabımda paylaştım.Dilerseniz Github hesabımdan indirebilir kodları inceleyebilirsiniz. Tuprime Projesi Projeyi Maven kullanarak geliştirdim. Her bir katmanı multi-module desteğiyle ayırdım.Böylece dosyalar içinde karışıklıktansa modullere yoğunlaşma imkanı oldu. JPA implementasyonu olan Hibernate ile veritabanı yönetimini sağladım. Projenin sağlıklı çalışması açısından parent dizininde database klasörü altında sql scripti göreceksiniz. Mysql veritabanınızda çalıştırarak daha önceden oluşturduğum tabloları yükleyebilirsiniz. Ayrıca Mysql username ve password değerleriniz root:root değilse applicationContext.xml dosyasında bunlarıda düzenlemelisiniz. Bu işlemleri bitirdikten sonra artık derleme işlemine geçebilirsiniz. Projeyi derlemek için komut satırı ile dosya dizinine gidip... Devamını oku..