<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>rayyildiz.com &#187; Yazılım Geliştirme</title>
	<atom:link href="http://rayyildiz.com/category/yazilim-gelistirme/feed/" rel="self" type="application/rss+xml" />
	<link>http://rayyildiz.com</link>
	<description>Bilgi Paylaşıldıkça Güzelleşir</description>
	<lastBuildDate>Mon, 16 Jan 2012 11:07:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Griffon Başlangıç</title>
		<link>http://rayyildiz.com/2011/10/griffon-baslangic/</link>
		<comments>http://rayyildiz.com/2011/10/griffon-baslangic/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 03:53:19 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[Griffon]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/2011/10/griffon-baslangic/</guid>
		<description><![CDATA[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ı [...]]]></description>
			<content:encoded><![CDATA[<p>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.<br />
<a href="http://rayyildiz.com/wp-content/uploads/20111028-223216.jpg" rel="lightbox[541]"><img src="http://rayyildiz.com/wp-content/uploads/20111028-223216.jpg" alt="20111028-223216.jpg" class="alignnone size-full" /></a><br />
Eğer Groovy ile program yazdıysanız, hele de grails ile proje geliştirdiyseniz, griffon size çok kolay gelecektir. <span id="more-541"></span></p>
<p><a href="http://griffon.codehaus.org">Griffon</a> grails gibi proje geliştirmek için gelistirilmis bir proje. Griffon JSR 295 ve JSR 296 uyumlu. Su an itibariyle 170 ten fazla plugin e sahip. </p>
<p><strong>Griffon Başlangıç </strong><br />
Griffon indirdekten sonra, bazı ayarlar yapmanız gerekiyor. <a href="http://griffon.codehaus.org/Installing+Griffon">Buradan</a> bilgi alarak bu işlemleri gerçekleştirebilirsiniz. </p>
<p>Grails de olduğu gibi griffon ile bir proje acmak çok kolay. </p>
<blockquote><p>griffon create-app</p></blockquote>
<p>Evet sadece bu kadar. Peki hatırlayalım, grails de bir projeyi çalıştırmak için ne yapıyorduk ? </p>
<blockquote><p>grails run-app</p></blockquote>
<p>Tahmin edebileceğiniz gibi griffon da bir proyi çalıştırmak grails de projeyi çalıştırmak gibi.</p>
<blockquote><p>griffon run-app</p></blockquote>
<p>Java da çeşitli uygulamaları denince applet de akla gelir. Peki bir griffon ile bir applet nasıl yazarız? Cevap çok kolay herhangi bir şey yapmanıza gerek yok: sadece uygulamanızı yazın ve calistirirken şu sekilde çalıştırın.</p>
<blockquote><p>griffon run-applet</p></blockquote>
<p>Aklınıza  applet güzel ama biz bunu web den calistirabilir bir sekilde nasıl yazarız diye gelebilir. Hemen onun da cevabını söyleyeyim. </p>
<blockquote><p>griffon run-webstart</p></blockquote>
<p>Projenizi yazdınız ve deployment yapmak istiyorsunuz. Grails de olduğu gibi</p>
<blockquote><p>griffon dev package</p></blockquote>
<p>demeniz yeterli. Bu sizin için standolone, applet, webstart için paketleri olusuturacaktir. Hatta applet için <em>self signed</em> bir sertifika ile oluşturacaktir.<br />
<a href="http://rayyildiz.com/wp-content/uploads/20111028-2232051.jpg" rel="lightbox[541]"><img src="http://rayyildiz.com/wp-content/uploads/20111028-2232051.jpg" alt="20111028-223205.jpg" class="alignnone size-full" /></a><br />
Swing ve java ile ugrastiysaniz, jar dosyasını dağıtmanın hiç de mantıklı olmadıgını bilirsiniz. Size tavsiyem <strong>installer</strong> adında bir plugin var, onu kullanmanızı tavsiye ederim. </p>
<blockquote><p>griffon installer-plugin installer</p></blockquote>
<p>Plugin kurduktan sonra şu sekilde projenizi paket oluşturabilirsiniz. Bu size MAC OS, Windows ve debian için kurulum paketleir hazirlayacaktir.</p>
<blockquote><p>griffon package dmg izpack deb</p></blockquote>
<p><strong>Griffon Archtype</strong><br />
Eğer Groovy bilmiyorsanız, güzel bir haberim var: griffon scala, Java, jython &#8230; dillerini de destekliyor. Projenizi olustururken archtype belirterek projenizi istediğiniz bir dilde yazabilirsiniz.</p>
<blockquote><p>griffon create-app -archtype=scala<br />
griffon create-app -archtype=java</p></blockquote>
<p><strong>Bizi Ne Bekliyor</strong><br />
Proje su anda 0.9.4 sürümü mevcut. Yıl sonunda 1.0 gelecek. Proje epey iyi bir şekilde yoluna devam ediyor. Avusturalya da çok önemli bir şirket tüm uygulamalarını griffon ile yazmış. Amerika&#8217;da da epey bir şirket projelerini griffon ile yazmaya başlamış.<br />
Şu anda veri tabanı işlemi için datasource adındaki plugin i kullanabilirsiniz. Yalnız griffon 2 ile birlikte GORM birlikte gelecek. Bununla beraber griffon 2.0 da scaffold da geliyor. </p>
<p>Son söz olarak, bu projeyi oldukça başarılı bulduğumu tekrar belirtmek isterim. Desktop projelerimde griffon u kullanmayı hedefliyorum. Şimdilik bu kadar, eve gidince griffon ile geliştireceğim projeleri ve griffon hakkında daha detaylı calışmalarımı paylaşacağım.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2011/10/griffon-baslangic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Groovy Programlamaya Giriş</title>
		<link>http://rayyildiz.com/2011/02/groovy-programlamaya-giris/</link>
		<comments>http://rayyildiz.com/2011/02/groovy-programlamaya-giris/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 12:41:54 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=438</guid>
		<description><![CDATA[Daha önceki yazımda groovy ve grails&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>Daha <a href="http://rayyildiz.com/2010/08/groovy-ve-grails-kurulumu/">önceki yazımda</a> groovy ve grails&#8217;in nasıl kurulacağı bilgisini vermiştim. Bu yazımda ise groovy programlamaya başlayacağız.</p>
<p>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.</p>
<p><a href="http://rayyildiz.com/wp-content/uploads/2011/02/groovy_jvm.png" rel="lightbox[438]"><img class="alignnone size-full wp-image-439" title="groovy_jvm" src="http://rayyildiz.com/wp-content/uploads/2011/02/groovy_jvm.png" alt="" width="358" height="205" /></a></p>
<p>Groovy JVM üzerinde çalışır ve tüm groovy nesneleri <em>java.lang.Object</em> ten türemiştir. Groovy ile yazılan bir nesne derlendikten sonra bytecode a cevrilir. Oluşan<em> *.class</em> dosyasını classpath&#8217;inize eklenerek java tarafından kullamabilirsiniz. Yani java&#8217;dan groovy&#8217;ye, groovy den ise java&#8217;ya erişmek cok kolaydır.</p>
<blockquote><p>Groovy&#8217; de &#8220;;&#8221; kullanma zorunluğu yoktur.</p></blockquote>
<p>Groovy  mevcut dilin kütüphanelerin dışında, diğer kütüphaneler ve JDK yer alan özelliklerin yer aldığı GDK&#8217;den oluşmaktadır<br />
<a href="http://rayyildiz.com/wp-content/uploads/2011/02/groovy_gdk_java.png" rel="lightbox[438]"><img class="alignnone size-medium wp-image-440" title="groovy_gdk_java" src="http://rayyildiz.com/wp-content/uploads/2011/02/groovy_gdk_java-300x180.png" alt="" width="300" height="180" /></a><br />
Groovy javada yer alan List, Map &#8216; e yeni özellikler katar. örneğin şu satır nesnelerin paketlerini ekrana basar.</p>
<pre class="brush: java; title: ; notranslate">
package com.rayyildiz
class ListMapTest {
   static main(args) {
      def classes = [String, Date, Long, Boolean]
      println(classes.'package'.name);
   }
}
</pre>
<p>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&#8217;i almak cok kolay.Groovy de closure code yazmak çok kolaşmakta.</p>
<pre class="brush: java; title: ; notranslate">
package com.rayyildiz
import java.net.URL
class HelloWorld {
   static main(args) {
      def url = new URL(&quot;http://rayyildiz.com/feed&quot;);
         url.eachLine { ln -&gt;
         println(ln);
      }
   }
}
</pre>
<p>Ö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.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2011/02/groovy-programlamaya-giris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java&#8217;da Vector ve ArrayList Performans Karşılaştırması</title>
		<link>http://rayyildiz.com/2010/10/javada-vector-ve-arraylist-performans-karsilastirmasi/</link>
		<comments>http://rayyildiz.com/2010/10/javada-vector-ve-arraylist-performans-karsilastirmasi/#comments</comments>
		<pubDate>Sun, 17 Oct 2010 01:16:13 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[arraylist]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[karşılaştırma]]></category>
		<category><![CDATA[performans]]></category>
		<category><![CDATA[vector]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=295</guid>
		<description><![CDATA[javada, Vector ve ArrayList arasındaki farkın ne olduğunu sorulduğunda, genel olarak şunları söyleriz Vector&#8217;un thread-safe&#8216;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&#8217;un thread-safe özelliği öne çıkar. Yani Vector; ArrayList [...]]]></description>
			<content:encoded><![CDATA[<p>javada, <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/Vector.html" target="_blank">Vector</a> ve <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html" target="_blank">ArrayList</a> arasındaki farkın ne olduğunu sorulduğunda, genel olarak şunları söyleriz</p>
<ul>
<li> Vector&#8217;un <a href="http://www.javaworld.com/javaworld/jw-03-1998/jw-03-indepth.html?page=1" target="_blank">thread-safe</a>&#8216;dir.</li>
<li>Vector kapasitesi 2 kat artacak şekildedir (eğer capacityIncrement değeri verilmediyse).</li>
<li>ArrayList her seferinde kapasitesinin yarısı kadar ( %50) kapasitesini artırır.</li>
<li>Herikisi de öntanımlı olarak 10 element saklayabilecek şekilde ilklenir.</li>
</ul>
<p>Burada¬† en çok Vector&#8217;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.</p>
<p><span id="more-295"></span></p>
<p>Peki vector ve ArrayList performans olarak nasıl bir farkı vardır. Bunun için örnek yazdığım uygulamayı <a href="http://github.com/rayyildiz/PerformanceTest">http://github.com/rayyildiz/PerformanceTest</a> inceleyebilirsiniz.</p>
<p>Performans karşılaştırılmasında 100.000 tane rastgele oluşturulmuş sayılar eklenip, işlem yapılmaktadır.</p>
<h2>Ekleme İşlemi</h2>
<p>Vector ve ArrayList e rastgele oluşturulmuş 100.000 element ekleniyor</p>
<pre class="brush: java; title: ; notranslate">
IList&amp;lt;Integer&amp;gt; vectorList = new IntegerVectorListImpl();
IList&amp;lt;Integer&amp;gt; arrayList = new IntegerArrayListImpl();
List&amp;lt;Integer&amp;gt; randomIntegers = getRandomIntegers(100000);
long start,end;

write(&quot;Start for inserting ARRAYLIST&quot;);
start = System.currentTimeMillis();
for(Integer i : randomIntegers) arrayList.insert(i);
end = System.currentTimeMillis();
long differenceOfArrayList = end -¬† start;
write(&quot;ArrayList time difference :&quot; + differenceOfArrayList + &quot; ms&quot;);
write(&quot;End for inserting ARRAYLIST&quot;);

write(&quot;Start for inserting VECTOR&quot;);
start = System.currentTimeMillis();
for(Integer i : randomIntegers) vectorList.insert(i);
end = System.currentTimeMillis();
long differenceOfVector = end -¬† start;
write(&quot;Vector time difference :&quot; + differenceOfVector + &quot; ms&quot;);
write(&quot;End for inserting VECTOR&quot;);
</pre>
<p>Bu test işlemi sonucunda alınan değerler şu şekilde.</p>
<table>
<tbody>
<tr>
<th></th>
<th>En İyi Değeri</th>
<th>En Kötü Değeri</th>
<th>Ortalama</th>
</tr>
<tr>
<th>Vector</th>
<td>29</td>
<td>58</td>
<td><strong>36.45</strong></td>
</tr>
<tr>
<th>ArrayList</th>
<td>17</td>
<td>30</td>
<td><strong>24.9</strong></td>
</tr>
</tbody>
</table>
<p>Görüldüğü gibi ArrayList ekleme işlemlerinde daha hızlı çalışıyor.</p>
<h2>Arama İşlemi</h2>
<p>Bir üstteki örnekte olduğu gibi, 100.000 kayıt eklenerek, bu kayıtlar içinden bir değer aranıyor.</p>
<pre class="brush: java; title: ; notranslate">
IList&amp;lt;Integer&amp;gt; vectorList = new IntegerVectorListImpl();
IList&amp;lt;Integer&amp;gt; arrayList = new IntegerArrayListImpl();
List&amp;lt;Integer&amp;gt; randomIntegers = getRandomIntegers(100000);
long start,end;

for(Integer i : randomIntegers) arrayList.insert(i);
for(Integer i : randomIntegers) vectorList.insert(i);

Integer findObj =¬† 777;

write(&quot;Start for search ARRAYLIST&quot;);
start = System.currentTimeMillis();
arrayList.search(findObj);
end = System.currentTimeMillis();
long differenceOfArrayList = end -¬† start;
write(&quot;ArrayList time difference :&quot; + differenceOfArrayList + &quot; ms&quot;);
write(&quot;End for search ARRAYLIST&quot;);

write(&quot;Start for search VECTOR&quot;);
start = System.currentTimeMillis();
vectorList.search(findObj);
end = System.currentTimeMillis();
long differenceOfVector = end -¬† start;
write(&quot;Vector time difference :&quot; + differenceOfVector + &quot; ms&quot;);
write(&quot;End for search VECTOR&quot;);
</pre>
<p>Bununla ilgili sonuc şu şekilde:</p>
<table>
<tbody>
<tr>
<th></th>
<th>En İyi Değeri</th>
<th>En Kötü Değeri</th>
<th>Ortalama</th>
</tr>
<tr>
<th>Vector</th>
<td>6</td>
<td>9</td>
<td><strong>7.6</strong></td>
</tr>
<tr>
<th>ArrayList</th>
<td>6</td>
<td>13</td>
<td><strong>7.4</strong></td>
</tr>
</tbody>
</table>
<p>Görüldüğü gibi ArrayList vector den cok az daha hızlı arama işlemi yapabiliyor sunuz.</p>
<h2>Sonuç Olarak</h2>
<p>Sonuç olarak ise Vector thread-safe özelliğinden dolayı daha güvenli olduğu halde biraz yavaş çalışmaktadır. ArrayList ise daha hızlı olup, multi-thread uygulamalarda verinin doğruluğunu garanti edememektedir</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/10/javada-vector-ve-arraylist-performans-karsilastirmasi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fabrika Yöntemi Tasarımm Deseni ( Factory Method )</title>
		<link>http://rayyildiz.com/2010/08/fabrika-yontemi-tasarim-deseni-factory-method/</link>
		<comments>http://rayyildiz.com/2010/08/fabrika-yontemi-tasarim-deseni-factory-method/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 23:53:29 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[tasarım desenleri]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=282</guid>
		<description><![CDATA[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) [...]]]></description>
			<content:encoded><![CDATA[<p>Tasarım desenleri hakkında giriş mahiyetindeki yazıma <a href="../2010/07/2010/07/tasarim-desenleri-design-pattern/" target="_blank">buradan</a> ulaşabilirsiniz. Bu tasarım desenlerinden yaratım desenleri grubundaki ücüncü desen fabrika tasarım desenidir ( <a href="http://en.wikipedia.org/wiki/Factory_method_pattern" target="_blank">Factory Method</a>)</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/factory_method.png" rel="lightbox[282]"><img class="alignleft size-medium wp-image-285" title="factory_method" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/factory_method.png?w=300" alt="" width="300" height="175" /></a>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.</p>
<p><span id="more-282"></span>Örneğimiz üzerinden düşünelim. √ñrnekte <strong>IDbConnection</strong> adında bir arayüzümüz mevcut olup, bu arayüzü <strong>OracleDbConnection</strong>, <strong>MySqlDbConnection</strong> ve <strong>MssqlDbConnection</strong> adında 3 tane nesne vardır. Bu üç nesneden hangisinin oluşması gerektiğini karar veren <strong>DbConnectionFactory</strong> adında bir nesnemiz var. Bu <strong>DbConnectionFactory</strong> nesnesi içinde yer alan static bir metod ve (metodun adı : <strong><em>createDbConnection</em></strong>)¬† metoda geçirilen parametreden hangi nesneyi gerçekleştireceğine karar verir.</p>
<p><a href="http://rayyildizc.files.wordpress.com/2010/08/factory_method_uml1.png" rel="lightbox[282]"><img class="alignnone size-medium wp-image-287" title="factory_method_uml" src="http://rayyildizc.files.wordpress.com/2010/08/factory_method_uml1.png?w=300" alt="" width="300" height="108" /></a></p>
<p>Arayüz ve bu 3 nesnenin kaynak koduna bakalım.</p>
<pre class="brush: java; title: ; notranslate">
package com.rayyildiz.patterns;

public interface IDbConnection {
  String getConnection();
}

public class OracleDbConnection implements IDbConnection {
  @Override
  public String getConnection() {
    return &quot;Oracle Data Connection&quot;;
  }
}

public class MySqlDbConnection implements IDbConnection {
  @Override
  public String getConnection() {
    return &quot;MySql Data Connection&quot;;
  }
}

public class MssqlDbConnection implements IDbConnection {
  @Override
  public String getConnection() {
    return &quot;Mssql Data Connection&quot;;
  }
}
1

≈ûimdi ise fabrika yöntemini yapan metodu görelim:

1
package com.rayyildiz.patterns;

public enum DbConnectionType {
  Oracle,
  Mysql,
  Mssql
}
</pre>
<pre class="brush: java; title: ; notranslate">
package com.rayyildiz.patterns;

public class DbConnectionFactory {
  public static IDbConnection createDbConnection(DbConnectionType dbConnType){
    switch(dbConnType){
      case Oracle:
        return new OracleDbConnection();
      case Mysql:
        return new MySqlDbConnection();
      case Mssql:
        return new MssqlDbConnection();
    }
    return null;
  }
}
</pre>
<p>Bu ve zamanla uygulanan diğer tasarım desenleri hakkındaki örnek uygulamaları <a href="http://rayyildiz.github.com/DesignPatterns/">http://github.com/rayyildiz/DesignPatterns</a> adresinden ulaşabilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/08/fabrika-yontemi-tasarim-deseni-factory-method/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oyun Geliştirmek için Hangi Programlama Dili</title>
		<link>http://rayyildiz.com/2010/08/oyun-gelistirmek-icin-hangi-programlama-dili/</link>
		<comments>http://rayyildiz.com/2010/08/oyun-gelistirmek-icin-hangi-programlama-dili/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 12:23:10 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[oyun geliştirme]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=267</guid>
		<description><![CDATA[√ú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&#038;interval=5 Aradan epey bir zaman geçtiği için teknolojilerde değişiklikler oldu ama genel anlamda size bilgi verebilir.]]></description>
			<content:encoded><![CDATA[<p>√ú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.</p>
<p><a href="https://docs.google.com/present/embed?id=dr9fd4p_58gtqskfcg&#038;interval=5">https://docs.google.com/present/embed?id=dr9fd4p_58gtqskfcg&#038;interval=5</a></p>
<p>Aradan epey bir zaman geçtiği için teknolojilerde değişiklikler oldu ama genel anlamda size bilgi verebilir.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/08/oyun-gelistirmek-icin-hangi-programlama-dili/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JDK6 da Dependency Injection (ServiceLoader)</title>
		<link>http://rayyildiz.com/2010/07/jdk6-da-dependency-injection-serviceloader/</link>
		<comments>http://rayyildiz.com/2010/07/jdk6-da-dependency-injection-serviceloader/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 23:33:53 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[di]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk6]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=226</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>DI ne olduğuna dair bir yazıyı <a href="http://rayyildiz.net/2010/05/what-is-dependency-injection/" target="_blank">buradan</a> ulaşabilirsiniz. JDK6 da ise <a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/java/util/ServiceLoader.html" target="_blank">ServiceLoader</a> gelmektedir. ServiceLoader sayesinde bir nevi DI sağlamış olmaktayız. Bunun nasıl yapacağımızı bir örnekle gösterelim.</p>
<p>Uygulamanın örnek test kodlarını <a href="http://github.com/rayyildiz/UserAuthSample" target="_blank">github</a> üzerinden bulabilmeniz mümkündür.</p>
<p>Bu örneği yapabilmek için 3 tane proje oluşturalım. Bu 3 proje ve açıklaması şu şekildedir:</p>
<p>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.</p>
<p>UserAuthImpl: Uygulamanın gerçekleştirildiği sınıf yer alır.</p>
<p>UserAuthTest: Main sınıfının yer aldığı örnek uygulamadır.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/project_tree1.png" rel="lightbox[226]"><img class="alignleft size-medium wp-image-227" title="project_tree" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/project_tree1.png?w=246" alt="" width="246" height="300" /></a>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.</p>
<pre class="brush: java; title: ; notranslate">
com.rayyildiz.userauth.impl.UserAuthService
</pre>
<p>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.</p>
<p>Burada asıl önemli test projemize bakalım:</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<pre class="brush: java; title: ; notranslate">
package com.rayyildiz.userauth;

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

public class Main {
  public static void main(String[] args) {
    ServiceLoader&lt;IUserAuthService&gt; serviceLoader = ServiceLoader.load(IUserAuthService.class);
    Iterator&lt;IUserAuthService&gt; iterator = serviceLoader.iterator();-
    while(iterator!= null &amp;&amp; iterator.hasNext()){
      IUserAuthService userAuthService = iterator.next();
      boolean login = userAuthService.login(&quot;demo&quot;, &quot;password&quot;);
      System.out.println(&quot;Login for username: demo and password:password is &quot; + login);
   }
}
</pre>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/07/jdk6-da-dependency-injection-serviceloader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Migration Tool : Migrate4j</title>
		<link>http://rayyildiz.com/2009/02/java-migration-tool-migrate4j/</link>
		<comments>http://rayyildiz.com/2009/02/java-migration-tool-migrate4j/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 18:21:45 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[veritabanı]]></category>

		<guid isPermaLink="false">http://www.rayyildiz.com/?p=56</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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ı.</p>
<p><span id="more-56"></span>Migrate4j diğer araçlardan biraz daha fazla özellik içerir. Örneğin sorgular native SQL değil java ile yazılmaktadır. Ayrıca farklı veritabanları motorlarında sorunsuzca çalışabilmektedir.</p>
<h3><strong>Nasıl Kullanırım?</strong></h3>
<p>Migrate4j uygulamasını <a href="http://migrate4j.sourceforge.net/" target="_blank">http://migrate4j.sourceforge.net/</a> adresinden hem daha fazla detaylı bilgi alarak bakabilir hemd e bu adresten indirebilirsiniz. İndirdiğiniz paket içinden cıkan Migrate4j.jar dosyasını kullandığınız editörten tanımlayarak yada console ile derleyecekseniz ilgili classpath içine almanız yeterli. Daha sonra uygulamanızın an dizininde migrate4j.properties ayar dosyası oluşturmanı gerekiyor. Bu dosya içinde genel ayarlar ile bağlantı çümlesi ve driver seçenekleri olmalıdır. Örnek bir migrate4j.properties şu şekilde olabilir.</p>
<pre class="brush: java; title: ; notranslate">
connection.url=‚Äùjdbc:mysql://localhost:3306/testdb‚Äù
connection.driver=‚Äùcom.mysql.jdbc.Driver‚Äù
connection.password=passw@rd
migration.package.name=test.migratebase
</pre>
<p>Bu dosya içinde bağlantı için mysql deki testdb veritabanını kullandığımızı ve migration paketlerinin test.migratebase içinde yer aldığını belirttik. Daha sonra yazacağımız migrate sınıflarını bu paket içinde oluşturmamız gerekli.</p>
<p>Örneğin Student diye bir tablomuz var. Eğer sistemiizmde bu tablo yoksa oluşmasını, sistemden silmek istediğimizde ise bu tablonun silinmesini sağlayan nesnemiz şu şekildedir:</p>
<pre class="brush: java; title: ; notranslate">
package test.migratebase;

import static com.eroi.migrate.Define.*;
import static com.eroi.migrate.Define.DataTypes.*;
import static com.eroi.migrate.Execute.*;
import com.eroi.migrate.Migration;

public class Student implements Migration {
   public void up() {
     createTable(table(&quot;student_table&quot;,
       column(&quot;id&quot;, INTEGER, primarykey(), notnull()),
       column(&quot;firstname&quot;, VARCHAR, length(50), defaultValue(&quot;NA&quot;)),
       column(&quot;lastname&quot;, VARCHAR, length(50), defaultValue(&quot;NA&quot;)),
       column(&quot;number&quot;, VARCHAR, length(15), defaultValue(&quot;NA&quot;))));
  }

  public void down() {
     dropTable(&quot;student_table&quot;);
  }
}
</pre>
<p>Evet aslında bu nesne bizim için student_table tablosu yoksa oluşturmayı varsa silmek istediğimizde ise silmeyi sağlıyor. genel olarak eğer bir tablo oluşturulucaksa ‚Äúup‚Äù silmek istenilirse ‚Äúdown‚Äù metodu çağrılacaktır.</p>
<p>Kabaca bir tablonun bir migration araçla nasıl silinip kurulacağını gördük. Elbette bu yeterli değildir. Sitesine girerek detaylı bilgi alabilirsiniz. Eğer bir sorunla karşılaşırsanız yardımcı olmaya çalışırız.</p>
<p>Kolay gelsin</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2009/02/java-migration-tool-migrate4j/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java da PHP:Quercus</title>
		<link>http://rayyildiz.com/2009/02/java-da-phpquercus/</link>
		<comments>http://rayyildiz.com/2009/02/java-da-phpquercus/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 18:06:20 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[quercus]]></category>

		<guid isPermaLink="false">http://www.rayyildiz.com/?p=37</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p><a href="http://quercus.caucho.com"><img class="alignleft size-full wp-image-38" title="caucho-white" src="http://rayyildizc.files.wordpress.com/2009/02/caucho-white1.jpg" alt="caucho-white" width="150" height="63" /></a>Quercus 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.<br />
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.</p>
<p>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.</p>
<p>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.</p>
<p>Detaylı bilgi için <a href="http://quercus.caucho.com/" target="_blank">caucho</a> sitesinden bilgi alabilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2009/02/java-da-phpquercus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaFX</title>
		<link>http://rayyildiz.com/2009/02/javafx/</link>
		<comments>http://rayyildiz.com/2009/02/javafx/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 18:02:41 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Yazılım Geliştirme]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javafx]]></category>

		<guid isPermaLink="false">http://www.rayyildiz.com/?p=32</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.<br />
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.<br />
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.<br />
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.</p>
<p><span id="more-32"></span><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/ig_javafx_architecture1.jpg" rel="lightbox[32]"><img class="alignleft size-medium wp-image-33" title="javafx mimarisi" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/ig_javafx_architecture1.jpg?w=300" alt="javafx mimarisi" width="300" height="178" /></a> Yalnız burada JavaFX , swing yerine gelen bir ürün değildir. Sun dediği gibi JavaFX Swing‚Äôin performansını artıran bir teknolojidir.J avaFX Script ile gelen event oluşturma ve yürütme konusundaki iyileştirmelerden Swing uygulamaları da faydalanacak ve umuyoruz ki daha performanslı Swing uygulamaları göreceğiz. Şu anda JRE (Java RunTime Enviroment) ile JavaFX Script uygulamalarını masaüstünde çalıştırma imkanına sahibiz.<br />
Henüz üzerinde 2 ay geçmeden, örnek cok iyi örnekler hazırlanmaya başladı. İnanılması zor ama aşağıdaki örnekler ne flash need HTML yapılmıştır, tamamen JavaFX.</p>
<p><a href="http://rayyildiztr.files.wordpress.com/2009/02/javafx_studio_sample1.jpg" rel="lightbox[32]"><img class="alignright size-medium wp-image-34" title="motorola javafx studio" src="http://rayyildiztr.files.wordpress.com/2009/02/javafx_studio_sample1.jpg?w=300" alt="motorola javafx studio" width="300" height="190" /></a>Güvenlik mekanızması olarak , J2SE bağlı kalacağını dile getirmişlerdir. Java ile çalışan herkesin bileceği gibi, J2SE güvenlik anlamda en etkin platformlardan birisidir. Dolayısıyla, JavaFX‚Äôin en az J2SE kadar güvenlidir.<br />
Bunun yanında kısa süre geçmiş olmasına rağmen JafaFX tasarlama ortamları geliştirildi. Hatta Sun üretiiği ve üçretsiz sunduğu Java Geliştirme Ortamı olan NetBeans için beta versiyonunda olan bir FavaFX geliştirme ortamı ücretsiz şekilde sunulmaktadır.</p>
<p>Özellikle google‚Äôın başı çektiği web 2.0 ortamı bu ortamların daha yaykın kullanılmaya başlanması ile daha değişik boyutlara ulaşacak. Bakalım görsel rekabetler bizi nasıl ufuklara götürecek.</p>
<h3><strong>Bilgi:</strong></h3>
<ul>
<li><em>Ajax, Asynchrony JavaScript Application with XML baş harflerinden oluşan asenkron javascirpt uygulamalarına dayanan bir teknolojidir. En çok google tarafındanyoğun bir şekilde kullanılan ve bu sayede beğeni toplayan Ajax, kullanım alışkanlığını da değiştirerek internetin, web 2.0 adıya anılmasına neden olmuştur.</em></li>
<li><em>RIA, Rich Internet Application baş harflerinde oluşan ve sengin internet içerikleri anlamına gelen bir terimdir. İlk kez Macromedi tarafından 2002 de duyuruldu. Masaüstü ortamları kadar zengin içeriğe sahip web uygulamarına verilen addır. Asıl veri yine sunucu tarafında olur. Bu bakımdan masaüstü yazılımlarından farklılık oluşturur.Sandbox adıylada anılır.</em></li>
<li><em>Adobe , Flash geliştiren Macromedia firmasını 2005 yılında satın alarak, kendi bünyesine katmış ve Macromedi‚Äônın ürettiği ürünleri Adobe altında üretmeye devam etmiştir.</em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2009/02/javafx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

