Which one should we use? And why?

Modularization is the process of decoupling a software system into multiple modules. In addition to reducing complexity, it increases the understandability, maintainability and reusability of the system. In this article, some of the modularization methods will be mentioned.

Package by Layer

In this project structure, classes are placed in the architectural layer package they belong to. This method causes low cohesion within packages because packages contain classes that are not closely related to each other. Below is an example of packaging by layers:

├── com.app
└── controller…

In object-oriented programming, each code block is related to classes and objects. A method cannot exist independently. For example, when we want to print Hello world!, we have to create a class and define a method in this class that performs printing. On the contrary, functional programming allows us to create and use independent methods. Lambda expressions are the way to implement functional programming in the object-oriented world of Java. It has been added with the Java 8 release.

Advantages of Lambda Expressions

  • Enables functional programming.
  • Makes the code more readable.
  • Allows getting rid of boilerplate codes.
  • Facilitates the use of APIs and libraries.

Elasticsearch büyük veri yığınları içerisinde tam metin (full-text) aramada ve bu büyük veri yığınlarının analiz edilmesinde kullanılan Apache Lucene tabanlı, Java ile yazılmış açık kaynak kodlu bir arama ve analitik motorudur.

Indexler üzerinden arama yaparak çok hızlı bir şekilde sonuç üretebilmektedir. Dolayısıyla big data kavramının geçtiği yerlerde adından sıkça söz ettirmektedir.

Yazılım tasarımındaki en büyük zorluklardan biri, nesne yönelimli dünya ile veri tabanlarının ilişkisel dünyası arasındaki paradigma farkıdır.

Nesneleri tablolara, tabloları ise nesnelere dönüştürmek object-relational mapping (ORM) olarak adlandırılan olaydır. Kendi ORM çözümünüzü oluşturmak kolay bir iş değildir, büyük çaba gerektirir ve hataya elverişlidir. Bu nedenle kendi ORM çözümünüzü oluşturmak, özellikle güvenilir ve iyi yapılandırılmış alternatifler olduğu düşünüldüğünde önerilen bir yaklaşım değildir. Bu alternatiflerden biri de Java dünyasında önemli bir yere sahip olan Hibernate’dir.

Hibernate, persistence katmanının çoğunu soyutlamasına ve veri tabanında okuma/yazma işlemleri yaparken düşük gecikme süresine sahip olmasına rağmen bazı sorunlara sebep olabilmektedir.

Persistence katmanı: Ekleme, güncelleme, silme ve…

Girdi olarak sırasıyla:

  • Dizinin uzunluğu (n) ve bir tam sayı (k),
  • Birbirinden farklı n tane tam sayı veriliyor.

Çıktı olarak ise aşağıdaki şartı sağlayan en uzun alt kümenin uzunluğu isteniyor.

  • Alt kümedeki herhangi iki sayının toplamı girdi olarak verilen k sayısına tam olarak bölünmemeli.

Örneğin: Sırasıyla 4, 3 ve {4, 3, 9, 1} girilmiş olsun. Burada yukarıdaki şartı sağlayan en uzun alt küme {4, 3, 1} veya {4, 9, 1} olacağından ve bu kümelerin uzunluğu 3 olduğundan sonuç 3 olacaktır. Çünkü 3 ve 9 sayıları aynı alt kümede bulunursa verilen k sayısına tam bölüneceğinden şart sağlanmaz.

Aşağıdaki çözüm bölümüne geçmeden…

Inversion Of Control (IoC)

Nesneye yönelik programlama teknikleri kullanıldığında nesneler arasındaki bağımlılıklar proje büyüdükçe daha da karmaşık bir hal almakta ve bu bağımlılıklar uygulamanın kod kalitesinin düşmesine sebebiyet vermektedir. Bu yüzden nesneler arasındaki bağımlılıkların kontrol altına alınması gerekmektedir. Bir çözüm yolu bağımlılıkların uygulama tarafından kontrol edilmesi yerine bu kontrolün, kullanılan uygulama çatısına devredilmesi olabilir. İşte tam olarak buna Inversion of Control denir. Adından da anlaşılacağı üzere kontrol tersine çevrilerek uygulamadan, kullanılan uygulama çatısına devredilir.

Java programlama dilinde nesneleri oluşturmak ve nesneler arası ilişkiyi kurmak yazılım geliştiricinin görevi iken nesneyi sonlandırmak çöp toplayıcı (garbage collector)’ün görevidir.

Spring Framework, Java için geliştirilmiş açık kaynaklı bir uygulama geliştirme çatısıdır. Java Enterprise Edition uygulamalarının geliştirilmesini kolaylaştırır. Java dili ile kurumsal bir projeyi gerçekleştirmek için ihtiyacınız olan her şeyi sağlar.

2002 yılında yayımlanan Expert One-on-One J2EE Design and Development adlı kitabında Rod Johnson, Interface 21 adını taşıyan altyapı ile kurumsal projelerin nasıl daha hızlı gerçekleştirilebileceğini anlatmış ve bu altyapı daha sonrasında açık kaynaklı yazılıma dönüştürülerek Spring Framework’ün temellerini atmıştır.

Peki neden ihtiyaç duyuldu?

Spring Framework yayımlanmadan hemen önce kurumsal projeleri geliştirmek için Enterprise JavaBeans (EJB) 2.x teknolojileri tercih edilmekteydi. EJB 2.x teknolojileri her ne kadar kurumsal projelerin hakkından gelebilecek bir…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store