Merhaba arkadaşlar. Yazılarımıza kaldığımız yerden devam ediyoruz :). Bu yazımda da Java’daki Checked Exception ve Unchecked Exception kavramlarından bahsedeceğim.

Konuya girmeden önce Java’daki exception hiyeraşisini bir hatırlayalım.

Hiyeraşiye şöyle bir göz attıktan sonra artık konumuza geçebiliriz.

Unchecked Exception

İsminden de anlaşılacağı gibi derleyici tarafından kontrol edilemeyen exceptionlardır. Derleyici tarafından kontrol edilemedikleri için kodumuz başarıyla derlenmiş olsa bile çalışma zamanında bu hatalarla karşılaşabiliriz.

Unchecked Exceptionlar RuntimeException‘ın alt sınıflarıdır. Bunlardan en yaygınları ArithmeticException , NullPointerException , ClassCastException… gibi exceptionlardır.

Aşağıdaki kod bloğuna bakalım;

public static void main(final String[] args) { try{ FileReader file = new FileReader("example.txt"); file = null; file.read(); } catch (final IOException e) { e.printStackTrace(); } }

Yukarıda görüldüğü üzere file nesnemiz null ve program akışı file.read()  komutuna geleceği zaman NullPointerException fırlatacağını rahatlıkla söyleyebiliriz. Fakat NullPointerException bir Unchecked Exception olduğundan dolayı bizim bu durumu belirtmemize gerek yok ve derleyici kodumuzu başarıyla derlememize izin verir dolayısıyla biz bu hata ile ancak çalışma zamanında karşılaşırız.

Checked Exception

İsminden de anlaşılacağı üzere derleyici tarafından kontrol edilen exceptionlardır. Derleyici tarafından kontrol edildikleri için biz bu exceptionları kodumuzda belirtmek zorundayız. Aksi halde derleme işlemini başarıyla tamamlamak mümkün değildir.

Checked Exceptionlar Exception sınıfının alt sınıflarıdır ( RuntimeException hariç). En yaygınları ClassNotFoundException, IOException, SQLException… gibi exceptionlardır.

Şimdi aşağıdaki kod bloklarına göz atalım;

public static void main(final String[] args) { final FileReader file = new FileReader("example.txt"); }

Yukarıdaki gibi yazdığımız zaman derleyici tarafından hata alırız ve kodumuz başarıyla derlenmez çünkü belirtmemiz gereken ilgili Checked Exception’ını belirtmedik.

public static void main(final String[] args) { try{ final FileReader file = new FileReader("example.txt"); } catch (final FileNotFoundException e) { e.printStackTrace(); } }

Yukarıdaki gibi yazdığımız zaman kodumuz artık başarıyla derlenecektir çünkü bir Checked Exception olan FileNotFoundException‘ını kodumuzda belirtmiş olduk.

 

Unchecked Exception ve Checked Exceptionlarıyla ilgili anlatacaklarım bu kadar umarım kafanızda herhangi bir soru işareti kalmamıştır. Lütfen yorumlarınızı esirgemeyiniz, bir dahaki yazımda görüşmek üzere :)

 

 

 

Merhaba arkadaşlar, bu makalemde bir Agile yazılım geliştirme tekniği olan Pair Programming tekniğinden bahsetmek istiyorum. Pair Programming Türkçe’de eşli programlama veya ikili programlama olarak geçmektedir fakat makale boyunca Pair Programming olarak bahsedeceğim.

Pair Programming aslında isminden de çıkarım yapılacağı gibi temel olarak iki kişinin tek bir kod bloğu üzerinde çalıştığı bir tekniktir. Yazılım geliştiricilerden biri izleyici diğeri sürücü konumundadır. Sürücü özenle kod yazmaktan sorumlu iken izleyici sürekli gözlemlemek ve yönlendirmekten sorumludur.

Pair Programming

Pair Programming in en büyük avantajı gözlemci ile beraber daha hatasız ve doğru bir şekilde kod yazılmasıdır. Diğer önemli bir avantajı ise bu tekniği uygulayan ekiplerin, birbirlerinin gelişimine önemli bir şekilde katkı sunmasıdır. Bu tekniğin çok bir dezavantajı olmasada kaynakların verimsiz kullanıldığı algısı oluşabilir.

Türkiye’de şu an çok tercih edilmese de oldukça verimli bir geliştirme süreci sağlamaktadır.

Lütfen yorumlarınızı esirgemeyiniz :) bir dahaki yazımda görüşmek üzere..

 

Merhaba arkadaşlar, bu yazımda oldukça sık duyduğumuz Docker teknolojisinden bahsetmek istiyorum.

Docker; konteynerlar kullanılarak uygulama oluşturmayı, dağıtmayı veya çalıştırmayı sağlayan bir araçtır. Konteynerlar uygulamamızın ihtiyaç duyduğu kütüphaneler ve diğer bağımlılıklar gibi tüm parçaların tek bir pakette birleştirilip, gönderilmesini sağlar. Böylece geliştirici; kodun yazıldığı ve test edildiği makineden bağımsız olarak uygulamanın Docker sayesinde tüm ortamlarda çalışacağından emin olur.

Aslında Docker’ı bir sanal makineye benzetebiliriz. Ancak sanal bir makineden farklı olarak tamamen sanal bir işletim sistemi oluşturmak yerine Docker uygulamaların üzerinde çalıştıkları sistemle aynı Linux çekirdeği kullanmalarına izin verir. Böylece önemli bir performans artışı görülür ve uygulamanın boyutu önemli bir ölçüde azalır.

Docker; hem geliştiricilere hem de sistem yöneticilerine fayda sağlamak üzere birçok DevOps araç zincirinin bir parçası haline gelmiş bir araçtır. Geliştiriciler için, sonunda çalışacağı sistemden endişe etmeden kod yazmaya odaklanabilecekleri anlamına gelir.

Docker hakkında yardımcı olabilecek kaynaklar :

Docker - Get Started
tutorialspoint - Docker

Bir dahaki yazımda görüşmek üzere.

 

 

Merhaba arkadaşlar, yazılarımıza kaldığımız yerden devam ediyoruz :). Bu yazımda Spring ile Spring Boot arasındaki temel farklılıklara değineceğim.

Geçtiğimiz birkaç yılda eklenen özellikler nedeniyle Spring kütüphanesi giderek daha karmaşık bir hal almaya başladı. Sıfırdan yeni bir Spring projesine başlamak için bir sürü prosedürden geçilmesi gibi durumlar olabiliyor. Sıfırdan başlamayı önlemek ve zamandan tasarruf etmek için Spring Boot diye bir teknoloji dünyamıza girdi. Spring Boot yine Spring kütüphanesini kullanan bir teknolojidir.

Spring Kütüphanesi

Spring; bir web uygulaması geliştirmek için en yaygın olarak kullanılan Java EE (Java Enterprise Edition) kütüphanelerinden biridir. Java platformu için ayrıntılı bir programlama ve yapılandırma modeli sunar. Java EE kapsamında uygulama geliştirmeyi basitleştirmeyi amaçlar ve biz geliştiricilerin daha üretken olmasına yardımcı olur.

Diğer kütüphanelerin aksine Spring uygulamanın birkaç alanına odaklanır ve kapsamda birçok özellik sunar.

Bilindiği üzere Spring kütüphanesinin en önemli özelliği Dependency Injection dır.  Dependency Injection hakkındaki yazım için tıklayınız.

Spring Boot

Spring kütüphanesi bize esneklik uygulamaya odaklanırken, Spring Boot kod uzunluğunu kısaltmayı ve bir web uygulaması geliştirmenin en kolay yolunu bize sunmayı amaçlamaktadır. Spring Boot, uygulama geliştirme için gerekli olan süreyi bir hayli kısaltır. Neredeyse hiçbir konfigürasyon yapmadan tek başına bir uygulama oluşturulmasına yardımcı olur.

Oto konfigürasyon Spring Boot için özel bir özelliktir.

Spring kütüphanesinin yararları

  • Spring kütüphanesi bir web uygulamasının tüm katmanlarına uygulanabilir.
  • Gevşek bağlılık (Loose Coupling) ve kolay test edilebilirlik sağlar.
  • XML ve  Annotation konfigürasyonlarını destekler.
  • Singleton ve Factory sınıflarının ortadan kaldırılması için gerekli yeteneğe sahiptir.
  • Bildirimsel (Declarative) programlamayı destekler.

Spring Boot’un yararları

  • Bağımsız (stand-alone) uygulamalar oluşturur.
  • Gömülü olarak Tomcat, Jetty veya Undertow birlikte gelir.
  • XML konfigürasyonuna ihtiyaç duymaz.
  • LOC (Lines of Code) ‘u azaltmayı hedefler.
  • Başlatması kolaydır.
  • Özelleştirme ve yönetim basittir.

Bu nedenle Spring Boot bir kütüphane olmayıp, Spring tabanlı hazır bir proje başlatıcıdır. Otomatik yapılandırma gibi özelliklerle sizi uzun kod yazmaktan kurtarır ve gereksiz yapılandırmalardan kurtulmanızı sağlar.

Lütfen yorumlarınızı esirgemeyiniz. Bir dahaki yazımda görüşmek üzere, hoşçakalın :)

Merhaba arkadaşlar, bu yazımda Hibernate ve Spring Data JPA arasındaki temel farklılıklara değineceğim.

Konuya geçmeden önce  Hibernate, JPA ve Spring Data JPA kavramlarından bahsetmenin faydalı olacağını düşünüyorum.

JPA (Java Persistence API) nedir?

Java Persistence API herhangi bir java nesnesinin veri tabanındaki ilişkisel bir tabloya eklenebilmesini, o tablodan okunabilmesi gibi çeşitli özellikler sağlar.

Hibernate nedir?

Hibernate, Java ortamları için bir ORM (Object Relational Mapping) çözümüdür. ORM; model sınıflarımızın ilişkisel veri tabanındaki tablolarımızla eşleşebilmesini sağlayan bir programlama tekniğidir. Bir nevi uygulama ile ilişkisel bir veri tabanı arasında bir köprü olarak düşünülebilir. Hibernate, Java tabanlı bir ORM teknolojisidir.

Object Relational Mapping

Buraya kadar yazılanlardan yola çıkarak JPA (Java Persistence Api) ‘ın bir standart, Hibernate’in ise bir JPA uygulaması olduğunu aklımızdan çıkarmayalım.

Spring Data JPA nedir?

Spring Data; Spring kütüphanesinin bir parçasıdır.

Spring Data sanıldığı aksine Hibernate gibi bir JPA uygulaması değildir. Sadece JPA uygulamamızın en üst katmanına ekstra soyut bir katman ekleyen bir kütüphanedir.

Spring Data JPA GenericDao özel uygulamalarına bir çözüm sunar. Metot adı kuralları aracılığıyla sizin adınıza JPA sorguları oluşturabilir.

 

Buraya kadar olan kısmı toparlamak gerekirse Hibernate ile Spring Data JPA arasındaki temel farklılıklar şunlardır;

Hibernate bir JPA uygulaması iken Spring Data JPA bir veri erişimi soyutlamasıdır.

Spring Data ile Hibernate, Eclipse Link gibi herhangi bir JPA uygulamasını beraber kullanabilirsiniz. Dolayısıyla Hibernate ile Spring Data JPA bir rakip değillerdir ve aynı kapsamda değerlendirilemezler aksine birbirlerini tamamlayıcı özellikler taşırlar.

Lütfen yorumlarınızı esirgemeyiniz, bir dahaki yazımda görüşmek üzere, hoşçakalın :)