<?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>Kurumsal Java Yazılımı</title>
	<atom:link href="http://www.kurumsaljava.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kurumsaljava.com</link>
	<description>Java Enterprise Architecture</description>
	<lastBuildDate>Wed, 17 Mar 2010 18:45:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Kurumsal Java Akademisi Seminerleri Başlıyor!</title>
		<link>http://www.kurumsaljava.com/2010/03/17/kurumsal-java-akademisi-seminerleri-basliyor/</link>
		<comments>http://www.kurumsaljava.com/2010/03/17/kurumsal-java-akademisi-seminerleri-basliyor/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 18:39:08 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[Haberler]]></category>
		<category><![CDATA[KurumsalJava Seminerleri]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1120</guid>
		<description><![CDATA[<p><a href="http://www.kurumsaljavaakademisi.com/egitim/seminer-takvimi/" target=_blank>Detaylar için bakınız.</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kurumsaljavaakademisi.com/egitim/seminer-takvimi/" target=_blank>Detaylar için bakınız.</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F03%2F17%2Fkurumsal-java-akademisi-seminerleri-basliyor%2F&amp;linkname=Kurumsal%20Java%20Akademisi%20Seminerleri%20Ba%C5%9Fl%C4%B1yor%21"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/03/17/kurumsal-java-akademisi-seminerleri-basliyor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yeni KurumsalJava Seminerleri</title>
		<link>http://www.kurumsaljava.com/2010/03/12/yeni-kurumsaljava-seminerleri/</link>
		<comments>http://www.kurumsaljava.com/2010/03/12/yeni-kurumsaljava-seminerleri/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 11:21:43 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[KurumsalJava Seminerleri]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1117</guid>
		<description><![CDATA[<p>15 mart&#8217;dan 30 mart 2010&#8242;a kadar, üniversitelerde ücretsiz KurumsalJava.com seminerleri düzenlemek üzere İstanbul&#8217;da bulunacağım. İlgilenler bana acar[AT]unitedinter.net adresinden ulaşabilirler.</p>
<p><span id="more-1117"></span></p>
<p>___________________________ </p>
<p>Özcan Acar<br />
Bilgisayar Mühendisi</p>
<p>Sun Java Champion<br />
Sun Certified Architect (SCEA 5)</p>
<p>http://www.ozcanacar.com<br />
http://www.KurumsalJava.com</p>
]]></description>
			<content:encoded><![CDATA[<p>15 mart&#8217;dan 30 mart 2010&#8242;a kadar, üniversitelerde ücretsiz KurumsalJava.com seminerleri düzenlemek üzere İstanbul&#8217;da bulunacağım. İlgilenler bana acar[AT]unitedinter.net adresinden ulaşabilirler.</p>
<p><span id="more-1117"></span></p>
<p>___________________________ </p>
<p>Özcan Acar<br />
Bilgisayar Mühendisi</p>
<p>Sun Java Champion<br />
Sun Certified Architect (SCEA 5)</p>
<p>http://www.ozcanacar.com<br />
http://www.KurumsalJava.com</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F03%2F12%2Fyeni-kurumsaljava-seminerleri%2F&amp;linkname=Yeni%20KurumsalJava%20Seminerleri"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/03/12/yeni-kurumsaljava-seminerleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java İle Yazılımı Kavramak</title>
		<link>http://www.kurumsaljava.com/2010/03/06/java-ile-yazilimi-kavramak/</link>
		<comments>http://www.kurumsaljava.com/2010/03/06/java-ile-yazilimi-kavramak/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 18:26:53 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[Kaynak Kitaplar]]></category>
		<category><![CDATA[Effective Java]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1114</guid>
		<description><![CDATA[<p>Java ile yazılımı tam anlamıyla kavramak isteyenler mutlaka bu kitabı okumalı!<span id="more-1114"></span></p>
<p><center><img src="http://image.kurumsaljava.com/storage/image.jsp?ct=image/jpg&#038;d=prod&#038;k=kurumsaljava_371"></center></p>
]]></description>
			<content:encoded><![CDATA[<p>Java ile yazılımı tam anlamıyla kavramak isteyenler mutlaka bu kitabı okumalı!<span id="more-1114"></span></p>
<p><center><img src="http://image.kurumsaljava.com/storage/image.jsp?ct=image/jpg&#038;d=prod&#038;k=kurumsaljava_371"></center></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F03%2F06%2Fjava-ile-yazilimi-kavramak%2F&amp;linkname=Java%20%C4%B0le%20Yaz%C4%B1l%C4%B1m%C4%B1%20Kavramak"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/03/06/java-ile-yazilimi-kavramak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java JVM&#8217;i (Java Virtual Machine) Anlamak</title>
		<link>http://www.kurumsaljava.com/2010/03/06/java-jvmi-java-virtual-machine-anlamak/</link>
		<comments>http://www.kurumsaljava.com/2010/03/06/java-jvmi-java-virtual-machine-anlamak/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 17:59:33 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[Kaynak Kitaplar]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1109</guid>
		<description><![CDATA[<p>Java JVM&#8217;i tam anlamıyla kavramak isteyenler mutlaka bu kitabı okumalı!<span id="more-1109"></span></p>
<p><center><img src="http://image.kurumsaljava.com/storage/image.jsp?ct=image/jpg&#038;d=prod&#038;k=kurumsaljava_370"></center></p>
<p><a href="http://java.sun.com/docs/books/jvms/index.html" target=_blank>Sun sayfalarından PDF olarak edinebilirsiniz.</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Java JVM&#8217;i tam anlamıyla kavramak isteyenler mutlaka bu kitabı okumalı!<span id="more-1109"></span></p>
<p><center><img src="http://image.kurumsaljava.com/storage/image.jsp?ct=image/jpg&#038;d=prod&#038;k=kurumsaljava_370"></center></p>
<p><a href="http://java.sun.com/docs/books/jvms/index.html" target=_blank>Sun sayfalarından PDF olarak edinebilirsiniz.</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F03%2F06%2Fjava-jvmi-java-virtual-machine-anlamak%2F&amp;linkname=Java%20JVM%26%238217%3Bi%20%28Java%20Virtual%20Machine%29%20Anlamak"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/03/06/java-jvmi-java-virtual-machine-anlamak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Dilini Kavramak</title>
		<link>http://www.kurumsaljava.com/2010/03/06/java-dilini-kavramak/</link>
		<comments>http://www.kurumsaljava.com/2010/03/06/java-dilini-kavramak/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 17:52:03 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[Kaynak Kitaplar]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1104</guid>
		<description><![CDATA[<p>Java dilini tam anlamıyla kavramak isteyenler mutlaka bu kitabı okumalı!<span id="more-1104"></span></p>
<p><center><img src="http://image.kurumsaljava.com/storage/image.jsp?ct=image/jpg&#038;d=prod&#038;k=kurumsaljava_368"></center></p>
<p><a href="http://java.sun.com/docs/books/jls/index.html" target=_blank>Sun sayfalarından PDF olarak edinebilirsiniz.</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Java dilini tam anlamıyla kavramak isteyenler mutlaka bu kitabı okumalı!<span id="more-1104"></span></p>
<p><center><img src="http://image.kurumsaljava.com/storage/image.jsp?ct=image/jpg&#038;d=prod&#038;k=kurumsaljava_368"></center></p>
<p><a href="http://java.sun.com/docs/books/jls/index.html" target=_blank>Sun sayfalarından PDF olarak edinebilirsiniz.</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F03%2F06%2Fjava-dilini-kavramak%2F&amp;linkname=Java%20Dilini%20Kavramak"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/03/06/java-dilini-kavramak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Projelerinde Teknik Liderlik Pozisyonu</title>
		<link>http://www.kurumsaljava.com/2010/03/06/java-projelerinde-teknik-liderlik-pozisyonu/</link>
		<comments>http://www.kurumsaljava.com/2010/03/06/java-projelerinde-teknik-liderlik-pozisyonu/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 10:15:25 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1101</guid>
		<description><![CDATA[<p>Türkiye&#8217;de çalışma hayatımı sürdürmek üzere, projelerinde Java kullanan firmalarda teknik takım liderliği, kurumsal mimari ve çevik yazılım süreçlerinin uygulanması sorumluluğuna sahip iş pozisyonları arıyorum. Teklif ve CV için acar(AT)unitedinter.net adresinden bana ulaşabilirsiniz.</p>
<p><span id="more-1101"></span></p>
<p>Özcan Acar<br />
Bilgisayar Mühendisi</p>
<p>Sun Java Champion<br />
Sun Certified Architect (SCEA 5)</p>
<p>http://www.ozcanacar.com</p>
]]></description>
			<content:encoded><![CDATA[<p>Türkiye&#8217;de çalışma hayatımı sürdürmek üzere, projelerinde Java kullanan firmalarda teknik takım liderliği, kurumsal mimari ve çevik yazılım süreçlerinin uygulanması sorumluluğuna sahip iş pozisyonları arıyorum. Teklif ve CV için acar(AT)unitedinter.net adresinden bana ulaşabilirsiniz.</p>
<p><span id="more-1101"></span></p>
<p>Özcan Acar<br />
Bilgisayar Mühendisi</p>
<p>Sun Java Champion<br />
Sun Certified Architect (SCEA 5)</p>
<p>http://www.ozcanacar.com</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F03%2F06%2Fjava-projelerinde-teknik-liderlik-pozisyonu%2F&amp;linkname=Java%20Projelerinde%20Teknik%20Liderlik%20Pozisyonu"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/03/06/java-projelerinde-teknik-liderlik-pozisyonu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java&#8217;da Finalizer Metodu</title>
		<link>http://www.kurumsaljava.com/2010/02/23/javada-finalizer-metodu/</link>
		<comments>http://www.kurumsaljava.com/2010/02/23/javada-finalizer-metodu/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 11:39:23 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[Püf Noktası]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1098</guid>
		<description><![CDATA[<p>Java_tr grubunda aşağıdaki yer alan soru soruldu. Bu soru ve benim bu konudaki düşüncelerim aşağıda yer almaktadır.</p>
<p><i>Java&#8217;da bulmaca sevenlere; Aşağıda ki kod parçası için çıktı ne olur,<br />
&#8220;finalized&#8221; yazar mı? Constructor&#8217;ýnda exception fırlatmış bir nesnenin<br />
finalize işleminden geçmesini bekler misiniz?<br />
</i></p>
<pre name="code" class="java">

public class FinalizerTest {

&lt;span id=&quot;more-1098&quot;&gt;&lt;/span&gt;

  public FinalizerTest() {
    System.out.println(&quot;constructed&quot;);
    throw new RuntimeException();
  }

  protected void finalize() throws Throwable {
    System.out.println(&quot;finalized&quot;);
  }

  public static void main(String[] args) {
    try {
      new FinalizerTest();
    } catch (Exception e) {
      System.out.println(&quot;exception&quot;);
    }
    System.gc();
  }
}
</pre>
<p>Benim verdiğim cevap şu şekildedir:</p>
<p><i><br />
Java&#8217;da <i>finalize()</i> kullanılması doğru değildir, çünkü JVM&#8217;in finalize metodunu ne zaman koşturacağını kestirmek mümkün değildir. Buna güvenerek örneğin finalize() içinde kullanılan kaynakları serbest bırakmak yapılabilecek en büyük hatalardan birisidir. Pratikte finalize() metodu kesinlikle kullanmamalıdır. Finalizer kullanımı performansı düşürür. Finalizer ile nesnenin yok edilmesi daha uzun zaman alır. Finalize yerine bir terminasyon metodu kullanılmalıdır. <i>gc()</i> metodunun kullanımı da GC nin hemen devreye gireceği garantisini vermez.</p>
<p>Yukarıda yer alan programın konstruktöründe try catch ile hata yakalanarak, daha önce bahsettiğim terminasyon metodu (örneğin <i>myExit()</i>)  koşturulmalıdır.<br />
</i></p>
<p><i><br />
EOF ( End Of Fun)<br />
Özcan Acar<br />
</i></p>
]]></description>
			<content:encoded><![CDATA[<p>Java_tr grubunda aşağıdaki yer alan soru soruldu. Bu soru ve benim bu konudaki düşüncelerim aşağıda yer almaktadır.</p>
<p><i>Java&#8217;da bulmaca sevenlere; Aşağıda ki kod parçası için çıktı ne olur,<br />
&#8220;finalized&#8221; yazar mı? Constructor&#8217;ýnda exception fırlatmış bir nesnenin<br />
finalize işleminden geçmesini bekler misiniz?<br />
</i></p>
<pre name="code" class="java">

public class FinalizerTest {

&lt;span id=&quot;more-1098&quot;&gt;&lt;/span&gt;

  public FinalizerTest() {
    System.out.println(&quot;constructed&quot;);
    throw new RuntimeException();
  }

  protected void finalize() throws Throwable {
    System.out.println(&quot;finalized&quot;);
  }

  public static void main(String[] args) {
    try {
      new FinalizerTest();
    } catch (Exception e) {
      System.out.println(&quot;exception&quot;);
    }
    System.gc();
  }
}
</pre>
<p>Benim verdiğim cevap şu şekildedir:</p>
<p><i><br />
Java&#8217;da <i>finalize()</i> kullanılması doğru değildir, çünkü JVM&#8217;in finalize metodunu ne zaman koşturacağını kestirmek mümkün değildir. Buna güvenerek örneğin finalize() içinde kullanılan kaynakları serbest bırakmak yapılabilecek en büyük hatalardan birisidir. Pratikte finalize() metodu kesinlikle kullanmamalıdır. Finalizer kullanımı performansı düşürür. Finalizer ile nesnenin yok edilmesi daha uzun zaman alır. Finalize yerine bir terminasyon metodu kullanılmalıdır. <i>gc()</i> metodunun kullanımı da GC nin hemen devreye gireceği garantisini vermez.</p>
<p>Yukarıda yer alan programın konstruktöründe try catch ile hata yakalanarak, daha önce bahsettiğim terminasyon metodu (örneğin <i>myExit()</i>)  koşturulmalıdır.<br />
</i></p>
<p><i><br />
EOF ( End Of Fun)<br />
Özcan Acar<br />
</i></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F02%2F23%2Fjavada-finalizer-metodu%2F&amp;linkname=Java%26%238217%3Bda%20Finalizer%20Metodu"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/02/23/javada-finalizer-metodu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Java&#8217;da Final Anahtar Kelimesi</title>
		<link>http://www.kurumsaljava.com/2010/02/18/javada-final-anahtar-kelimesi/</link>
		<comments>http://www.kurumsaljava.com/2010/02/18/javada-final-anahtar-kelimesi/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 23:21:14 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[Püf Noktası]]></category>
		<category><![CDATA[Final]]></category>
		<category><![CDATA[Java Keyword]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1093</guid>
		<description><![CDATA[<p>Java&#8217;da <b>final</b> anahtar kelimesi aşağıda yer alan yapılar için kullanılabilir:</p>
<ul>
<li><b>Final sınıf değişkenleri</b>: Final olan bir sınıf değişkenine sadece bir kere değer ataması yapilabilir ve bu atama sadece sınıf konstrüktöründe gerçekleşebilir.</li>
<li><b>Final metot parametreleri</b>: Final olarak tanımlanmış bir metot parametresine sadece bir kere değer atanabilir. Metot parametrelerinin tamamen final olarak tanımlamış olmalarında büyük fayda vardır. Bu şekilde parametrenin metot bünyesinde değişikliğe ugrama tehlikesi ortadan kaldırılmış olur.</li>
<li><b>Final metotlar</b>: Final olan bir metot ne alt sınıflarca yeniden yüklenebilir (method overloading) ne de saklı (hidden) tutulabilir.</li>
<li><b>Final sınıflar</b>: Final olan bir sınıf genişletilerek bir alt sınıf oluşturulamaz.</li>
</ul>
<p><span id="more-1093"></span></p>
<p>Final anahtar kelimesi Java programcılığında en çok göz ardı edilenlerdendir. En son siz ne zaman final anahtar kelimesini kullandınız?<br />
Final anahtar kelimesi programın daha doğru, hatalara dayanıklı ve performanslı çalışmasını sağlar.</p>
<p>Final anahtar kelimesinin kullanımında yapılan en büyük hatalardan birisi final static olarak tanımlanmış olan bir sınıf değişkenine değistirilebilir bir değerin atanmasıdır. Örneğin aşağıdaki tanımlama yanlıştır, çünkü static değişken final olmasına rağmen, bu değişkene atanan değer, kullanıcı tarafından değiştirilebilir.</p>
<pre name="code" class="java">

public class App
{
    public static final String[] LIST = {&quot;1&quot;,&quot;2&quot;,&quot;3&quot;};

    public static void main(String[] args)
    {
	String[] list = App.LIST;
	list[0] = &quot;2&quot;;
	System.out.println(App.LIST[0]);
    }
}
</pre>
<p>Yukarda yer alan main() metodunda final olan LIST degiskeninin ihtiva ettiği array değiştirilmektedir. Bu sorunu ortadan kaldırmak için LIST değişkeni private yapılabilir ve bu değişkeni baz alarak içeriğinin değiştirilemeyeceği bir array değerini geri döndüren metot oluşturulabilir. Bunun bir örneği aşağıda yer almaktadır:</p>
<pre name="code" class="java">

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class App
{
    private static final String[] LIST = {&quot;1&quot;,&quot;2&quot;,&quot;3&quot;};

    public static final List&lt;String&gt; getList()
    {
	return Collections.unmodifiableList(Arrays.asList(App.LIST));
    }

    public static void main(String[] args)
    {
	List&lt;String&gt; list = App.getList();
	list.remove(0);
	System.out.println(list);
    }
}
</pre>
<p>Bu program koşturulduğunda alınacak hata şu şekildedır:</p>
<p><b><br />
Exception in thread &#8220;main&#8221; java.lang.UnsupportedOperationException<br />
	at java.util.Collections$UnmodifiableList.remove(Collections.java:1162)<br />
	at test.App.main(App.java:22)<br />
</b></p>
<p>Bu şekilde final olarak tanımladığımız LIST değişkenin ihtiva ettiği değerleri üzerinde oynama yapmak mümkün değildir. getList() metodu bünyesinde Collections.unmodifiableList() ile içeriğinin değiştirilmesi mümkün olmayan bir liste oluşturulmaktadır.</p>
<p><i><br />
EOF ( End Of Fun)<br />
Özcan Acar<br />
</i></p>
]]></description>
			<content:encoded><![CDATA[<p>Java&#8217;da <b>final</b> anahtar kelimesi aşağıda yer alan yapılar için kullanılabilir:</p>
<ul>
<li><b>Final sınıf değişkenleri</b>: Final olan bir sınıf değişkenine sadece bir kere değer ataması yapilabilir ve bu atama sadece sınıf konstrüktöründe gerçekleşebilir.</li>
<li><b>Final metot parametreleri</b>: Final olarak tanımlanmış bir metot parametresine sadece bir kere değer atanabilir. Metot parametrelerinin tamamen final olarak tanımlamış olmalarında büyük fayda vardır. Bu şekilde parametrenin metot bünyesinde değişikliğe ugrama tehlikesi ortadan kaldırılmış olur.</li>
<li><b>Final metotlar</b>: Final olan bir metot ne alt sınıflarca yeniden yüklenebilir (method overloading) ne de saklı (hidden) tutulabilir.</li>
<li><b>Final sınıflar</b>: Final olan bir sınıf genişletilerek bir alt sınıf oluşturulamaz.</li>
</ul>
<p><span id="more-1093"></span></p>
<p>Final anahtar kelimesi Java programcılığında en çok göz ardı edilenlerdendir. En son siz ne zaman final anahtar kelimesini kullandınız?<br />
Final anahtar kelimesi programın daha doğru, hatalara dayanıklı ve performanslı çalışmasını sağlar.</p>
<p>Final anahtar kelimesinin kullanımında yapılan en büyük hatalardan birisi final static olarak tanımlanmış olan bir sınıf değişkenine değistirilebilir bir değerin atanmasıdır. Örneğin aşağıdaki tanımlama yanlıştır, çünkü static değişken final olmasına rağmen, bu değişkene atanan değer, kullanıcı tarafından değiştirilebilir.</p>
<pre name="code" class="java">

public class App
{
    public static final String[] LIST = {&quot;1&quot;,&quot;2&quot;,&quot;3&quot;};

    public static void main(String[] args)
    {
	String[] list = App.LIST;
	list[0] = &quot;2&quot;;
	System.out.println(App.LIST[0]);
    }
}
</pre>
<p>Yukarda yer alan main() metodunda final olan LIST degiskeninin ihtiva ettiği array değiştirilmektedir. Bu sorunu ortadan kaldırmak için LIST değişkeni private yapılabilir ve bu değişkeni baz alarak içeriğinin değiştirilemeyeceği bir array değerini geri döndüren metot oluşturulabilir. Bunun bir örneği aşağıda yer almaktadır:</p>
<pre name="code" class="java">

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class App
{
    private static final String[] LIST = {&quot;1&quot;,&quot;2&quot;,&quot;3&quot;};

    public static final List&lt;String&gt; getList()
    {
	return Collections.unmodifiableList(Arrays.asList(App.LIST));
    }

    public static void main(String[] args)
    {
	List&lt;String&gt; list = App.getList();
	list.remove(0);
	System.out.println(list);
    }
}
</pre>
<p>Bu program koşturulduğunda alınacak hata şu şekildedır:</p>
<p><b><br />
Exception in thread &#8220;main&#8221; java.lang.UnsupportedOperationException<br />
	at java.util.Collections$UnmodifiableList.remove(Collections.java:1162)<br />
	at test.App.main(App.java:22)<br />
</b></p>
<p>Bu şekilde final olarak tanımladığımız LIST değişkenin ihtiva ettiği değerleri üzerinde oynama yapmak mümkün değildir. getList() metodu bünyesinde Collections.unmodifiableList() ile içeriğinin değiştirilmesi mümkün olmayan bir liste oluşturulmaktadır.</p>
<p><i><br />
EOF ( End Of Fun)<br />
Özcan Acar<br />
</i></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F02%2F18%2Fjavada-final-anahtar-kelimesi%2F&amp;linkname=Java%26%238217%3Bda%20Final%20Anahtar%20Kelimesi"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/02/18/javada-final-anahtar-kelimesi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java Dergisi</title>
		<link>http://www.kurumsaljava.com/2010/02/07/java-dergisi/</link>
		<comments>http://www.kurumsaljava.com/2010/02/07/java-dergisi/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 15:21:07 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[Haberler]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1084</guid>
		<description><![CDATA[<p>Türkiye&#8217;nin ilk <a href="http://www.javadergisi.com" target=_blank>Java Dergisi</a> yakında yayın hayatına başlayacak. </p>
<p><span id="more-1084"></span><br />
<center><img src="http://image.kurumsaljava.com/storage/image.jsp?ct=image/jpg&#038;d=prod&#038;k=kurumsaljava_366"/></center></p>
<p>Java konusunda uzman yazarlar arıyoruz. Detaylı bilgi ve yazarlık yapmak için lütfen bizimle <a href="http://www.kurumsaljava.com/iletisim/">iletişime</a> geçiniz.</p>
<h3>Java Dergisi Okur Grubu</h3>
<p>Dergi hakk&#305;ndaki geli&#351;meleri takip etmek, konu ba&#351;l&#305;klar&#305; &ouml;nermek ve i&ccedil;eri&#287;i tart&#305;&#351;mak i&ccedil;in olu&#351;turulan <a href="http://groups.google.de/group/java-dergisi-okurlari?hl=tr">gruba</a> &uuml;ye olabilirsiniz.<br />
<a href="http://groups.google.de/group/java-dergisi-okurlari?hl=tr">http://groups.google.de/group/java-dergisi-okurlari?hl=tr</a></p>
<h3>Twitter</h3>
<p><a href="http://twitter.com/JavaDergisi">http://twitter.com/JavaDergisi</a></p>
<h3>FriendFeed</h3>
<p><a href="http://friendfeed.com/javadergisi">http://friendfeed.com/javadergisi</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Türkiye&#8217;nin ilk <a href="http://www.javadergisi.com" target=_blank>Java Dergisi</a> yakında yayın hayatına başlayacak. </p>
<p><span id="more-1084"></span><br />
<center><img src="http://image.kurumsaljava.com/storage/image.jsp?ct=image/jpg&#038;d=prod&#038;k=kurumsaljava_366"/></center></p>
<p>Java konusunda uzman yazarlar arıyoruz. Detaylı bilgi ve yazarlık yapmak için lütfen bizimle <a href="http://www.kurumsaljava.com/iletisim/">iletişime</a> geçiniz.</p>
<h3>Java Dergisi Okur Grubu</h3>
<p>Dergi hakk&#305;ndaki geli&#351;meleri takip etmek, konu ba&#351;l&#305;klar&#305; &ouml;nermek ve i&ccedil;eri&#287;i tart&#305;&#351;mak i&ccedil;in olu&#351;turulan <a href="http://groups.google.de/group/java-dergisi-okurlari?hl=tr">gruba</a> &uuml;ye olabilirsiniz.<br />
<a href="http://groups.google.de/group/java-dergisi-okurlari?hl=tr">http://groups.google.de/group/java-dergisi-okurlari?hl=tr</a></p>
<h3>Twitter</h3>
<p><a href="http://twitter.com/JavaDergisi">http://twitter.com/JavaDergisi</a></p>
<h3>FriendFeed</h3>
<p><a href="http://friendfeed.com/javadergisi">http://friendfeed.com/javadergisi</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F02%2F07%2Fjava-dergisi%2F&amp;linkname=Java%20Dergisi"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/02/07/java-dergisi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Covariant Return Types</title>
		<link>http://www.kurumsaljava.com/2010/02/06/covariant-return-types/</link>
		<comments>http://www.kurumsaljava.com/2010/02/06/covariant-return-types/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 10:22:21 +0000</pubDate>
		<dc:creator>acar</dc:creator>
				<category><![CDATA[Püf Noktası]]></category>
		<category><![CDATA[Covariant Return Type]]></category>

		<guid isPermaLink="false">http://www.kurumsaljava.com/?p=1078</guid>
		<description><![CDATA[<p>Java 1.5 ile kullanıma sunulan ve <strong>covariant return type</strong> ismini taşıyan bir yapı mevcuttur. Java 1.5 öncesi bir alt sınıf, bir üst sınıfın sahip olduğu metodu yeniden implemente etmek (method overriding) istediginde, bu metodun geri döndürdüğü veri tipinin, üst sınıftaki metot ile aynı olması gerekmekteydi. Bunun bir örneği aşağıda yer almaktadır.</p>
<p><span id="more-1078"></span></p>
<pre name="code" class="java">

package test.controller;

import java.util.Map;

import test.criteria.Criteria;

public abstract class AbstractController implements Controller
{
    public void executeFilter()
    {
	Map&lt;String, String&gt; map = createCriteria().getCriteriaMap();

    }

    public abstract Criteria createCriteria();
}
</pre>
<p>Soyut (abstract) olan <i>AbstractController</i> sınıfı bünyesinde, alt sınıflarda implemente edilmek üzere <i>createCriteria()</i> isminde bir metot tanımlıyoruz. <i>AccountTableController</i> sınıfı bu metodu implemente etmektedir.</p>
<pre name="code" class="java">

package test.controller;

import java.util.HashMap;
import java.util.Map;

import test.criteria.MyCriteria;
import test.model.Konto;

public class AccountTableController extends AbstractController
{
    private Account model = new Account();

    public Criteria createCriteria()
    {
	Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
	map.put(&quot;kontonr&quot;, model.getKontonr());
	map.put(&quot;blz&quot;, model.getBlz());
	return new Criteria(map);
    }
}
</pre>
<p>Görüldüğü gibi <i>AccountTableController.createCriteria()</i> metodu <i>Criteria</i> tipinde bir degeri geri döndürmektedir. Bu metodun geri döndürdüğü değerin Java 1.5 öncesi <i>Criteria</i> tipinde olması gerekmektedir, çünkü üst sınıfta tanımlanmış olan bu metodun, üst sınıf bünyesinde geri döndürdüğü değer <i>Criteria</i> tipindedir.</p>
<p>Java 1.5 ile bu durum değişmiştir. Üst sınıfta yer alan bir metot alt sınıfta tekrar reimplement edilirse (method overriding), reimplemente edilen metodun geri döndürdüğü değerin tipi, üst sınıftaki metodun geri döndürdüğü sınıfın bir alt sınıfı olabilir. Bunun bir örneği aşağıda yer almaktadır.</p>
<pre name="code" class="java">

package test.controller;

import java.util.HashMap;
import java.util.Map;

import test.criteria.MyCriteria;
import test.model.Konto;

public class AccountTableController extends AbstractController
{
    private Account model = new Account();

    @Override
    public MyCriteria createCriteria()
    {
	Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
	map.put(&quot;kontonr&quot;, model.getKontonr());
	map.put(&quot;blz&quot;, model.getBlz());
	return new MyCriteria(map);
    }
}
</pre>
<p><i>MyCriteria</i>, <i>Criteria</i> sınıfının bir alt sınıfıdır ve <i>AccountTableController</i> sınıfı implemente ettiği <i>createCriteria()</i> metodunun <i>MyCriteria</i> tipinde bir değeri geri döndürmesi sağlamıştır. Bu şekilde cast işlemi yapılmadan alt sınıfların daha zengin tipte verileri geri döndürebilmeleri amaçlanmaktadır.</p>
<p><i><br />
EOF ( End Of Fun)<br />
Özcan Acar</i></p>
]]></description>
			<content:encoded><![CDATA[<p>Java 1.5 ile kullanıma sunulan ve <strong>covariant return type</strong> ismini taşıyan bir yapı mevcuttur. Java 1.5 öncesi bir alt sınıf, bir üst sınıfın sahip olduğu metodu yeniden implemente etmek (method overriding) istediginde, bu metodun geri döndürdüğü veri tipinin, üst sınıftaki metot ile aynı olması gerekmekteydi. Bunun bir örneği aşağıda yer almaktadır.</p>
<p><span id="more-1078"></span></p>
<pre name="code" class="java">

package test.controller;

import java.util.Map;

import test.criteria.Criteria;

public abstract class AbstractController implements Controller
{
    public void executeFilter()
    {
	Map&lt;String, String&gt; map = createCriteria().getCriteriaMap();

    }

    public abstract Criteria createCriteria();
}
</pre>
<p>Soyut (abstract) olan <i>AbstractController</i> sınıfı bünyesinde, alt sınıflarda implemente edilmek üzere <i>createCriteria()</i> isminde bir metot tanımlıyoruz. <i>AccountTableController</i> sınıfı bu metodu implemente etmektedir.</p>
<pre name="code" class="java">

package test.controller;

import java.util.HashMap;
import java.util.Map;

import test.criteria.MyCriteria;
import test.model.Konto;

public class AccountTableController extends AbstractController
{
    private Account model = new Account();

    public Criteria createCriteria()
    {
	Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
	map.put(&quot;kontonr&quot;, model.getKontonr());
	map.put(&quot;blz&quot;, model.getBlz());
	return new Criteria(map);
    }
}
</pre>
<p>Görüldüğü gibi <i>AccountTableController.createCriteria()</i> metodu <i>Criteria</i> tipinde bir degeri geri döndürmektedir. Bu metodun geri döndürdüğü değerin Java 1.5 öncesi <i>Criteria</i> tipinde olması gerekmektedir, çünkü üst sınıfta tanımlanmış olan bu metodun, üst sınıf bünyesinde geri döndürdüğü değer <i>Criteria</i> tipindedir.</p>
<p>Java 1.5 ile bu durum değişmiştir. Üst sınıfta yer alan bir metot alt sınıfta tekrar reimplement edilirse (method overriding), reimplemente edilen metodun geri döndürdüğü değerin tipi, üst sınıftaki metodun geri döndürdüğü sınıfın bir alt sınıfı olabilir. Bunun bir örneği aşağıda yer almaktadır.</p>
<pre name="code" class="java">

package test.controller;

import java.util.HashMap;
import java.util.Map;

import test.criteria.MyCriteria;
import test.model.Konto;

public class AccountTableController extends AbstractController
{
    private Account model = new Account();

    @Override
    public MyCriteria createCriteria()
    {
	Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
	map.put(&quot;kontonr&quot;, model.getKontonr());
	map.put(&quot;blz&quot;, model.getBlz());
	return new MyCriteria(map);
    }
}
</pre>
<p><i>MyCriteria</i>, <i>Criteria</i> sınıfının bir alt sınıfıdır ve <i>AccountTableController</i> sınıfı implemente ettiği <i>createCriteria()</i> metodunun <i>MyCriteria</i> tipinde bir değeri geri döndürmesi sağlamıştır. Bu şekilde cast işlemi yapılmadan alt sınıfların daha zengin tipte verileri geri döndürebilmeleri amaçlanmaktadır.</p>
<p><i><br />
EOF ( End Of Fun)<br />
Özcan Acar</i></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.kurumsaljava.com%2F2010%2F02%2F06%2Fcovariant-return-types%2F&amp;linkname=Covariant%20Return%20Types"><img src="http://www.kurumsaljava.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.kurumsaljava.com/2010/02/06/covariant-return-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
