Spring Java dünyasında yazılım geliştirmeyi basitleştirmek için geliştirilmiş bir yazılım çatısıdır (framework). Spring’i diğer çatılardan ayıran en büyük özellik temellerinin dependency injection, yani bağımlılıkların enjekte edilmesi prensibine ve AOP’ye (Aspect Oriented Programming) dayanmasıdır. Kitabın ikinci bölümünde dependency injection ve dokuzuncu bölümünde AOP konusunu detaylı olarak inceleyeceğiz.
İki binli yılların başlarında kullanıma sunulan J2EE (Java Enterprise Edition) ve EJB (Java Enterprise Bean) teknolojileri Java ile kurumsal bazlı uygulamaların geliştirilmesini amaçlamaktaydı. Nitekim çok kısa bir zamanda Java kurumsal projelerde kullanılan popüler bir teknoloji haline geldi. Bunun başlıca sebeplerinden birisi de IBM gibi büyük firmaların Java’ya verdiği destektir.
Java 1996 yılında ilk sürümü ile sadece nesneye yönelik bir programla diliyken, J2EE ve EJB teknolojileri ile birlikte büyük bir açık kaynaklı yazılım camiasını da (open source community) kapsayan bir teknoloji platformu haline geldi. Büyük bir yazılım ekosistemine sahip olan Java platformu günümüzde de kurumsal projelerde kullanılan en popüler teknoloji platformudur.
Aklınıza bu kadar geniş bir kapsama alanına sahip bir teknolojinin yanında nasıl olur da Spring gibi popüler bir çatı var olabilir sorusu gelebilir. Öncelikle şunu belirtelim: JEE (Java Enterprise Edition) Spring, Spring’de JEE değildir. Her ikisi de Java dilini kullanarak uygulama geliştirmek için geliştirilmiş teknoloji platformlarıdır. Spring var olma nedenini J2EE’ye borçlu. Bunu açıklayalım.
İki binli yılların başlarında EJB 1.x ve 2.x teknolojileri ile yazılım geliştirmiş olanlar çok iyi bilirler. Bu teknolojileri kullanarak yazılım yazmak kadar programcı için zahmetli bir uğraşı yoktur. EJB yazılım geliştirme modeli bir uygulama sunucusunun kullanımını gerektirmektedir. Geliştirilen EJB uygulamalarının çalışabilmeleri için JBoss, Weblogic ya da Glassfish gibi uygulama sunucusuna ihtiyaç duyulmaktadır. Bu ilk bakışta kötü bir şey değil. Uygulama sunucuları EJB uygulamaları için ihtiyaç duydukları transaksiyon yönetimi ya da güvenlik gibi her türlü servisi sunmaktadırlar. Programcı için bu servisleri bedel ödemeden almak, onun işletme mantığına konsantre olmasını sağlamaktadır. Ama uygulama sunucusundan bu hizmetleri alabilmek için işletme mantığının da belli bir yapıda kodlanmış ve konfigüre edilmiş olması gerekmektedir. Bu en azından EJB 3 öncesi programcıların başını ağrıtan bir durum idi. Bunun yanı sıra EJB modüllerini uygulama sunucusu dışında test etmek mümkün değildi. Ben o tarihlerde çalıştığım kurumsal projelerde çok iyi hatırlıyorum. Günün hatırı sayılır bir bölümünü uygulamayı test edebilmek için uygulama sunucularını çalıştırıp, durdurmakla geçirirdim. Uygulama sunucusu çalışmıyorsa, işletme mantığını test etmek imkansızdı. Bir EJB 2 uygulamasını uygulama sunucusu içinde tam çalışır hale getirmek en kötü şartlarda on ya da on beş dakika sürebilir. Artık gerisini siz düşünün.
EJB 2 teknolojisi sağladığı imkanlarla kurumsal gereksinimlerin hakkını verebilecek uygulamalar geliştirmeyi mümkün kılsa da, hantallığından dolayı birçok programcının tabiri caizse nefret ettiği bir teknoloji olarak tarihe geçmiştir. Bu Spring çatışının ortaya çıkmasına sebep olmuştur.
Rod Johnson 2002 yılında kaleme aldığı Expert One-on-One: J2EE Design and Development isimli kitabında Interface 21 adını taşıyan altyapı ile nasıl daha hızlı ve kolay kurumsal projelerin geliştirilebileceğini anlatıyor. Interface 21 daha sonra açık kaynaklı yazılıma dönüştürüldü ve bugün tanıdığımız Spring çatısının temellerini oluşturdu.
Rod Johnson’un yazılım yaparken önerdiği temel prensip EJB’ler yerine sade Java nesnelerin (POJO; Plain Old Java Object) kullanımı. Buradan yola çıkarak Spring için şunu söyleyebiliriz: Zaten yapıları itibariyle karmaşık olan kurumsal projeler EJB 2 gibi teknolojiler kullanıldığında daha da karmaşık hale gelmektedir. Spring sunduğu POJO tabanlı programlama modeli ile kurumsal projelerin daha hızlı gerçekleştirilmelerini ve yazılımcıların verimliliğini artırmayı hedeflemektedir. Kısaca Spring Java ile yapılan yazılımı basitleştirmek ve sadeleştirmek için vardır.
EOF (End Of Fun)
Özcan Acar
Pratik Spring isimli kitabımdan alıntıdır.
Yorumlar
“Spring’in Varoluş Nedeni” için 2 yanıt
çok güzel bir yazı olmuş, ellerinizle sağlık
Çok güzel bir açıklama ve makale olmuş, elinize sağlık.