<?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"
	>

<channel>
	<title>javaci.net</title>
	<atom:link href="http://www.javaci.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.javaci.net</link>
	<description>J2SE vs J2EE, Java Teknolojileri</description>
	<pubDate>Sat, 26 Jul 2008 18:47:22 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>BlueJ</title>
		<link>http://www.javaci.net/2008/07/26/bluej/</link>
		<comments>http://www.javaci.net/2008/07/26/bluej/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 18:47:22 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Diğer]]></category>

		<category><![CDATA[bluej]]></category>

		<category><![CDATA[editor]]></category>

		<category><![CDATA[ide]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=238</guid>
		<description><![CDATA[
BlueJ Java&#8217;ya yeni başlayanlar için basit geliştirmeler yapabileceğiniz bir Java geliştirme ortamıdır. BlueJ sayesinde hem kodunuzu compile edip çalıştırabilir hem de sınıfları kendi içerisinde bulunan UML gösterici sayesinde Object Oriented mantığı daha iyi anlayabilirsiniz.
BlueJ, birden fazla üniversitenin bir araya gelerek Object Oriented mantığı Java&#8217;ya yeni başlayanlara daha çabuk öğretmek amacıyla geliştirilmiştir.

BlueJ Java ile yazıldığı için [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bluej.org/images/decor/logo-line.jpg" align="left"/><br />
<a href="http://www.bluej.org/" target="_blank">BlueJ</a> Java&#8217;ya yeni başlayanlar için basit geliştirmeler yapabileceğiniz bir Java geliştirme ortamıdır. BlueJ sayesinde hem kodunuzu compile edip çalıştırabilir hem de sınıfları kendi içerisinde bulunan UML gösterici sayesinde Object Oriented mantığı daha iyi anlayabilirsiniz.</p>
<p>BlueJ, birden fazla üniversitenin bir araya gelerek Object Oriented mantığı Java&#8217;ya yeni başlayanlara daha çabuk öğretmek amacıyla geliştirilmiştir.</p>
<p><img src="http://www.bluej.org/images/screenshots/screen-small.jpg" align="center" /></p>
<p>BlueJ Java ile yazıldığı için tüm sistemlerde çalışmaktadır. Tek yapmanız gereken <a href="http://www.bluej.org/download/download.html" target="_blank">http://www.bluej.org/download/download.html</a> adresinden kendi sisteminize uygun versiyonu indirip çift tıklamak.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/07/26/bluej/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ekran Görüntüsü Alma</title>
		<link>http://www.javaci.net/2008/07/21/masaustu-resmini-alma/</link>
		<comments>http://www.javaci.net/2008/07/21/masaustu-resmini-alma/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 19:13:24 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Kod]]></category>

		<category><![CDATA[ekran]]></category>

		<category><![CDATA[görüntüsü]]></category>

		<category><![CDATA[image]]></category>

		<category><![CDATA[screenshot]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=237</guid>
		<description><![CDATA[Aşağıdaki kodu kullanarak kolayca bilgisayarınızın ekran görüntüsünü alabilirsiniz.

import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
import java.awt.*;
import java.awt.image.BufferedImage;
&#160;
/**
 * Javaci.Net
 *
 * @user: ekocaman
 */
public class ScreenShot &#123;
     public static void main&#40;String&#91;&#93; args&#41; &#123;
        try &#123;
            // ekran [...]]]></description>
			<content:encoded><![CDATA[<p>Aşağıdaki kodu kullanarak kolayca bilgisayarınızın ekran görüntüsünü alabilirsiniz.</p>

<div class="wp_syntax"><div class="code"><pre class="java"><span style="color: #a1a100;">import javax.imageio.ImageIO;</span>
<span style="color: #a1a100;">import java.io.File;</span>
<span style="color: #a1a100;">import java.io.IOException;</span>
<span style="color: #a1a100;">import java.awt.*;</span>
<span style="color: #a1a100;">import java.awt.image.BufferedImage;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**
 * Javaci.Net
 *
 * @user: ekocaman
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ScreenShot <span style="color: #66cc66;">&#123;</span>
     <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">String</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> args<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #66cc66;">&#123;</span>
            <span style="color: #808080; font-style: italic;">// ekran boyutlarını alalım</span>
            <span style="color: #aaaadd; font-weight: bold;">Dimension</span> d = <span style="color: #aaaadd; font-weight: bold;">Toolkit</span>.<span style="color: #006600;">getDefaultToolkit</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">getScreenSize</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
            <span style="color: #993333;">int</span> width = <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span><span style="color: #66cc66;">&#41;</span>d.<span style="color: #006600;">getWidth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
            <span style="color: #993333;">int</span> height = <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span><span style="color: #66cc66;">&#41;</span>d.<span style="color: #006600;">getHeight</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
            <span style="color: #aaaadd; font-weight: bold;">Rectangle</span> rect = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">Rectangle</span><span style="color: #66cc66;">&#40;</span>width, height<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
            <span style="color: #aaaadd; font-weight: bold;">Robot</span> robot = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">Robot</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
            <span style="color: #808080; font-style: italic;">// ekran görüntüsünü alalım</span>
            <span style="color: #aaaadd; font-weight: bold;">BufferedImage</span> bi = robot.<span style="color: #006600;">createScreenCapture</span><span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
            <span style="color: #808080; font-style: italic;">// bu görüntüyü Jpg olarak kayıt edelim</span>
            ImageIO.<span style="color: #006600;">write</span><span style="color: #66cc66;">&#40;</span>bi, <span style="color: #ff0000;">&quot;jpg&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">File</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;/home/ekocaman/screenshot.jpg&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">AWTException</span> e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            e.<span style="color: #006600;">printStackTrace</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">IOException</span> e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            e.<span style="color: #006600;">printStackTrace</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/07/21/masaustu-resmini-alma/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java&#8217;da Browser Açmak</title>
		<link>http://www.javaci.net/2008/06/11/javada-browser-acmak/</link>
		<comments>http://www.javaci.net/2008/06/11/javada-browser-acmak/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 12:27:28 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Kod]]></category>

		<category><![CDATA[browser]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=236</guid>
		<description><![CDATA[Java&#8217;da yazdığımız bazı Desktop Application&#8217;larda web sayfası açma ihtiyacı duyarız. Bunu aşağıdaki kod ile kolayca yapabiliriz.

String url = &#34;http://www.javaci.net&#34;;
Runtime rt = Runtime.getRuntime&#40;&#41;;
String&#91;&#93; browsers = &#123; &#34;explorer&#34;, &#34;epiphany&#34;, 
                      &#34;firefox&#34;, &#34;mozilla&#34;, &#34;konqueror&#34;,
    [...]]]></description>
			<content:encoded><![CDATA[<p>Java&#8217;da yazdığımız bazı Desktop Application&#8217;larda web sayfası açma ihtiyacı duyarız. Bunu aşağıdaki kod ile kolayca yapabiliriz.</p>

<div class="wp_syntax"><div class="code"><pre class="java"><span style="color: #aaaadd; font-weight: bold;">String</span> url = <span style="color: #ff0000;">&quot;http://www.javaci.net&quot;</span><span style="color: #66cc66;">;</span>
<span style="color: #aaaadd; font-weight: bold;">Runtime</span> rt = <span style="color: #aaaadd; font-weight: bold;">Runtime</span>.<span style="color: #006600;">getRuntime</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
<span style="color: #aaaadd; font-weight: bold;">String</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> browsers = <span style="color: #66cc66;">&#123;</span> <span style="color: #ff0000;">&quot;explorer&quot;</span>, <span style="color: #ff0000;">&quot;epiphany&quot;</span>, 
                      <span style="color: #ff0000;">&quot;firefox&quot;</span>, <span style="color: #ff0000;">&quot;mozilla&quot;</span>, <span style="color: #ff0000;">&quot;konqueror&quot;</span>,
                      <span style="color: #ff0000;">&quot;netscape&quot;</span>, <span style="color: #ff0000;">&quot;opera&quot;</span>, <span style="color: #ff0000;">&quot;links&quot;</span>, <span style="color: #ff0000;">&quot;lynx&quot;</span> <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span> i = <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">;</span> i <span style="color: #66cc66;">&lt;</span> browsers.<span style="color: #006600;">length</span><span style="color: #66cc66;">;</span> i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #66cc66;">&#123;</span>
       <span style="color: #808080; font-style: italic;">// linux ve unix için</span>
       rt.<span style="color: #006600;">exec</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">String</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #ff0000;">&quot;sh&quot;</span>, <span style="color: #ff0000;">&quot;-c&quot;</span>, browsers<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>+<span style="color: #ff0000;">&quot;  <span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span>+url+<span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
       <span style="color: #808080; font-style: italic;">// windows için</span>
       rt.<span style="color: #006600;">exec</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">String</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#123;</span> browsers<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>, url <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
       <span style="color: #808080; font-style: italic;">// Yukarıdaki kodlardan sadece biri kullanılmalıdır</span>
   <span style="color: #66cc66;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">Exception</span> e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/06/11/javada-browser-acmak/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Erciyes Üniversitesi Linux Topluluğu</title>
		<link>http://www.javaci.net/2008/06/11/erciyes-universitesi-linux-toplulugu/</link>
		<comments>http://www.javaci.net/2008/06/11/erciyes-universitesi-linux-toplulugu/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 06:51:04 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Diğer]]></category>

		<category><![CDATA[download]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[pardus]]></category>

		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=234</guid>
		<description><![CDATA[Erciyes Üniversitesi Linux Topluluğu&#8217;nun 2 ayda bir yayımladığı Erciyes Linux Dergisine bakma fırsatını buldum. Şu an 3. sayısına ulaşmış durumda. Beni en çok sevindiren şey ise bu dergide Java&#8217;yı da yer alması ve Eclipse ile Java&#8217;nın sade bir şekilde okurlarına anlatması.
Eğer siz de Pardus kullanarak Java&#8217;ya başlangıç yapmak istiyorsanız bu dergiler işinize yarayacaktır.
Note: There is [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.javaci.net/wp-content/uploads/2008/06/banner.jpg'><img src="http://www.javaci.net/wp-content/uploads/2008/06/banner-300x71.jpg" alt="" title="banner" width="300" height="71" class="size-medium wp-image-235" align="left" /></a>Erciyes Üniversitesi Linux Topluluğu&#8217;nun 2 ayda bir yayımladığı <a href="http://pardus.erciyes.edu.tr" target="_blank">Erciyes Linux Dergisi</a>ne bakma fırsatını buldum. Şu an 3. sayısına ulaşmış durumda. Beni en çok sevindiren şey ise bu dergide Java&#8217;yı da yer alması ve Eclipse ile Java&#8217;nın sade bir şekilde okurlarına anlatması.</p>
<p>Eğer siz de Pardus kullanarak Java&#8217;ya başlangıç yapmak istiyorsanız bu dergiler işinize yarayacaktır.</p>
<p>Note: There is a file embedded within this post, please visit this post to download the file.<br />
Note: There is a file embedded within this post, please visit this post to download the file.<br />
Note: There is a file embedded within this post, please visit this post to download the file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/06/11/erciyes-universitesi-linux-toplulugu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eclipse ile Web Geliştirme - 1</title>
		<link>http://www.javaci.net/2008/06/10/eclipse-ile-web-gelistirme-1/</link>
		<comments>http://www.javaci.net/2008/06/10/eclipse-ile-web-gelistirme-1/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 11:43:47 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Dersler]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[jsp]]></category>

		<category><![CDATA[servlet]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=208</guid>
		<description><![CDATA[Eclipse Java dünyasında en çok kullanılan Open Source IDE&#8217;lerden biridir. Java&#8217;da Web geliştirmek için de biz bu aracı kullanacağız. Java&#8217;da Web geliştirmeyi kolaylaştırmak için Eclipse&#8217;in özel bir plugin var. İster bu plugin kendi Eclipse&#8217;iniz üzerine kurabilir yada Eclipse&#8217;i bu plugini kurulu halde indirebilirsiniz.

WTP = Web Tools Platform
Eğer update yapıp WTP&#8217;yi kurmak istiyorsanız tek yapmanız gereken
http://download.eclipse.org/webtools/updates/
adresini [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.eclipse.org/" target="_blank">Eclipse</a> Java dünyasında en çok kullanılan Open Source IDE&#8217;lerden biridir. Java&#8217;da Web geliştirmek için de biz bu aracı kullanacağız. Java&#8217;da Web geliştirmeyi kolaylaştırmak için Eclipse&#8217;in özel bir plugin var. İster bu plugin kendi Eclipse&#8217;iniz üzerine kurabilir yada Eclipse&#8217;i bu plugini kurulu halde indirebilirsiniz.</p>
<p><img src="http://download.eclipse.org/webtools/commonPages/wtplogonarrow.jpg" align="left" /><br />
WTP = Web Tools Platform<br />
Eğer update yapıp WTP&#8217;yi kurmak istiyorsanız tek yapmanız gereken<br />
<a href="http://download.eclipse.org/webtools/updates/" target="_blank">http://download.eclipse.org/webtools/updates/</a><br />
adresini kullanarak Eclipse Update yapmanız.</p>
<p><a href="http://download.eclipse.org/webtools/downloads/" target="_blank">http://download.eclipse.org/webtools/downloads/</a><br />
Adresinden  kendi makinanıza uygun WTP kurulu Eclipse&#8217;leri indirebilirsiniz.</p>
<p><strong>NOT:</strong> <em>Aşağıdaki süreçlere devam edebilmeniz için bilgisayarınızda Java&#8217;nın ve <a href="http://tomcat.apache.org" target="_blank">Tomcat</a>&#8216;in kurulu olması gerekiyor.</em></p>
<p><strong>1.</strong> Eclipse&#8217;i çalıştıralım.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/1.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/1-300x158.png" alt="" title="1" width="300" height="158" class="aligncenter size-medium wp-image-209" /></a></p>
<p><strong>2.</strong> Yeni bir proje oluşturalım.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/2.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/2-300x157.png" alt="" title="2" width="300" height="157" class="aligncenter size-medium wp-image-210" /></a></p>
<p><strong>3.</strong> Dinamik olarak web projesi oluşturmayı seçelim.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/3.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/3-300x285.png" alt="" title="3" width="300" height="285" class="aligncenter size-medium wp-image-211" /></a></p>
<p>4. Burada projemizin ismini <strong>JavaciWeb</strong> girelim.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/4.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/4-300x208.png" alt="" title="4" width="300" height="208" class="aligncenter size-medium wp-image-212" /></a></p>
<p><strong>5.</strong> <strong>Target Runtime</strong> seçmek için <strong>More</strong> düğmesine tıklayalım.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/5.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/5-300x208.png" alt="" title="5" width="300" height="208" class="aligncenter size-medium wp-image-213" /></a></p>
<p><strong>6.</strong> Tomcat&#8217;in kurulu olduğu klasörü seçelim.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/6.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/6-297x300.png" alt="" title="6" width="297" height="300" class="aligncenter size-medium wp-image-214" /></a></p>
<p><strong>7. </strong>Eclipse otomatik olarak Tomcat kütüphanelerini tanıyacaktır. Kurulumu tamamlayalım.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/7.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/7-297x300.png" alt="" title="7" width="297" height="300" class="aligncenter size-medium wp-image-215" /></a></p>
<p><strong>8.</strong> Bir önceki adımda oluşturduğumuz Tomcat&#8217;i seçelim.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/8.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/8-300x208.png" alt="" title="8" width="300" height="208" class="aligncenter size-medium wp-image-216" /></a></p>
<p><strong>9.</strong> Burada kullanacağımız teknolojileri seçiyoruz. Biz şimdilik basit bir JSP sayfası yapacağız. Bu nedenle aşağıdaki gibi seçmemiz bizim için yeterli<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/9.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/9-300x208.png" alt="" title="9" width="300" height="208" class="aligncenter size-medium wp-image-217" /></a></p>
<p><strong>10.</strong> Eğer yaptığınız sitenin Context&#8217;ini değiştirmek istiyorsanız buradan değiştirebilirsiniz. Şu an bizim yaptığımız örnek <strong>http://localhost:8080/JavaciWeb/</strong> altında çalışacak.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/10.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/10-300x208.png" alt="" title="10" width="300" height="208" class="aligncenter size-medium wp-image-218" /></a></p>
<p><strong>11.</strong> Projemizi oluşturduk<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/11.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/11-300x157.png" alt="" title="11" width="300" height="157" class="aligncenter size-medium wp-image-219" /></a></p>
<p><strong>12.</strong> Şimdi yeni bir Servlet oluşturalım ve bu Servlet ile ekrana basit bir yazı bastıralım<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/12.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/12-300x157.png" alt="" title="12" width="300" height="157" class="aligncenter size-medium wp-image-220" /></a></p>
<p><strong>13.</strong> Servlet için paket ismini net.javaci, sınıf ismini JavaciServlet olarak yazın<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/13.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/13-300x247.png" alt="" title="13" width="300" height="247" class="aligncenter size-medium wp-image-221" /></a></p>
<p><strong>14.</strong><strong>URL Mappins</strong> kısmını kullanarak bu oluşturduğunuz Servlet&#8217;in hangi kalıplarda çağırılacağınız ayarlayabilirsiniz. Biz http://localhost:8080/JavaciWeb/<strong>JavaciServlet</strong> olarak çağırılmasını istiyoruz.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/14.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/14-296x300.png" alt="" title="14" width="296" height="300" class="aligncenter size-medium wp-image-222" /></a></p>
<p><strong>15.</strong>Burada Servletimiz otomatik olarak oluşacaktır<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/15.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/15-296x300.png" alt="" title="15" width="296" height="300" class="aligncenter size-medium wp-image-223" /></a></p>
<p><strong>16.</strong><strong>doGet</strong> methodu içerisine <strong>response.getWriter().println(&#8221;");</strong> ile istediğiniz bir yazı yazabilirsiniz. Bu yazı direkt olarak web sayfası içerisinde görünecektir.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/16.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/16-300x157.png" alt="" title="16" width="300" height="157" class="aligncenter size-medium wp-image-224" /></a></p>
<p><strong>17.</strong>Şimdi web sayfamızı Tomcat içerisinde çalıştırmalıyız. Bunun için proje üzerine sağ tıklayıp gelen menüde <strong>Run on Server</strong> diyoruz.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/17.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/17-300x157.png" alt="" title="17" width="300" height="157" class="aligncenter size-medium wp-image-226" /></a></p>
<p><strong>18.</strong>Tomcat&#8217;i seçiyoruz.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/18.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/18-231x300.png" alt="" title="18" width="231" height="300" class="aligncenter size-medium wp-image-225" /></a></p>
<p><strong>19.</strong>Oluşturduğumuz projeyi seçiyoruz.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/19.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/19-231x300.png" alt="" title="19" width="231" height="300" class="aligncenter size-medium wp-image-227" /></a></p>
<p><strong>20.</strong>Bitirdğimizde sitemiz Eclipse içerisinde açılacaktır yada<br />
<strong>http://localhost:8080/JavaciWeb/JavaciServlet</strong> adresini kullanarak başka browser ile görebilirsiniz.<br />
<a href='http://www.javaci.net/wp-content/uploads/2008/06/21.png'><img src="http://www.javaci.net/wp-content/uploads/2008/06/21-300x157.png" alt="" title="21" width="300" height="157" class="aligncenter size-medium wp-image-232" /></a></p>
<p>Bir sonraki yazıda JSP ve Servlet kullanarak Database CRUD(Create-Read-Update-Delete) işlemlerini yapmayı öğreneceğiz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/06/10/eclipse-ile-web-gelistirme-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DateFormat ile Tarih Formatlama</title>
		<link>http://www.javaci.net/2008/06/02/dateformat-ile-tarih-formatlama/</link>
		<comments>http://www.javaci.net/2008/06/02/dateformat-ile-tarih-formatlama/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 06:31:02 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Kod]]></category>

		<category><![CDATA[DateFormat]]></category>

		<category><![CDATA[SimpleDateFormat]]></category>

		<category><![CDATA[tarih]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=207</guid>
		<description><![CDATA[
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
&#160;
/**
 * Javaci.Net
 *
 * @user: ekocaman
 */
public class DateFormatOrnegi &#123;
&#160;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
        // Şimdiki zamanı tutan Date objesi oluşturalım
        Date now = new Date&#40;&#41;;
&#160;
       [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="java"><span style="color: #a1a100;">import java.util.Date;</span>
<span style="color: #a1a100;">import java.text.DateFormat;</span>
<span style="color: #a1a100;">import java.text.SimpleDateFormat;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**
 * Javaci.Net
 *
 * @user: ekocaman
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> DateFormatOrnegi <span style="color: #66cc66;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">String</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> args<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #808080; font-style: italic;">// Şimdiki zamanı tutan Date objesi oluşturalım</span>
        <span style="color: #aaaadd; font-weight: bold;">Date</span> now = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">Date</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// Bunu ekrana bastıralım</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; 1. &quot;</span> + now.<span style="color: #006600;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// Şimdi DateFormat sınıfını kullanarak ekrana bastıralım</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; 2. &quot;</span> + <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// Default time ve date-time DateFormat sınıflarını kullanalım</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; 3. &quot;</span> + <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getTimeInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; 4. &quot;</span> + <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getDateTimeInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
            .<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// DateFormat sınıfının kısa biçimi</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; 5. &quot;</span> + <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getTimeInstance</span><span style="color: #66cc66;">&#40;</span>
            <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">SHORT</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// DateFormat sınıfının orta biçimi</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; 6. &quot;</span> + <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getTimeInstance</span><span style="color: #66cc66;">&#40;</span>
            <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">MEDIUM</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// DateFormat sınıfının uzun biçimi</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; 7. &quot;</span> + <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getTimeInstance</span><span style="color: #66cc66;">&#40;</span>
            <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">LONG</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// Eğer aynı zamanda saat birimini de görmek istiyorsak</span>
        <span style="color: #808080; font-style: italic;">// DateTime kullanmamız gerekecek</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; 8. &quot;</span> + <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getDateTimeInstance</span><span style="color: #66cc66;">&#40;</span>
            <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">SHORT</span>, <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">SHORT</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; 9. &quot;</span> + <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getDateTimeInstance</span><span style="color: #66cc66;">&#40;</span>
            <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">MEDIUM</span>, <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">SHORT</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;10. &quot;</span> + <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getDateTimeInstance</span><span style="color: #66cc66;">&#40;</span>
            <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">LONG</span>, <span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">LONG</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">// Ayrıca SimpleDateFormat sınıfını kullanarak kendi</span>
        <span style="color: #808080; font-style: italic;">// formatınızı oluşturabilirsiniz</span>
        <span style="color: #aaaadd; font-weight: bold;">SimpleDateFormat</span> df = <span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">SimpleDateFormat</span><span style="color: #66cc66;">&#41;</span><span style="color: #aaaadd; font-weight: bold;">DateFormat</span>.<span style="color: #006600;">getDateInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        df.<span style="color: #006600;">applyPattern</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;dd.MM.yy&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #aaaadd; font-weight: bold;">System</span>.<span style="color: #006600;">out</span>.<span style="color: #006600;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;11. &quot;</span> + df.<span style="color: #006600;">format</span><span style="color: #66cc66;">&#40;</span>now<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">/**
         * Çıktısı aşağıdaki gibi olacaktır
         *
         1. Mon Jun 02 00:38:38 EEST 2008
         2. 6/2/08 12:38 AM
         3. 12:38:38 AM
         4. Jun 2, 2008 12:38:38 AM
         5. 12:38 AM
         6. 12:38:38 AM
         7. 12:38:38 AM EEST
         8. 6/2/08 12:38 AM
         9. Jun 2, 2008 12:38 AM
        10. June 2, 2008 12:38:38 AM EEST
        11. 02.06.08
         */</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/06/02/dateformat-ile-tarih-formatlama/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sun Sertifikası</title>
		<link>http://www.javaci.net/2008/05/30/sun-sertifikasi/</link>
		<comments>http://www.javaci.net/2008/05/30/sun-sertifikasi/#comments</comments>
		<pubDate>Fri, 30 May 2008 11:01:26 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Diğer]]></category>

		<category><![CDATA[sertifika]]></category>

		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=205</guid>
		<description><![CDATA[SUN öğrencilere sanal sertifika vermeye başladı. www.sunstudentcourses.com adresinden yapacağınız ücretsiz üyelik ile çeşitli derslerden geçip ücretsiz sanal sertifika sahibi olabilirsiniz. Size sertifikanız pdf olarak gönderilecektir.
Şu an için 3 ana kategoride dersler bulunmakta. Sertifika alınamasa bile bu derslerin öğrenilmesi ve öğrencilere ücretsiz sunulması güzel birşey. Bu 3 kategori için ayrı sertifikalar veriliyor. Mesela Sun SPOT Certification&#8217;a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.javaci.net/wp-content/uploads/2008/05/logo_sun_small_sdn.gif" alt="" title="logo_sun_small_sdn" class="alignleft size-full wp-image-206" align="left" />SUN öğrencilere sanal sertifika vermeye başladı. <a href="http://www.sunstudentcourses.com">www.sunstudentcourses.com</a> adresinden yapacağınız ücretsiz üyelik ile çeşitli derslerden geçip ücretsiz sanal sertifika sahibi olabilirsiniz. Size sertifikanız pdf olarak gönderilecektir.</p>
<p>Şu an için 3 ana kategoride dersler bulunmakta. Sertifika alınamasa bile bu derslerin öğrenilmesi ve öğrencilere ücretsiz sunulması güzel birşey. Bu 3 kategori için ayrı sertifikalar veriliyor. Mesela Sun SPOT Certification&#8217;a sahip olmak için 7 sınavdan da %80 veya üzeri başarıyla geçmek gerekiyor.</p>
<p>Herkese başarılar&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/05/30/sun-sertifikasi/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ders 2 - Java&#8217;nın Kuralları</title>
		<link>http://www.javaci.net/2008/05/28/ders-2-javanin-kurallari/</link>
		<comments>http://www.javaci.net/2008/05/28/ders-2-javanin-kurallari/#comments</comments>
		<pubDate>Wed, 28 May 2008 06:34:08 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Dersler]]></category>

		<category><![CDATA[ders]]></category>

		<category><![CDATA[ipucu]]></category>

		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=202</guid>
		<description><![CDATA[Java kodlamaya başlamadan önce bazı kuralları bilmemiz lazım.
* Java kodunda elemanlar sırayla
paket isimlendirmesi
import edilen sınıflar
Sınıf deklerasyonu
şeklinde olmalıdır.

package net.javaci;
import java.io.*;
public class Test &#123;&#125;

* import komutu recursive çalışmaz
import net.javaci.*; dediğimiz zaman net.javaci.bean.MyBean sınıfını kullanamayacağız.
* Yorumlar(comments) her yerde olabilirler.
* Her bir dosya içerisinde sadece ve sadece bir tane public sınıf olabilir ve bu sınıf ismi dosya ismi ile [...]]]></description>
			<content:encoded><![CDATA[<p>Java kodlamaya başlamadan önce bazı kuralları bilmemiz lazım.</p>
<p>* Java kodunda elemanlar sırayla</p>
<p><strong>paket isimlendirmesi</strong><br />
<strong>import edilen sınıflar</strong><br />
<strong>Sınıf deklerasyonu</strong><br />
şeklinde olmalıdır.</p>

<div class="wp_syntax"><div class="code"><pre class="java"><span style="color: #000000; font-weight: bold;">package</span> net.<span style="color: #006600;">javaci</span><span style="color: #66cc66;">;</span>
<span style="color: #a1a100;">import java.io.*;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Test <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>* import komutu recursive çalışmaz<br />
<strong>import net.javaci.*;</strong> dediğimiz zaman <strong>net.javaci.bean.MyBean</strong> sınıfını kullanamayacağız.</p>
<p>* Yorumlar(comments) her yerde olabilirler.</p>
<p>* Her bir dosya içerisinde sadece ve sadece bir tane public sınıf olabilir ve bu sınıf ismi dosya ismi ile aynı olmak zorundadır.</p>
<p><strong>MyClass.java</strong> dosyası içerisinde</p>

<div class="wp_syntax"><div class="code"><pre class="java"><span style="color: #000000; font-weight: bold;">public</span> MyClass <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>
&nbsp;
YourClass <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>kodu yazıyor olabilir. Bu hata vermez.</p>
<p>* Java kaynak dosyasının içerisinde bir public sınıf olmaz zorunda değildir.</p>
<p>* Java kaynak dosyası boş bir dosya da olabilir. Java derleyicisi bunu kabul edecektir.</p>
<p>* Değişken isimleri sadece harf, $ veya _ ile başlayabilirler, sonraki karakterleri harf, $, _ veya sayı olabilir.</p>
<p>* Java&#8217;da saklı olan isimler değişken isimleri olarak kullanılamazlar.</p>
<p>* <strong>const</strong> ve <strong>goto</strong> isimleri Java&#8217;da saklı isimlerdir fakat kullanılmazlar.</p>
<p>* Java&#8217;da 8 tane ilkel değişken tipi(primitive data types) vardır.</p>
<table style="border: medium none ; margin-left: 0.5in; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="border: 0.5pt solid windowtext; padding: 0in 5.4pt; width: 59.4pt;" valign="top" width="79">
<p class="MsoNormal" style=""><b>Data Tipi</b><o:p></o:p></p>
</td>
<td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 0.5pt 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54">
<p class="MsoNormal" style=""><b>Boyutu (bits)</b><o:p></o:p></p>
</td>
<td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 0.5pt 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 0.75in;" valign="top" width="72">
<p class="MsoNormal" style=""><b>İlk Değeri</b><o:p></o:p></p>
</td>
<td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 0.5pt 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 67.5pt;" valign="top" width="90">
<p class="MsoNormal" style=""><b>Min Değeri</b><o:p></o:p></p>
</td>
<td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 0.5pt 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 121.5pt;" valign="top" width="162">
<p class="MsoNormal" style=""><b>Max Değeri</b><o:p></o:p></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0in 5.4pt; width: 59.4pt;" valign="top" width="79">
<p class="MsoNormal" style="">boolean<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54">
<p class="MsoNormal" style="">1<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 0.75in;" valign="top" width="72">
<p class="MsoNormal" style="">false<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 67.5pt;" valign="top" width="90">
<p class="MsoNormal" style=""><span style="">&nbsp;</span>false<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 121.5pt;" valign="top" width="162">
<p class="MsoNormal" style="">true<o:p></o:p></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0in 5.4pt; width: 59.4pt;" valign="top" width="79">
<p class="MsoNormal" style="">byte<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54">
<p class="MsoNormal" style="">8<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 0.75in;" valign="top" width="72">
<p class="MsoNormal" style="">0<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 67.5pt;" valign="top" width="90">
<p class="MsoNormal" style="">-128 (-2<sup>7</sup>)<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 121.5pt;" valign="top" width="162">
<p class="preformatted" style="margin: 0in 0in 0.0001pt;"><span style="font-size: 10pt; font-family: &quot;Times New Roman&quot;;">127 (2<sup>7</sup></p>
<p>– 1)</span><o:p></o:p></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0in 5.4pt; width: 59.4pt;" valign="top" width="79">
<p class="MsoNormal" style="">short<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54">
<p class="MsoNormal" style="">16<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 0.75in;" valign="top" width="72">
<p class="MsoNormal" style="">0<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 67.5pt;" valign="top" width="90">
<p class="MsoNormal" style="">-2<sup>15</sup> <o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 121.5pt;" valign="top" width="162">
<p class="MsoNormal" style="">2<sup>15</sup> - 1<o:p></o:p></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0in 5.4pt; width: 59.4pt;" valign="top" width="79">
<p class="MsoNormal" style="">char<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54">
<p class="MsoNormal" style="">16<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 0.75in;" valign="top" width="72">
<p class="MsoNormal" style="">‘\u0000’<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 67.5pt;" valign="top" width="90">
<p class="MsoNormal" style="">‘\u0000’ (0)<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 121.5pt;" valign="top" width="162">
<p class="MsoNormal" style="">‘\uFFFF’ (2<sup>16</sup><br />
– 1)<o:p></o:p></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0in 5.4pt; width: 59.4pt;" valign="top" width="79">
<p class="MsoNormal" style="">int<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54">
<p class="MsoNormal" style="">32<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 0.75in;" valign="top" width="72">
<p class="MsoNormal" style="">0<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 67.5pt;" valign="top" width="90">
<p class="MsoNormal" style="">-2<sup>31</sup> <o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 121.5pt;" valign="top" width="162">
<p class="MsoNormal" style="">2<sup>31</sup> - 1<o:p></o:p></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0in 5.4pt; width: 59.4pt;" valign="top" width="79">
<p class="MsoNormal" style="">long<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54">
<p class="MsoNormal" style="">64<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 0.75in;" valign="top" width="72">
<p class="MsoNormal" style="">0L<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 67.5pt;" valign="top" width="90">
<p class="MsoNormal" style="">-2<sup>63</sup> <o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 121.5pt;" valign="top" width="162">
<p class="MsoNormal" style="">2<sup>63</sup> - 1<o:p></o:p></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0in 5.4pt; width: 59.4pt;" valign="top" width="79">
<p class="MsoNormal" style="">float<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54">
<p class="MsoNormal" style="">32<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 0.75in;" valign="top" width="72">
<p class="MsoNormal" style="">0.0F<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 67.5pt;" valign="top" width="90">
<p class="MsoNormal" style="">1.4E-45<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 121.5pt;" valign="top" width="162">
<p class="MsoNormal" style="">3.4028235E38<o:p></o:p></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0in 5.4pt; width: 59.4pt;" valign="top" width="79">
<p class="MsoNormal" style="">double<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 40.5pt;" valign="top" width="54">
<p class="MsoNormal" style="">64<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 0.75in;" valign="top" width="72">
<p class="MsoNormal" style="">0.0<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 67.5pt;" valign="top" width="90">
<p class="MsoNormal" style="">4.9E-324<o:p></o:p></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0in 5.4pt; width: 121.5pt;" valign="top" width="162">
<p class="MsoNormal" style="">1.7976931348623157E308<o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<p>* Bütün rakamsal değişkenler signed özelliktedir yani pozitif ve negatif değerleri vardır fakat char değişkenleri sadece pozitiftir(unsigned).</p>
<p>* Object değişkenlerinin ilk değerleri null değerindedir.</p>

<div class="wp_syntax"><div class="code"><pre class="java"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MyClass <span style="color: #66cc66;">&#123;</span>
	<span style="color: #aaaadd; font-weight: bold;">JFrame</span> frame<span style="color: #66cc66;">;</span> <span style="color: #808080; font-style: italic;">// frame değişkeninin default değeri null</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>* Rakamlar Java otomatik olarak int tipinde algılanır. Ondalık sayılar ise double tipinde algılanır.</p>
<pre lang="java"
	int num1 = 5;
	// 5 rakamı int tipinde algılandığı için bu satır hata vermez
	double num2 = 5.5;
	// 5.5 rakamı double tipinde algılandığı için bu satır hata vermez
	int num3 = 5.5;
	// 5.5 rakamı double tipinde algılandığı için bu satır int değere atama
	// yapamayacak ve hata verecektir
</pre>
<p>* Array'ler Java'da birer objedirler. Bu nedenle 5 boyutunda bir String arrayi oluşturursanız aslında 6 tane obje yaratmış olursunuz.</p>
<p>* Array'ler farklı şekilde oluşturulabilirler.</p>
<pre lang="java"
int a[] = { 1, 2, 3 };
int b[] = new int[] { 1, 2, 3 };
int c[] = new int[10];
int[] c = new int[10];
</pre>
<p>* Array'lerin boyutları sabittir ve değiştirilemez, derleme zamanında bilinmelidir.</p>
<pre lang="java"
int a[] = { 1, 2, 3 };
int length = a.length; // a.length size array'in boyutunu getirecektir
</pre>

<div class="wp_syntax"><div class="code"><pre class="java"><span style="color: #993333;">int</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> i = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #993333;">int</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">;</span>  <span style="color: #808080; font-style: italic;">// Hatalı</span>
<span style="color: #993333;">int</span> i<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #66cc66;">&#123;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span>, <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">;</span>  <span style="color: #808080; font-style: italic;">// Hatalı</span>
<span style="color: #993333;">int</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> i<span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #993333;">int</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">;</span> <span style="color: #808080; font-style: italic;">// Doğru</span>
<span style="color: #993333;">int</span> i<span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #66cc66;">&#123;</span> <span style="color: #66cc66;">&#123;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#125;</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #993333;">int</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">;</span> <span style="color: #808080; font-style: italic;">// Doğru</span>
<span style="color: #993333;">int</span> i<span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #66cc66;">&#123;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span>, <span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">;</span> <span style="color: #808080; font-style: italic;">// Doğru</span></pre></div></div>

<p>* Array indexleri 0&#8242;dan başlar.</p>
<p>* Java Virtual Machine&#8217;in bir sınıfı çalıştırabilmesi için main methodunun olması gerekmektedir.</p>

<div class="wp_syntax"><div class="code"><pre class="java"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">String</span> args<span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #993333;">void</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #aaaadd; font-weight: bold;">String</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> s<span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>* args isminin önemi yoktur, herhangi birşey olabilir. args[0] program çalıştırılırken girilen ilk parametredir ve args.length girilen toplam parametre sayısıdır.</p>
<p>* İlkel değişkenler değer atamalarda değerlerini atarlarken Obje tipindeki değişkenler sadece referanslarını atamaktadır.</p>

<div class="wp_syntax"><div class="code"><pre class="java">	<span style="color: #993333;">int</span> a = <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">;</span> <span style="color: #808080; font-style: italic;">// a=5</span>
	<span style="color: #993333;">int</span> b = a<span style="color: #66cc66;">;</span> <span style="color: #808080; font-style: italic;">// a=5, b=5</span>
	b = <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">;</span>	<span style="color: #808080; font-style: italic;">// a=5, b=10</span>
	<span style="color: #808080; font-style: italic;">// Yukarıda görüldüğü üzere a değişkeninin değeri değişmedi</span>
	<span style="color: #808080; font-style: italic;">// Eğer yukarıdaki işlemi Object değişken üzerinde yapmış olsaydık </span>
	<span style="color: #808080; font-style: italic;">// ilk değişkenin değeri değişirdi.</span></pre></div></div>

<p>Java ile ilgili ipuçlarını verdikten sonra Java kurulumunu tamamlayabilirsiniz. </p>
<p><a href="http://www.javaci.net/2007/05/24/windowsda-java-kurulumu/">Windows&#8217;da Kurulum</a><br />
<a href="http://www.javaci.net/2007/05/26/linuxda-java-kurulumu/">Linux&#8217;da Kurulum</a></p>
<p>Bundan sonra kod yazarak Java&#8217;yı öğrenmeye çalışacağız.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/05/28/ders-2-javanin-kurallari/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Yazılım Mühendisliği Pratikleri ve Kurumsal Java Teknolojileri</title>
		<link>http://www.javaci.net/2008/05/08/yazilim-muhendisligi-pratikleri-ve-kurumsal-java-teknolojileri/</link>
		<comments>http://www.javaci.net/2008/05/08/yazilim-muhendisligi-pratikleri-ve-kurumsal-java-teknolojileri/#comments</comments>
		<pubDate>Thu, 08 May 2008 06:11:36 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Diğer]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[kurumsal]]></category>

		<category><![CDATA[pratik]]></category>

		<category><![CDATA[teknoloji]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=201</guid>
		<description><![CDATA[Yazılım geliştirme genel olarak karmaşık ve zaman alan bir süreçtir. Uzun yıllar boyunca bu karmaşık süreci disipline etmek ve belirli bir sistematiğe oturtmak amacıyla değişik yazılım mühendisliği metodları ve pratikleri ortaya konmuştur.
İlk olarak 90’lı yılların ortalarında kullanılmaya başlanan Java programlama dili orta ve büyük ölçekli kurumsal yazılım sistemlerinin geliştirilmesinde dominant bir platform haline gelmiştir. Açık [...]]]></description>
			<content:encoded><![CDATA[<p>Yazılım geliştirme genel olarak karmaşık ve zaman alan bir süreçtir. Uzun yıllar boyunca bu karmaşık süreci disipline etmek ve belirli bir sistematiğe oturtmak amacıyla değişik yazılım mühendisliği metodları ve pratikleri ortaya konmuştur.</p>
<p>İlk olarak 90’lı yılların ortalarında kullanılmaya başlanan Java programlama dili orta ve büyük ölçekli kurumsal yazılım sistemlerinin geliştirilmesinde dominant bir platform haline gelmiştir. Açık kaynak kod hareketinin ve Java teknolojileri etrafında kümelenen geniş bir geliştirici topluluğunun da etkisi ile kurumsal Java platformu aslında kökleri çok daha eskilere dayanan güncel birtakım yazılım mühendisliği metod ve pratiklerinin, örneğin nesne ve aspect tabanlı programlama, çevik metodlar, XP, yazılım örüntüleri (pattern) gibi, ana uygulama alanına dönüşmüştür.</p>
<p>Zaman içinde bu metod ve pratikler ve kurumsal Java platformu karşılıklı olarak birbirlerinin evrilmelerine ve yaygınlaşmalarına ciddi katkıda bulunmuşlardır. Bu makale boyunca çeşitli yazılım mühendisliği kavram, metod ve pratiklerinin bazılarından, bunların yazılım projelerine uygulanmasından ve Spring, Hibernate, JSF gibi popüler bazı kurumsal Java teknolojilerinden bahsedeceğiz.</p>
<p>Yazılım projelerinde neden bu kadar “spagetti kod” olarak tabir edilen türden kötü, anlaşılması ve bakımı zor kod yazılıyor? Sanırım hemen her projenin geliştirme sürecinde belirli bir noktaya gelindiğinde projenin üyelerinin ağzından şu sözleri durmak mümkündür: “Bu projeyi sıfırdan tekrar yazmamız mümkün olsaydı, bazı şeyler çok daha farklı olurdu!” Burada hemen ünlü Mythical Man Month kitabının yazarı Fred Brooks’un bir sözü aklımıza geliyor: “Üzerinde çalıştığınız işin bir kopyasını çöpe atmayı planınıza ekleyin, çünkü eninde sonunda bunu yapacaksınız.”</p>
<p>Sosyoloji bilimindeki önemli metaforlardan birisi de “Kırık Pencereler Teorisi” dir. Bu teoriye göre, eğer bir binanın kırılan bazı pencereleri hemen tamir edilmez ise, etrafa zarar vermeye meyilli insanların bu binadaki diğer camları da kırma ihtimali daha da fazlalaşır. En sonunda bina bu tür insanların istilasına uğrayabilir, onların yerleşim mekanına dönülebilir, hatta içerisinde yangın vb. diğer hasar verici olayların meydana gelmesi bile söz konusu olabilir. Sonuç olarak başında küçük birkaç pencere kırığına sahip bina zaman içerisinde tamamen metruk bir hale bürünebilir.</p>
<p>Yazılım projelerinde de benzer bir durum söz konusudur. Her proje geliştirilmeye başlandığı ilk andan itibaren ömrünü tüketmeye de başlamıştır. Eğer sistem içerisinde oluşan küçük tasarım ve kod hataları düzeltilmezse bunlar zaman içerisinde bir çığ olup projenin geliştirilmesine ve bakımına ciddi problem teşkil edecek bir noktaya gelecektir. Başlangıç aşamasında çok kolay çözülebilecek bu tür problemler belirli bir noktaya gelindiğinde artık el sürülemez bir hal alacaktır.</p>
<p>Burada karşımıza son yıllarda popüler olan bir yazılım mühendisliği pratiği çıkmaktadır: Refactoring. Refactoring, kodun dışsal davranışını ve çalışma şeklini değiştirmeden iç yapısını düzenlemeyi, iyileştirmeyi hedefler. Bir dizi küçük yapısal dönüşümden oluştur. Bu küçük fakat sürekli yapısal dönüşümler zaman içerisinde ciddi bir yeniden yapılandırma olarak karşımıza çıkar.</p>
<p>Son dönemlerde önem kazanan bir diğer yaklaşım da büyük ön hazırlıklı, tasarımlı yazılım geliştirme faaliyetlerinin yerine aşamalı, azar azar adımlarla yürütülen yazılım geliştirme faaliyetleridir. Yazılım mühendisliği dünyasından dışarıya baktığımızda da, pek çok diğer uzmanlık alanında büyük ön planlamalara dayalı faaliyetlerin, özellikle şehir, bölge planlamacılığı gibi, zaman içinde ciddi problemlerle karşılaştığı görülmüştür. Bu tür büyük ön hazırlıklı, planlamalı çalışmaların başarısızlığındaki temel nedenler bunların katı olması, baştan bazı yanlış kabullere dayanmaları ve güncelliklerini zaman içerisinde yitirmeleridir. Bu tür sistemlerin kullanıcıları zaman içerisinde baştan öngörülemeyen pek çok değişikliğe ihtiyaç duymaktadırlar. Bu nedenle sadece planlama yapmak yeterli değildir.Değişikliklere uyum sağlayabilecek planlamalar yapmak gerekmektedir.</p>
<p>1986’da uzaya fırlatılan Mir Uzay İstasyonu artırımlı geliştirme için çok güzel bir örnektir. Mir Uzay İstasyonu yeniden konfigüre edilebilir ve modüler biçimde büyütülebilir biçimde tasarlanmıştır. Fırlatılış tarihinden itibaren 1996 yılına kadar uzay istasyonuna zamanın ihtiyaçlarına göre pek çok yeni ekleme ve düzenleme yapılmıştır. Uzay istasyonu bu genişleme sürecinde tekrar tekrar ayarlamalara tabi tutulmuştur. Mir Uzay İstasyonu 2001 yılında işlevini yitirdiğinden dolayı yörüngesinden çıkartılmış ve Fiji sahilleri yakınlarında atmosfere girerek parçalanmıştır.</p>
<p>Artırımlı ve büyük planmalara dayalı geliştirme modellerini kıyaslarsak, artırımlı geliştirmenin kademeli onarım ve tamirat kavramı üzerine kurulmasına karşın büyük planlamalı geliştirmenin ise toptan değiştirme üzerine bina edildiği görülmektedir. Büyük ön hazırlığa dayalı çalışmalar ilk seferde mükemmele ulaşılabileceği yanlış inancına kapılmıştır. Artırımlı geliştirme, hataların kaçınılmaz olduğunu, sistemlerin ve kullanıcıların birbirlerine uyumlarının zaman alan ve yavaş bir süreç olduğunu kabullenmektedir.</p>
<p>2001 yılında bir grup yazılım mühendisliği kanaat önderinin bir araya gelmesi ile “Agile Manifesto” adında bir bildiri yayımlanmıştır. Bu bildiri de yazılım projelerinde yaşanan başarısızlıklar ve problemlere çözüm olabilecek birtakım yaklaşımlar vurgulanmıştır. Bu bildiride öne çıkan konuları şöyle sıralayabiliriz:</p>
<p>1. Yazılım projelerindeki en öncelikli konu erken ve sürekli biçimde, çalışır bir yazılım sisteminin ortaya konması ile müşteri tatmininin sağlanmasıdır.<br />
2. Geliştirme sürecinin sonlarında olunsa bile kullanıcı ihtiyaçlarındaki değişklikler hoş karşılanmalıdır.<br />
3. Sık aralıklarla çalışan bir sistem kullanıcıya teslim edilmelidir.<br />
4. Müşteri, analistler ve yazılım geliştiriciler gün boyunca birlikte çalışmalıdırlar.<br />
5. Projeler motive kişilerle geliştirilmelidir.<br />
6. En etkili ve verimli bilgi edinme ve iletişim yöntemi yüz yüze iletişimdir.<br />
7. Projenin asli ilerleme göstergesi çalışan yazılımdır.<br />
8. Teknik mükemmellik ve tasarımda kalite hedefi çevikliği geliştiren unsurlardır.<br />
9. Yapılması gerekmeyen iş miktarını artırmak, yani basitlik esastır.<br />
10. En iyi mimariler ve tasarımlar kendi kendilerine organize olabilen ekipler tarafından ortaya konmaktadır.<br />
11. Ekipler belirli zaman aralıklarında çalışmalarını ve iş yapış şekillerini gözden geçirmeli ve bunları iyileştirmelidirler.</p>
<p>1977 yılında Christopher Alexander isimli bir mimar ortaçağ dönemlerinde yapılmış binaların, yaşam alanlarının neden çekici, insanlara yaşam enerjisi verici ve ortamla uyumlu olduğunu sorgulayan bir eser yayımlamıştır. “A Pattern Language: Towns, Buildings, Construction” isimli eserinde bu sorulara verdiği cevap, bu binaların o dönemlerdeki ve yapıldıkları ortamlardaki bazı yerel düzenlemelere ve kurallara uymak zorunda olmalarına rağmen mimarlarının o ortamda karşılarına çıkan belirli birtakım ihtiyaç ve problemlerde bağımsız karar verebilmeleri, bu kararların, yapıların şeklini, kullanımını o ortama uygun biçimde şekillendirdiğini tespit etmiştir. Christopher Alexander, kitabında daha estetik, çevre ve insan doğası ile uyumlu binalar, yaşam alanları yaratmak için örnek resimler, tasarımlar sunmuş, ancak kesin kararların alınmasını her bir projenin, çalışmanın kendisine bırakmıştır.</p>
<p>1994 yılında, daha sonra “Gang of Four” lakabı ile tanınır olacak dört yazılım mühendisi Christopher Alexander’ın bu kitabından etkilenerek yazılım sistemlerindeki bazı tasarım örüntülerini (pattern) kataloglayan bir çalışma yayımlamışlardır. Tasarım örüntüleri sistematik biçimde isimlendirilmiş ve bunların nesneye dayalı sistemlerde hangi tasarım problemlerine çözüm getirdiği açıklanmıştır. Genel olarak bu çözümler statik ve dinamik olarak sınıf ve nesne modellerinden, bunların açıklamalarından, kod örneklerinden ve bu örüntüler uygulandığı vakit ortaya çıkacak olumlu ve olumsuz sonuçlardan oluşmaktadır.</p>
<p>Tasarım örüntüleri ve refactoring kavramlarının birlikte yorumlanması ile 2000’li yıllarda değişik bir bakış açısı ortaya çıkmıştır. Genel olarak tasarım örüntüleri, kodumuzda varmak istediğimiz nihai aşama olarak düşünülürse, refactoring çalışmaları bu nihai aşamaya ulaşmaya yardım eden ara adımlar olarak görülebilir. Herhangi bir problemin ilk çözüm aşamasından itibaren bir örüntünün doğrudan kullanılmaya çalışılması zaman zaman çözümün gereksiz yere karmaşıklaşmasına neden olmaktadır. “Refactoring to Patterns” yaklaşımı ile basit bir yapıdan yola çıkarak ideal çözüme zaman içinde ihtiyaçlar doğrultusunda kademeli olarak varılmaktadır.</p>
<p>Son yıllarda öne çıkan diğer bir yazılım mühendisliği pratiği ise test güdümlü programlamadır. Aslında test kavramı programcılığın ilk dönemlerinden itibaren geliştiricilerin dağarcığında yer etmiştir. En basitinden bir uygulamanın kabul edeceği girdi ve üreteceği çıktının kodlamadan evvel değerlendirilmesi ve asıl fonksiyonalitenin bundan sonra yazılması bilinen bir çalışma yöntemidir. Test güdümlü programlamada ise ilk önce istenilen fonksiyonaliteyi veya iyileşmeyi sınayan bir test kodu yazılır. Ardından bu testin başarılı biçimde çalışmasını sağlayacak gerçek fonksiyonalite kodu yazılır. Daha sonra ise refactoring ile yazılan kod ve tasarım daha sonraki ihtiyaçları karşılayacak biçimde iyileştirilir. Yazılım projelerinde genellikle yoğun çalışma temposu ve sıkışık teslim süreçlerinde stres katsayısının artması sonucunda ekiplerin ilk terk ettikleri aktivitelerden birisi test kodlarının yazılması ve çalıştırılması olmaktadır. Malesef bu durum “test için zamanımız yok” kısır döngüsü ile sonuçlanmaktadır. Daha az test yazılması ve çalıştırılması geliştiricilerin sistemle ilgili özgüvenlerini azaltacağı için stres katsayısının daha da artmasına sebep olmaktadır. Stres katsayısının artışı da testlerin yazılmasını iyice azaltmaktadır.</p>
<p>Herhangi bir yazılım sisteminin tasarımının iyi veya kötü olup olmadığını hangi kriterlerle değerlendirmeliyiz? Kötü bir tasarım hakkında neler ipucu olabilir? Bu noktada karşımıza birkaç temel kriter çıkmaktadır. Eğer sistem içerisinde herhangi bir modülü değiştirmek zorsa, bu değişiklik sistemin pek çok diğer bölümünü etkiliyorsa bu esnek olmayan bir tasarım demektir. Eğer sistemde yapılan bir değişiklik ilgisiz diğer bölümlerde hatalara sebep oluyorsa bu durumda sistem kırılgan demektir. Sistem içerisinde herhangi bir modülün başka benzer bir problem de de kullanılabileceği gözlenmesine rağmen, bu modülün diğer sistemde kullanılacağı vakit mevcut sistemden kolayca ayrıştırılamaması sistemin yeterince izole olmadığı anlamına gelmektedir. Yazılım geliştirciler herhangi bir problemle kaşılaştıklarında mevcut tasarım içerisinde bu problemi çözen birden fazla yol bulabilirler. Bunlardan bazıları mevcut tasarıma uygun olup, sistemin genel mimarisi ve tasarımı ile çelişmeyen, diğerleri ise “hacking” diye tabir edilen kestirme, günü kurtaran çözümlerdir. Eğer uygun çözümlerin uygulanması, kestirme çözümlere göre çok daha zor ve zaman alıcı ise geliştiricilerde doğal olarak kolay olan yolu tercih edeceklerdir. Bu durum sistemin yeterince olgunlaşmadığına, akışkan olmadığına işarettir.</p>
<p>Peki kaliteli bir nesneye yönelik tasarım ortaya çıkarmak için sınıf, nesne, soyutlama, encapsulation, soya çekim gibi temel nesneye yönelik kavramların bilinmesi ne derecede yeterlidir? Malesef bu kavramlar nesneye yönelik tasarımlarda atomik birimlerdir. Herhangi bir yazılım sisteminin nitelikli bir tasarıma sahip olması için daha üst düzeyde ve geniş kapsamda yapılara ve prensiplere ihtiyaç duyulmaktadır. Nesneye yönelik tasarım prensiplerinden en önde geleni “açık-kapalı” prensibidir. Bu prensibe göre yazılım birimleri, genişlemeye açık, fakat değişikliklere kapalı olmalıdır. Eğer bu birimlerle ilgili yeni birtakım ihtiyaçlar sözkonusu ise bu ihtiyaçlar bu birimlerin genişletilmesi, yeni yapıların ilavesi ile karşılanmalı, mevcut birimlerin, yapıların kendilerinde herhangi bir değişikliğe gidilmemelidir. Diğer bir prensip ise her sınıfın tek bir görevinin olmasıdır. Herhangi bir sınıfta bir değişiklik yapmak için birden fazla değişik sebep ortaya çıkmamalıdır. Bir diğer önemli prensip ise sınıflar arasındaki bağımlılıkların yönü ile ilgilidir. Soyut sınıflar kesinlikle sabit (concrete) sınıflara bağlı olmamalıdır. Soyut sınıflar tasarım olarak genişlemeye açık türden sınıflardır. Bu nedenle bağımlılıkların yönü sabit sınıflardan soyut sınıflara doğru olmalıdır.</p>
<p>Nesneye yönelik programlama belirli ölçüde modüler yazılım sistemleri geliştirmeye yardımcı olmuşlardır. Ancak yazılım sistemlerinde ortaya çıkan bazı fonksiyonalitelerin kendi başlarına tek bir modül içerisinde toparlanması nesneye yönelik programalama ile mümkün olmamaktadır. Bu fonksiyonlar sistem genelinde değişik modüllere yayılmaktadır. Bu noktada ilgiye yönelik (aspect oriented) programlama ortaya çıkmıştır. Kökeni eskilere dayanmasına rağmen ilk olarak Java programa dili üzerine geliştirilen AspectJ programlama dilinin popüler olması ile ilgiye yönelik programlama da güncel yazılım mühendisliği metodları arasında yer almıştır.</p>
<p>Java programlama dili ilk olarak 1994 yılında ortaya çıkmıştır. Önceleri istemci taraflı, görselliği yüksek uygulamaların geliştirilmesinde popüler olmasına rağmen zaman içinde kurumsal, sunucu taraflı sistemlerde de yaygın bir platform olmuştur. Kurumsal Java platformunun gelişimi 1998 yılına kadar uzanmaktadır. İlk dönemlerde katmanlı mimariler, Enterprise Java Beans, RMI, dağıtık transactionlar gibi kavramlar öne çıkmıştır. Kurumsal ölçekli sistemlerin bu ihtiyaçlarını karşılayan, bütün bu kurumsal Java servislerini içlerinde barındırmayı hedefleyen büyük monolitik uygulama sunucuları ortaya çıkmıştır. Zaman içinde klasik kurumsal Java platformunun düştüğü temel problem “her bedene uyacak tek bir elbisenin dikilebileceği” düşüncesidir. Gerçek hayata bakıldığında pek çok proje dağıtık sistemlerin ihtiyaç duyduğu servislere ihtiyaç duymamaktadır. Sıradan veritabanı işlemleri için EJB teknolojisi çok karmaşıktır. Uygulamaları çalıştırmak için mutlaka uygulama sunucularına ihtiyaç duymak özellikle geliştirme ve test süreçlerini olumsuz yönde etkilemektedir. Genel olarak klasik J2EE platformu, spesifikasyonlar tarafından yönlendirilmektedir. Bu yaklaşımın sağladığı başarılar olsa bile, yukarıda bahsedilen noktalarda dezavantajlara da sahiptir. 2000’li yılların başlarında Java geliştircileri kurumsal Java projelerindeki başarısızlıklarından pek çok dersler çıkartmıştır. Bu deneyimler sonucunda monolitik, hantal kurumsal Java platformları yerine, yine spesifikasyonları temel alan ancak daha hafif sıklet ve çevik kurumsal Java platformuna doğru bir dönüşüm söz konusu olmuştur. Bu dönüşümde uygulamaların herhangi bir ortamda çalışabilmesi, sıradan Java sınıflarının kullanılabilmesi, test güdümlü programlamanın etkin biçimde kullanılabilmesi temel hareket noktaları olmuştur.</p>
<p>Bu dönüşüme öncülük eden kurumsal Java çözümlerine kısaca değinirsek, bunlardan en önde geleni Spring Application Framework’tür. Spring’in çıkış noktası J2EE ile yazılım geliştirmeyi çok daha kolay bir hale getirmektir. Daha önce bahsedilen, açık-kapalı, bağımlılıkların sabit sınıflardan soyut sınıflara doğru olması gibi tasarım prensipleri Spring’in temelini oluşturmuştur. Genel olarak Spring çok katmanlı bir kurumsal Java çatısı (framework) sunmaktadır. Bu çatının özünde, uygulamanın nesnelerini oluşturan, nesneler arasındaki ilişkileri yöneten hafif sıklet bir container yer almaktadır. Birbirlerinden kolaylıkla ayrılabilir yazılım bileşenleri kendi başlarına rahatlıkla test edilebilir durumdadır.Spring ilgiye yönelik (aspect oriented) programlama konusunda da kapsamlı bir entegrasyon sunmakta, böylece AOP’u kurumsal Java ugulamalarında rahatlıkla kullanılabilir kılmaktadır.</p>
<p>Diğer bir popüler kurumsal Java çatısı ise nesne ve ilişkisel modeller arasında mapping yapmayı sağlayan Hibernate OR Mapping Framework’tür. Kurumsal uygulamalardaki veriler çoğunlukla ilişkisel veritabanlarında tutulur ve bu verilere SQL aracılığı ile erişilir. Nesneye yönelik geliştirilmiş bir uygulamada nesnelerin o andaki halleri veritabanında saklanıp, daha sonra saklanan bu veriler ile nesneler aynı durumda tekrar yaratılabilir. İlişkisel veritabanları veriyi tabular formda saklamaktadır. Malesef nesne modelini birebir tabular formla eşleştirmek mümkün olmamaktadır. Nesne ve ilişkisel modellerdeki bu uyumsuzluk şu noktalarda yoğunlaşmaktadır.</p>
<p>Nesne modeli ve ilişkisel model farklı ölçekte yapılar üzerine bina edilmişlerdir. İlişkisel modelde iki tablo ile ifade edilen bir veri yapısı, nesne modelinde daha fazla sayıda sınıfın yer aldığı bir modele karşılık gelebilir. Nesne dünyasındaki soyaçekimin (inheritance) ilişkisel modelde tam bir karşılığı yoktur. Bu eksiklik polimorfik sorgularda da karşımıza çıkmaktadır. Nesne dünyasındaki kimlik (identity) kavramı ile ilişkisel modeldeki kimlik kavramı birebir örtüşmemektedir. Nesne modeldeki ilişkilerde yön kavramı söz konusudur, ancak ilişkisel modelde veriler arasındaki ilişkilere bir yön atamak mümkün değildir. Nesneler arası ilişkiler çoka çoklu da olabilirken, ilişkisel modelde sadece bire çoklu ve bire bir ilişkiler desteklenmektedir. Nesneler arasında dolaşırken her bir nesneye birer birer erişilerek hedef bilgiye erişmek sözkonusudur. Bu durumda da ilişkisel modelden verinin o an ihtiyaç duyulduğunda getirilmesi gerekmektedir. Ancak veriye birden fazla erişim maliyeti yüksek bir işlem olduğundan, genellikle veriye erişmeden evvel navigasyon derinliğinin tespit edilmesi söz konusudur. Bu da nesneye dayalı uygulamalarda ya gerektiğinden fazla verinin hafızaya yüklenmesine, ya da veritabanına çok fazla sorgu gönderilmesine neden olmaktadır.</p>
<p>Kurumsal Java platformunda bir diğer katman ise görsel katmandır. Bu katman için ilk dönemlerden itibaren Servlets, JSP gibi teknolojiler ortaya çıkmıştır. Ancak bunlardan daha üst bir seviyede, tekrar kullanılabilir ekran bileşenleri oluşturma, kullanıcı isteklerini ele alma, nesne modeli ekran bileşenleri ile ilişkilendirme, navigasyon yönetimi gibi ihtiyaçlara cevap verecek bir çatıya ihtiyaç duyulmuştur. Zaman içinde bu ihtiyaçlar Struts, Tapestry, Webwork gibi çözümlerle karşılanmıştır. Son dönemde kurumsal Java platformunda görsel katman için Java Server Faces spesifikasyonu bir standart olarak ortaya çıkmıştır. Temelde MVC örüntüsü üzerine kurulu bu teknoloji bahsettiğimiz görsel katman problemlerine çözüm sunmaya çalışmaktadır.</p>
<p>Sonuç olarak, hangi teknoloji, araç vs. tercih edilirse edilsin, bunların büyük yazılım sistemleri geliştirilirken etkin ve verimli biçimde kullanılabilmesi, bu tür yazılım sistemlerinin sağlıklı biçimde geliştirilebilmesi için çok daha temel bir takım yazılım mühendisliği kavram, metod ve pratiklerinin bilinmesi ve yerine göre uygulanması gerekmektedir. Son dönemde güncel hale gelen bazı yazılım mühendisliği metod ve pratiklerinde de kurumsal Java platformu uygun bir geliştirme tezgahı olarak kullanılmıştır. Her iki alan da birbirlerine karşılıklı geri beslemede bulunmuş, bu geri beslemelerin ışığında hem yeni kavram, metod ve pratikler hemde yeni teknoloji ve araçlar ortaya çıkmıştır.</p>
<p><strong>Kenan Sevindik&#8217;e bu güzel yazısı için teşekkürler&#8230;</strong><br />
Kaynak : <a href="kaynak : http://ksevindik.blogspot.com/2008/05/gncel-yazlm-mhendislii-pratikleri-ve.html" target="_blank">http://ksevindik.blogspot.com/2008/05/gncel-yazlm-mhendislii-pratikleri-ve.html</a></p>
<p>Aşağıdan bu yazı ile ilgili kaynakları PDF halinde indirebilirsiniz.</p>
<p>Note: There is a file embedded within this post, please visit this post to download the file.</p>
<p>Note: There is a file embedded within this post, please visit this post to download the file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/05/08/yazilim-muhendisligi-pratikleri-ve-kurumsal-java-teknolojileri/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ders 1 - Java Nedir?</title>
		<link>http://www.javaci.net/2008/05/08/java-nedir/</link>
		<comments>http://www.javaci.net/2008/05/08/java-nedir/#comments</comments>
		<pubDate>Thu, 08 May 2008 06:05:47 +0000</pubDate>
		<dc:creator>ekocaman</dc:creator>
		
		<category><![CDATA[Dersler]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[JIT]]></category>

		<category><![CDATA[JVM]]></category>

		<guid isPermaLink="false">http://www.javaci.net/?p=199</guid>
		<description><![CDATA[Java Object Oriented bir dildir aynen C++&#8217;da olduğu gibi. En önemli farkı ise platform bağımsız olmasıdır. WORA(Write Once and Run Anywhere - Bir kere yaz heryerde çalıştır) prensibini izler. Bunun anlamı Java kodunuzu compile(derleme) ettiğiniz zaman oluşan programı Windows, Linux, Solaris gibi sistemlerde sorunsuz çalıştırabilmenizdir. Eğer programınızı C++&#8217;da yazmış olsaydınız kodunuzu her platform için ayrı [...]]]></description>
			<content:encoded><![CDATA[<p>Java Object Oriented bir dildir aynen C++&#8217;da olduğu gibi. En önemli farkı ise platform bağımsız olmasıdır. WORA(Write Once and Run Anywhere - Bir kere yaz heryerde çalıştır) prensibini izler. Bunun anlamı Java kodunuzu compile(derleme) ettiğiniz zaman oluşan programı Windows, Linux, Solaris gibi sistemlerde sorunsuz çalıştırabilmenizdir. Eğer programınızı C++&#8217;da yazmış olsaydınız kodunuzu her platform için ayrı ayrı derlemeniz gerekecekti.</p>
<p><strong>Java&#8217;nın Tarihi</strong><br />
Java James Gosling, Patrick Naughton, Chris Warth, Ed Frank ve Mike Sheridan tarafından 1991 senesinde Sun Microsystems tarafından oluşturulmuştur. Java&#8217;nın ilk çalışabilir halinin oluşması için 18 ay geçmiştir. Fakat ilk başta bu dile Oak adı verildi. Patent hakları alınmaya çalışıldığında böyle bir patentin alındığından dolayi 1995 yılında Java adıyla anılmaya başlanmıştır. Oak dili sadece 1992-1995 yılları içerisinde devamlılığını korumuştur. Daha detaylı bilgiye <a href="http://www.jtpd.org/public/TheStory.jsf?storyId=102" target="_blank">JTPD.org</a> adresinden ulaşabilirsiniz.</p>
<p><strong>Günümüzde Java</strong><br />
Java başlangıcından itibaren çok yol katetmiştir. İlk başlarda daha çok görsel öğeler için ortaya çıkan bu teknoloji sonraları enterprise teknolojilerde kullanılmaya başlanmıştır. Hatta çeşitli embedded ürünlerde Java yaygın olarak kullanılmaktadır.</p>
<p><strong>Java Virtual Machine(JVM)</strong><br />
JVM C dilinde yazılmış küçük bir uygulamadır. Aslında bu küçük uygulama Java programlarının başlangıç noktasıdır. Java kodunuzu derlediğiniz zaman size çıktı olarak BYTE CODE&#8217;a dönüştürülmüş dosyayı oluşturacaktır. JVM ise bu Byte Code&#8217;u sizin işletim sisteminin anlayacağı makina diline dönüştürür. Oluşturulan Byte Code her işletim sistemi için aynıdır, burada farklı olan ise JVM&#8217;dir. Linux için farklı JVM veya Windows için farklı JVM kullanırız. Aşağıdaki resimde bunu daha iyi görebiliriz.</p>
<p><img src="http://www.javaci.net/wp-content/uploads/2008/05/jvm-300x187.jpg" alt="" title="jvm" width="300" height="187" class="alignnone size-medium wp-image-200" /></p>
<p><strong>Just In Time Compiler(JIT)</strong><br />
Görüldüğü üzere Java bir çevirim dilidir. Byte Code&#8217;u Linux&#8217;un, Windows&#8217;un veya başka işletim sistemlerinin anlayabileceği biçime çevirir. Bu çevirme işlemini JVM anlık(on the fly) gerçekleştirir. Yani Byte Code&#8217;u işlerken sadece ihtiyacı olduğu kısmı makina diline çevirir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javaci.net/2008/05/08/java-nedir/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
