RSS
 

Archive for the ‘Yazılım Geliştirme’ Category

Griffon Başlangıç

29 Oct

Chicago da gerçekleştirilen SpringOne2GX etkinliği kapsamında epey ilginç ve de güzel seyler gördüm. Etkinliğin son gunü, paralel giden konferanslardan sonuncusunda herhangi bir bilgimin olmadigi ve diğer konuları beğenmediğinden dolayı Griffon a katılmayı tercih ettim. Hakkında çok az şey biliyordum. Ancak sunu soylemeliyim ki etkinlik kapsamında bu kadar beni şaşırtan konu olmamıştı. Bu nedenle hakkında bazı bilgileri paylaşma gereği duyuyorum.
20111028-223216.jpg
Eğer Groovy ile program yazdıysanız, hele de grails ile proje geliştirdiyseniz, griffon size çok kolay gelecektir. Continue reading “Griffon Başlangıç” »

 

Groovy Programlamaya Giriş

19 Feb

Daha önceki yazımda groovy ve grails’in nasıl kurulacağı bilgisini vermiştim. Bu yazımda ise groovy programlamaya başlayacağız.

Groovy java programlama diline alışkın kişilerin, Python, Ruby, Smalltalk yer alan özellikleri kullanabilmesine olanak sunan agile bir programlama dili olarak tanımlanıyor.

Groovy JVM üzerinde çalışır ve tüm groovy nesneleri java.lang.Object ten türemiştir. Groovy ile yazılan bir nesne derlendikten sonra bytecode a cevrilir. Oluşan *.class dosyasını classpath’inize eklenerek java tarafından kullamabilirsiniz. Yani java’dan groovy’ye, groovy den ise java’ya erişmek cok kolaydır.

Groovy’ de “;” kullanma zorunluğu yoktur.

Groovy mevcut dilin kütüphanelerin dışında, diğer kütüphaneler ve JDK yer alan özelliklerin yer aldığı GDK’den oluşmaktadır

Groovy javada yer alan List, Map ‘ e yeni özellikler katar. örneğin şu satır nesnelerin paketlerini ekrana basar.

package com.rayyildiz
class ListMapTest {
   static main(args) {
      def classes = [String, Date, Long, Boolean]
      println(classes.'package'.name);
   }
}

Bir siteye erişip içeriğini okumak için aşağıda bir code yer almakta, görebileceğiniz gibi groovy de bir rss’i almak cok kolay.Groovy de closure code yazmak çok kolaşmakta.

package com.rayyildiz
import java.net.URL
class HelloWorld {
   static main(args) {
      def url = new URL("http://rayyildiz.com/feed");
         url.eachLine { ln ->
         println(ln);
      }
   }
}

Özellikle java programcılarının çok kolay alışabileceği bir dil olan groovy yi incelemenizi tafsiye ederim. Size farklı bir bakış açışı kazandıracaktır.

 

Java’da Vector ve ArrayList Performans Karşılaştırması

17 Oct

javada, Vector ve ArrayList arasındaki farkın ne olduğunu sorulduğunda, genel olarak şunları söyleriz

  • Vector’un thread-safe‘dir.
  • Vector kapasitesi 2 kat artacak şekildedir (eğer capacityIncrement değeri verilmediyse).
  • ArrayList her seferinde kapasitesinin yarısı kadar ( %50) kapasitesini artırır.
  • Herikisi de öntanımlı olarak 10 element saklayabilecek şekilde ilklenir.

Burada¬† en çok Vector’un thread-safe özelliği öne çıkar. Yani Vector; ArrayList e göre, içindeki verinin doğruluğunu garanti eder. Hız olarak nasıl bir etkisi olduğuna ise inceleyelim.

Continue reading “Java’da Vector ve ArrayList Performans Karşılaştırması” »

 

Fabrika Yöntemi Tasarımm Deseni ( Factory Method )

09 Aug

Tasarım desenleri hakkında giriş mahiyetindeki yazıma buradan ulaşabilirsiniz. Bu tasarım desenlerinden yaratım desenleri grubundaki ücüncü desen fabrika tasarım desenidir ( Factory Method)

Fabrika yöntemi tasarım deseni,birçok framework yaygın bir şekilde kullanılan bir tasarım desenidir. Bu tasarım deseninde, parelel seviyedeki nesnelerin hangisinin oluşmasını gerektiğini karar veren bir fabrika metodunu ifade eder. Yani aynı arayüz ( interface) gerçekleştiren paralel sınıfların hangisinin gerçekleşmesini sağlayan bir nesne sayesinde bu ilşemi gerçekleştirebiliriz.

Continue reading “Fabrika Yöntemi Tasarımm Deseni ( Factory Method )” »

 

Oyun Geliştirmek için Hangi Programlama Dili

02 Aug

√úniversitedeyken hazırladığım, oyun geliştirmek için hangi programlama dili tercih etmek, avantaj ve dezavantajları gibi başlıca konularda fikir veriebilmesi amacıyla yayınlıyorum.

https://docs.google.com/present/embed?id=dr9fd4p_58gtqskfcg&interval=5

Aradan epey bir zaman geçtiği için teknolojilerde değişiklikler oldu ama genel anlamda size bilgi verebilir.

 

JDK6 da Dependency Injection (ServiceLoader)

12 Jul

DI ne olduğuna dair bir yazıyı buradan ulaşabilirsiniz. JDK6 da ise ServiceLoader gelmektedir. ServiceLoader sayesinde bir nevi DI sağlamış olmaktayız. Bunun nasıl yapacağımızı bir örnekle gösterelim.

Uygulamanın örnek test kodlarını github üzerinden bulabilmeniz mümkündür.

Bu örneği yapabilmek için 3 tane proje oluşturalım. Bu 3 proje ve açıklaması şu şekildedir:

UserAuth : Arayüzün yer aldığı proje.IUserAuthService diye bir arayüz yer almakta ve bu arayüz login diye bir metot tanımı içermektedir.

UserAuthImpl: Uygulamanın gerçekleştirildiği sınıf yer alır.

UserAuthTest: Main sınıfının yer aldığı örnek uygulamadır.

Arayüzün yer aldığı UserAuth projesinde farklı olarak META-INF/services klasörü- ve bu klasör içinde com.rayyildiz.userauth.IUserAuthService dosyası yer almaktadır. Bu dosya içine bakarsanız sadece bir satır yer almaktadır.

com.rayyildiz.userauth.impl.UserAuthService

ServiceLoader bu dosyalara bakarak hangi implemantosyunu yüklemesi gerektiğini anlar. UserAuth.jar implementasyonun yer aldığı UserAuthImpl.jar referans olarak bilmez. SericeLoader load sırasında bu implementasyonu arayacaktır.

Burada asıl önemli test projemize bakalım:

 

 

 

 

package com.rayyildiz.userauth;

import java.util.Iterator;
import java.util.ServiceLoader;

public class Main {
  public static void main(String[] args) {
    ServiceLoader<IUserAuthService> serviceLoader = ServiceLoader.load(IUserAuthService.class);
    Iterator<IUserAuthService> iterator = serviceLoader.iterator();-
    while(iterator!= null && iterator.hasNext()){
      IUserAuthService userAuthService = iterator.next();
      boolean login = userAuthService.login("demo", "password");
      System.out.println("Login for username: demo and password:password is " + login);
   }
}

Gördüğünüz gibi test uygulaması implementasyon nesnesini görmez. ServiceLoader META-INF/services içinde yer alan dosyalara bakarak implementasyon nesnelerini örnek projenin olduğu klasörde ve CLASSPATH de arar.

 

Java Migration Tool : Migrate4j

11 Feb

Migrate4j , java ortamı için geliştirilmiş bir ‚Äúmigration‚Äù aracıdır. ‚ÄúMigration‚Äù bu konuda yakın olan kişilerin cok da kullandığı bir kelime olduğu için aynen bu kelimeyi kullanmak daha doğru geldi bana. Bu araç aslında veritabanını biryerden başka yere taşırken yada yeni özellikler eklerken kullanılan bir araçtır. √áoğunlukla birden fazla kişinin aynı anda üzerinde çalıştığı veritabanlarında buna benzer sorunlar yaşanabilir. Geliştiricelerden birisi yeni tablo eklerken, diğeri ise başka tablolarda sütun ekelem yada cıkarma işlemi yapmış olabilir. İşte bu gibi nedenlerden dolayı veritabanlarının senkronize olması istenir, eksik tabloların ve yeni sütunarın otomatik olarak kurulması, eğer tablo yoksa yeni tablo oluşturulması, varsa üzerinde oynanan sütunların değiştirilmesi istenir. İşte bu tarz sorunları çözmek için çeşitli ‚Äúmigration‚Äù araçları vardır. Bunlardan birisi Migrate4j uygulaması.

Continue reading “Java Migration Tool : Migrate4j” »

 

Java da PHP:Quercus

11 Feb

J2EE 5 bir çok yeni özellikle gelmiş olmasına rağmen, özellikle hızlı uygulama gelişitirebilmek istenen uygulamalarda java nın fazla geldiği, basit uygulama geliştirmek için javanın tercih edinirliği azaldığını görmekteyiz. Bu kapsamda j2ee 6 da rapid geliştirme ortamlarının entegre olacağı ve bu sayede de daha küçük ölçekli yazılımlar için bu uygulamaların tercih edilebileceği planlanıyor. Bütün bunlar devam ederken, bazı yazılımlar yeniden yorumlanmaya başladı. Bunlardan birisi ise Quercus.

caucho-whiteQuercus aslında PHP 5 tamamen java ile GPL lisansıyla yeniden yazılmış halidir. PHP 5 içerdiği tüm özellikleri barındırır. Ayrıca PHP nin kullandığı temel modüller olan Mysql, json, pdf gibi modüller de yazılmıştır. PHP den farklı olarak ise java servisleri ile çok iyi entegre edilmiştir.
Sadece bu modüller değil, PHP de kullanılan önemli birçok modül Quercus içine dahil edilmiş. Hatta tanınmış bazı önemli php uygulamaları quercus üzerinde başarılı bir şekilde çalıştığı rapor ediliyor. Bu uygulamalrdan bazıları wordpress, joomla, drupal,phpBB ‚.. gibi devam ediyor.

Quercus için yapılması gereken ilk şey sitesinden elde edebileceğiniz .war dosyası. Bu dosyayı herhangi bir java application server üzerinde çalışıtırılabiliyor. Bu dosya ile beraber gerekli php kütüphaneleri de geliyor.

Var olan uygulamaları üzerinde çalıştırmak cok kolay. Coğunlukla yapmanız gereken config dosyasına müdaheel etmek ve cok kısa sürede uygualamanızı quercus ile çalışır hale getirebiliyorsunuz.

Detaylı bilgi için caucho sitesinden bilgi alabilirsiniz.

 

JavaFX

11 Feb

Ajax ile web bir adım atlayarak Web 2.0 oldu. Aslında teknik anlamda yeni olmayan teknolojiler, kullanım alışkanlığının değişmesiye bu adı aldı. Evet web 2.0 alışılagelmiş sunucu-istemci mimarisinin kullanıcıya bakan yönünde büyük değişmeler içeren bir teknoloji.
Uzun bir süredir web 2.0 adapte olabilecek yazılım geliştirme ortamları piyasa sunulmaktadır. Hatta öyle olmuştur ki, ajax desteği vermeyen ortamın kullanımı azalmaktadır. Ancak piyasaya cıkarıldığı ilk günden beri oldukça geniş kulalnım ağına sahip olan Flash, interaktif özellikleri sayesinde vazgecilmez olmuştur. Ancak Zengin İnternet Uygulamaları (Rich Internet Application ‚Äì RIA ) geliştikçe rekabet kızışmaktadır.
Bunun farkında olan Microsoft WPF ‚ÄòI duyurdu. Bunun üzerine Adobe Apollo ile cevap verdi. Microsoft bu ürünü daha sonra adını değiştirerek SilverLight yaptı. Benzer zamanlarda acık kod dünyasının yükselen değeri Mono ekibi, moonlight ile acık kod dünyasınında bu konuda duyarsız kalmayacağını göztermiş oldu. Bu gelişmeler olurken, bütün herkes Sun‚Äôın buna nasıl bir çözüm sunacağını beklemekteydi. Özellikle Ocak 2007 de mobil dünyasının seçkin kuruluşlarından önemli geliştiricilerini topladığı haberi duyuruldu. Bu Sun‚Äôın bazı planlar yaptığını gösteriyordu. Beklenen soruların cevapları Mayıs 2007 de Sun Fransisco‚Äôda düzenlenen SunOne seminerinde geldi. Sun burada mobil ortamdan masaüstü ortamına kadar çözüm sunan bir ürünü duyurdu: javaFX.
Bu bahsedilen tüm uygulamaların asıl amacı, HTML, JavaScript, Ajax, Flash gibi değişik ortamları tek catı altında birleştirmek. JavaFX farklı olarak bunlara ek olarak java paketlerini destekleyor. Yani herhangi bir java kütüphanesi javafx ile kullanılabilecek. √ústlik JavaFX çalışabilmesi için sistemde küçük bir java runtime versiyonu kurulu olması yeterli. JavaFX, JavaFX script ve javaMobil diye alt ürünlerden oluşuyor. Yani Sun, JavaFX ile daha once ‚Äúbir kere yaz heryerde çalışsın‚Äù sözünü tutarak, aynı kodun hem masaüstünde hemde cep telefonlarda çalışmasını sağlayacağını bildirmekte. Hatta Sun biraz daha ileri giderek, JavaFX‚Äôi digital TV ve analog TV ortamlarında da çalıştırmayı hedeflemektedir.

Continue reading “JavaFX” »