Spring 4’le Gelen Yenilikler

Sep 19 2014 Published by under java

İlk sürümü 2004 yılında çıkan Spring Framework’ün şu ana kadar çok kez büyük sürümü çıktı. Spring 2.0 ile XML ve AspectJ desteği, Spring 2.5 ile notasyon (annotation) konfigürasyonu ve Spring 3.0 ile de Java tabanlı konfigürasyon modeli geldi.

Spring’in en son büyük (major) sürümü olan Spring 4.0 ile gelen en büyük yenilik ise Java 8 desteği. Spring 4.0 ile gelen tüm yenilikler :

1. Spring’e Başlangıç deneyiminin iyileştirilmesi

Spring’in yeni web sitesine (http://spring.io/)  Spring’e başlangıç ve Spring’i öğrenme dokümanlarının tamamı eklendi:  http://docs.spring.io/spring/docs/current/spring-framework-reference/html/overview.html

 2. Son kullanma tarihi geçmiş (deprecated) paketlerin ve metodların silinmesi

Versiyon 4 ile birlikte son kullanma tarihi geçmiş (deprecated) birçok metot ve sınıf kaldırıldı. Eğer projelerinizdeki Spring versiyonunuzu Spring 4’e yükseltmek istiyorsanız Java’nın son kullanma tarihi geçmiş metod, sınıf ve arayüzlerini kaldırdığınızdan emin olmanız gerekiyor. Kaldırılan tüm işlevleri görmek için şu doküman kullanılabilir: http://docs.spring.io/spring-framework/docs/3.2.4.RELEASE_to_4.0.0.RELEASE/

3. Java 8 (Java 6 ve Java 7 ile birlikte)

Spring 4 ile birlikte gelen en önemli yenilik Java 8’in bazı özelliklerini desteklemesi. Spring’in callback arayüzleri ile Lambda ifadelerinin kullanımı sağlandı. Halihazırdaki bazı notasyonların (ör: @Repeatable) java.time (JSR-310) paketini desteklemesi sağlandı. Geriye uyumlu olan versiyon 4 Java 6 ve Java 7 ile de kullanılabilir.

4. Java EE 6 ve 7

Spring 4 JPA 2.0 ve Servlet 3.0 versiyonları ile birlikte Java EE 6 ve üstü için temel versiyon haline geldi. Aynı zamanda JMS 2.0, JTA 1.2, JPA 2.1, Bean Validation 1.1 ve JSR-236 Concurrency kütüphaneleri gibi temel Java EE 7 standartlarını destekler duruma geldi.

5. Groovy Bean Tanımlamaları (Groovy DSL)

Spring Framework 4.0 ile birlikte Groovy DSL kullanarak bean konfigürasyonu yapılabilir hale geldi. Yazım olarak XML konfigürasyonuna benzese de konfigürasyon yazımı XML’e göre kısaldı. Örnek:

6. Container iyileştirmeleri

Bean’leri enjekte ederken “generic” tiplerin de kullanılabilmesi sağlandı.

7. Genel Web İyileştirmeleri

Spring MVC uygulamalarında @RestController notasyonunun kullanılması sağlandı.

8. WebSocket Mesajlaşma

Spring’in yeni spring-websocket modülü ile client-server web uygulamalarında çift yönlü iletişim sağlandı.

9. Test İyileştirmeleri

Yeni SocketUtils sınıfı sayesinde TCP/UDP soketleriyle entegrasyon testleri yapılabilir hale geldi.

Comments are off for this post

Gömülü yazılımdan bulut bilişime : Java 8

May 13 2014 Published by under java, software development

Java SE 8 ve Java ME 8‘i içerisinde barındıran Java 8 Java’nın şu ana kadar çıkardığı sürümler içerisinde en belirleyici sürümlerden bir tanesi olarak kendini gösteriyor. Lambda ifadeleri ve yeni Stream API’si hem platformun ifade gücünü arttırıyor hem de yazılımcıların modern, çift çekirdekli işlemcilerin avantajlarını kullanabilmelerine imkan sağlıyor. Java ME (Micro Edition) 8  en güncel JVM’i (Java Virtual Machine), programlama dilini ve kütüphaneleri içerisinde barındıracak şekilde güncellendi ve  küçük gömülü  (embedded) cihazlara odaklanıldı. Java 8 ile birlikte yazılımcılar aynı platformu kullanarak en küçük cihazlardan (Internet of Things) en büyük bulut (cloud) kurumsal servislere kadar geniş bir alana ulaşabilecekler.

Java 8 ile birlikte 8 temel özellik geliyor:

1. Lambda İfadeleri (closures) : Lambda ifadeleri davranışları veri şeklinde göstermeye yarayan basit ifadelerdir. Listeleri (collections) işlemek çok daha kolay ve etkili hale gelecektir. Örneğin 8 şarkıdan daha az şarkı barındıran albümlere sahip olan sanatçıları sorgulamak istiyoruz. Lambda ifadelerinden önce bunu standart for döngüsüyle geliştirebiliyorken Java 8’den itibaren tek bir satırda geliştirebileceğiz :

2. Nashorn ve Javascript : Nashorn Java 8 ile birlikte gelen ve JVM’in bir parçası olarak çalışan modern bir Javascript kütüphanesidir. JDK’nın içerisinde javax.script paketi içerisinde bulunur. Bu sayede geliştiriciler Java kodlarının içerisine Javascript bileşenleri ekleyebileceklerdir. Aynı zamanda içerisinde Nashorn’u script dili olarak komut satırından çalıştırabilmek için jjs komutu da bulunmaktadır.

3. Compact Profiller : Bu profiller Java Standard Edition ile Java Mobile Edition’ı birbirine yakınlaştıran 3 adet temel Java API gruplarıdır. Yıllardır gömülü yazılım geliştiriciler küçük cihazlara küçük Java binary’ler yükleyebilmek istiyorlardı. Compact profiller sayesinde tüm platformu yüklemeden sadece ilgili binary’yi küçük cihazlara yükleyebilme olanağı sağlandı. Bu sayede kısıtlı kaynağı olan cihazlara da küçük JVM’ler yüklenebilecek.

4. Date ve Time Kütüphaneleri : Yeni java.time kütüphaneleri sayesinde geliştirilmesi ve okunması daha kolay uluslararası zaman standartları kullanılabilir. Bu paketteki her bir Java sınıfı ilgili işe özgü sınıflardır ve aynı zamanda aynı anda erişim (concurrency) problemlerini çözmek için değeri değiştirilemeyen (immutable) sınıflar olacaklar.

5. Java FX 8 : Java FX’in 8. sürümü Lambda ifadelerini destekleyen bileşenleri içerisinde barındırıyor. Bu sayede kullanıcı davranışlarını yakalama (event handling) gibi kodlar çok daha kısa hale geliyor. Aynı zamanda dışarıdan (3rd party) bileşen kullanımı kolaylaşıyor. Performans tarafında da birçok geliştirme yapılmış bu sayede Raspberry Pi gibi cihazlarda gömülü JavaFX kullanılabilir.

6. Topluluğun İyileştirilmesi : Java 8 ile birlikte Java geliştiren topluluğun yapısında ve süreçlerde iyileştirme yapıldı. JUG (Java User Groups) toplulukları Java topluluğunun öğrenim ve katılım konularında birleştirici yerel merkezler oldu. Dünyanın her yerindeki bu Java grupları Java’nın geliştirilmesinde ve öneriler toplamada yeni bir anlayış getirdi. “Adopt a JSR” programı sayesinde yeni katılımcılar ve organizasyonlar Java’nın gelişmesinde katkıda bulundular. 26’dan fazla JUG JAva 8’in gelişiminde pay sahibi oldu.

7. Java ME 8 (Java Micro Edition) : Java ME 8 ile birlikte Java SE ve Java ME birbirine yaklaşmış oldu. Bu sayede aynı yetkinliğe sahip yazılımcılar hem büyük ölçekli kurumsal uygulamalarda hem de küçük gömülü sistemlerde uygulama geliştirebilecekler.

8. Java SE 8 (Java Standart Edition)  ve JVM : Java SE 8 ile birlikte çöp toplayıcı (garbage collection) altyapısı iyileştirildi. Yeni geliştirmelerle birlikte kullanıcılar bir GC (garbage collection) türünden diğerine kolaylıkla atlayabilecek. Aynı zamanda Java SE 8 ile birlikte yazılımcıların PermGEN alanını iyileştirmelerine (tuning) ihtiyaç kalmadı. PermGEN bölümündeki sınıfların meta verileri kuyruğa (heap) taşındı. Bu sayede yazılımcıların bu alanın boyutunun ne olması gerektiği konusunda fikir sahibi olmalarına ihtiyaç kalmadı. Son olarak Java ME 8 güncellenerek Java SE 8’deki kütüphanelerin bir kısmını kullanabilmesi sağlandı.

Sonuç olarak Java 8 yazılımcılara aynı yetkinlikleri kullanarak küçük cihazlara gömülü yazılımlardan bulut bilişim (cloud) üzerinde çalışan büyük ölçekli kurumsal uygulamalara kadar geniş bir oyun alanı sunuyor. Lambda ifadeleriyle de kodun satır sayısını azaltıp fonksiyonel programlama dillerinin avantajlarını kullanarak yazılımcıların verimliliğini arttırmayı hedefliyor.

Comments are off for this post