<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-664344843582193126</id><updated>2011-07-08T03:30:24.136+03:00</updated><category term='yorumlayıcı'/><category term='java media player'/><category term='JavaFX access modifiers'/><category term='javascript'/><category term='jmc'/><category term='pardus 2008'/><category term='def'/><category term='JavaFX protected'/><category term='yüksek seviyeli dil'/><category term='JavaFX public-init'/><category term='Decora'/><category term='JavaFX variables'/><category term='video player'/><category term='TDK'/><category term='assembler'/><category term='basit java video player'/><category term='JavaFX SDK 1.0'/><category term='amatör programlama'/><category term='RIA'/><category term='assembly'/><category term='forum'/><category term='java media components'/><category term='derleyici'/><category term='programlama'/><category term='JavaFX SDK 1.0 yayınlandı'/><category term='JavaFX Mobile'/><category term='JavaFX public'/><category term='JavaFX programlama dili'/><category term='değişkenler'/><category term='JavaFX public-read'/><category term='JavaFX 1.1'/><category term='script'/><category term='JavaFX language'/><category term='türkçe'/><category term='JavaFX değişkenleri'/><category term='java'/><category term='bilgisayar'/><category term='public-init'/><category term='anadolu parsı'/><category term='pardus'/><category term='blog'/><category term='JavaFX de değişkenler'/><category term='milli işletim sistemi'/><category term='JavaFX'/><category term='var'/><category term='programlama dili'/><category term='düşük seviyeli dil'/><category term='high-level language'/><category term='pardus 2008 beta'/><category term='interpreter'/><category term='günlük'/><category term='JavaFX package'/><category term='low-level language'/><category term='JavaFX1.1'/><category term='Linux'/><category term='tartışma'/><category term='public-read'/><category term='Scenegraph'/><category term='türk dil kurumu'/><category term='compiler'/><category term='script dili'/><title type='text'>JavaFX</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-7502120239128415293</id><published>2010-02-21T09:23:00.023+02:00</published><updated>2010-03-02T01:13:59.203+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX access modifiers'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX public-read'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX public-init'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX package'/><category scheme='http://www.blogger.com/atom/ns#' term='public-read'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX protected'/><category scheme='http://www.blogger.com/atom/ns#' term='public-init'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX public'/><title type='text'>Erişim kısıtlamaları (Access Modifiers)</title><content type='html'>Erişim kısıtlamalarına (Access Modifiers) girmeden önce bazı şeyleri anlatmak ve/veya açığa kavuşturmak istiyorum. İlk mesele java bilenlerin aşina olduğu paket mantığıdır. Paket mantığı C++ (C#) da isim uzayları(namespace) ile aynıdır. Peki paket mantığı nedir? Bir dil büyüdükce ve onu destekleyen kütüphaneler arttıkca bazı meseleler kendini gösterir. Örneğin sınıf adlarına isim bulma konusu büyük bir dert olabilir. Yazdığınız bir programda iki kütüphane olsun. Birisi dosya formatı olarak XML'yi kullanmak için XML kütüphanesi diğeri ise XML dosyasındaki verileri kullanarak belirli bir veriyi işleyecek matematik kütüphanesi olsun. Şimdi bu kütüphaneler içinde XML dosyasını işlemek için Process sınıfı ve matematik kütüphanesinde veriyi işleyecek Process sınıfı olsun. Bu durumda derleyici hangi sınıfı kullanmak istediğinizi nasıl ayırt edecek. İşte bu duruma javanın yaklaşımı paket (Package) C++'ın ise isim uzayıdır. Örneğimize göre XML kütüphanesinde Process sınıfı w3c.xml.core paketinde yer alabilirken matematik kütüphanesinde org.dataminening.core paketinde yer alır. Bu durumda derleyici hangi durumda hangi sınıfı kullanacağını sınıfın önüne paket ismini koymamızdan dolayı biliyordur.&lt;br /&gt;
&lt;br /&gt;
Örnek:&lt;br /&gt;
&lt;pre class="brush:java"&gt;w3c.xml.core.Process processXml = new w3c.xml.core.Process();
org.dataminening.core.Process processData = new w3c.xml.core.Process();
&lt;/pre&gt;Fiziksel olarak paketler diskiniz üzerinde iç içe geçmiş dizinlerden oluşur.&lt;br /&gt;
&lt;br /&gt;
Örnek: w3c dizininin içinde xml dizini xml dizinin içinde de core dizini ve core dizininin içinde de Process klas dosyası vardır.&lt;br /&gt;
&lt;br /&gt;
Aynı seviyede dosyalar olabilir. w3c dosyasının içinde html dosyası v.s. gibi.&lt;br /&gt;
&lt;br /&gt;
Paket mevzu JavaFX de de aynı şekildedir. Bunu anlatmamın sebebi bir çok JavaFX script dosyasının olacağı ve bu dosyaların belirli görevler için belirli paketlerde toplanmasının uygun olacağıdır.&lt;br /&gt;
Örneğin bütün matematik sınıflarının Math paketinde ya da alt paketler şeklinde (math.trigonometry math.polynomial v.s)&lt;br /&gt;
&lt;br /&gt;
Gelelim ikinci meseleye: Java JavaFX'e göre daha katı kuralları olan bir dil demiştik. Ancak java ile JavaFX arasındaki bu farkın sebebi belli. Java bir dil JavaFX bir script dili.&lt;br /&gt;
Aradaki farklar ise (ki sadece konuyla ilgili olanları ele alacağım) :&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Javada sınıfları (arayüzler v.s) tek bir dosyada ya da ayrı ayrı dosyalarda yazabilirsiniz. Ancak sınıflar arası bilgi alışverişi aynı dosya veya ayrı dosya da olmaları bakımından bir fark oluşturmaz ve dosya sadece bir metni (kaynak kodu) tutar. Fakat JavaFX de her dosya aynı zaman da bir script dosyası demektir ve buna göre bazı ilişkiler değişir.&lt;/li&gt;
&lt;li&gt;Java da sınıf (arayüzler v.s.) dışında değişken ve/veya metod (fonksiyon) tanımlanamaz. JavaFX de ise bir script dosyasında bir fonksiyon(metod) ve/veya değişken tanımlanabilir.&lt;/li&gt;
&lt;/ol&gt;Örneğin: &lt;br /&gt;
person.java kaynak dosyası:&lt;br /&gt;
&lt;pre class="brush:java"&gt;class Person {
....
}
class Employer extends Person {
...
}
Person person = new Person(); // Derleyici hata verir. Java dili böyle bir özellik desteklemez.
int count = 0; // Derleyici hata verir. Java dili böyle bir özellik desteklemez.
Person getPerson () {
...
} // Derleyici hata verir. Java dili böyle bir özellik desteklemez.
&lt;/pre&gt;person.fx kaynak dosyası:&lt;br /&gt;
&lt;pre class="brush:javafx"&gt;class Person {
....
}
class Employer extends  Person {
...
}
var person =&amp;nbsp; Person{}; //  Problem yok JavaFX bu deklerasyonu doğru kabul eder.

var count = 0; // Problem yok JavaFX bu deklerasyonu doğru kabul eder.
function getPerson ():Person {
...
} // Problem yok JavaFX bu deklerasyonu doğru kabul eder.
&lt;/pre&gt;Tüm bu meselelerden sonra erişim konusunun önünde açıklanması gereken son bir mesele kaldı. Sınıf sınıfların kalıtımı ve paket erişiminin ilişkileri.&lt;br /&gt;
Benzer işleri yapan sınıfları aynı paketlere yerleştirmek gerekliliği doğal olarak açıktır. Örneğin Swing kütüphanesindeki kullanıcı arayüzü bileşenleri javax.swing paketinde yer alır. Aynı paket ile farklı paketler arasında erişim durumları söz konusudur. Sınıflar arası ise kalıtım mekanizmasından dolayı meydana gelen erişimler söz konusudur. Tüm bunlar büyük bloklara erişim gibidir. Şöyle ki sınıfa erişmek programın büyük parçalarına erişmektir. Halbuki daha küçük fonksiyonel parçalar vardır ki bunlar ise bir değişken ve/veya metot olabilir. Maddeler halinde özetlersek erişilebilecek şeyler şunlardır:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Sınıflara erişim durumları (Başka paketten sınıf diğer paketten sınıfı genişletebilir ya da genişletemez.)&lt;/li&gt;
&lt;li&gt;Değişkenlere erişim durumları (Alt sınıf, farklı paketten sınıf)&lt;/li&gt;
&lt;li&gt;Metotlara erişim durumları  (Alt sınıf, farklı paketten sınıf)&lt;/li&gt;
&lt;/ol&gt;Peki bu mekanizmalar neden gerekli. Tabiki kodu kendinizden yada bir başkasından korumak için. Bazen geliştirici kodu kendi istediğini yaptırmak için değiştirir. Örneğin kafanızda bir plan var ve bunun için bir kütüphane kullanıyorsunuz. Kütüphanenin bir sınıfındaki değişkenin erişim kısıtlaması olmadan kullanıldığını düşünelim. Siz doğal olarak kütüphanenin bu değişkeninin içeriğini sizin aleyhinize değiştirmek isteyeceksiniz. Peki bu kütüphanenin kaynak koduna erişiminizin olmadığını düşünecek olursak bunun sonuçları ne olacaktır. Şöyle ki kod açık kaynaklı olsaydı siz içeriğini değiştireceğiniz değişkenin meydana getireceği yan etkileri tahmin edebilirdiniz.Örneğin bir veritabanını yönetiyorsanız bütün tabloları erişilmez yapabilirsiniz mesela. Diyelim ki kaynak kodu mevcut. Bu durumda çok basit bir kütüphane değilse sonradan oluşacak yan etkileri nerden bilebilirsiniz?!&lt;br /&gt;
Bazen de beraber çalışan bir grup programcı birbiri ile ilişkili kütüphaneleri yazarken bir diğerinin yaptığını yıkabilir ya da uzun süre dokunmadığınız ve çok açıklayıcı olmadığınız koda geri döndüğünüzde işleri karıştırabilirsiniz. Son olarak (ki en önemlisi) bazı kodlar kötü niyetli yazarlar tarafından kullanılabilir. Örneğin Appletların çoğu durumda yerel kaynaklara erişimi yoktur. Yerel kaynaklara erişimi kısıtlayan değişkenin değerini değiştirerek yazar kullanıcının dosyalarına erişebilir.&lt;br /&gt;
&lt;br /&gt;
Paketti script dosyasıydı ayrı paketlerdeki sınıflardı derken geldik asıl olaya:&lt;br /&gt;
&lt;br /&gt;
Erişim kısıtlamalarının anahtar kelimeleri vardır. Bu anahtar kelimeler önüne geldikleri ögeye göre erişim yetkilerini değiştiriyor. Peki bu kelimeler nelerdir.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;public (genel erişim).&lt;/li&gt;
&lt;li&gt;public-read (yanlızca okumak için genel erişim ve sadece değişkenlere uygulanabilir.)&lt;/li&gt;
&lt;li&gt; public-init (yanlızca kullanıma hazırlamak için ve sadece değişkenlere uygulanabilir.)&lt;/li&gt;
&lt;li&gt;protected (korunmuş)&lt;/li&gt;
&lt;li&gt;package (paket seviyesinde)&lt;/li&gt;
&lt;/ol&gt;Public, protected java'dan tanıdık ama diğerleri özellikle package hem yani hem de kafa karıştırıcı. Peki private (özel ya da gizli diyebilirsiniz) nerde. Private JavaFX de öntanımlı erişim. Yani siz bir sınıfın fonksiyonun ve değişkenin önüne bu anahtar kelimeleri eklemezseniz private olarak kısıtlanmış olur.&amp;nbsp; Package ise değişken sınıf ve functionların önüne geleceği için paket tanımlamasından ayrılır. Zaten paket tanımlaması dosyanın en başında yapılır ve sadece aralarında noktalar bulununan dosya hiyerarşisi ile ifade edilir.&lt;br /&gt;
Şimdi bu anahtar kelimeleri bir inceleyelim. &lt;br /&gt;
&lt;br /&gt;
Public adı üzerinde herkese açıktır. Örneğin:&lt;br /&gt;
&lt;pre class="brush:javafx"&gt;public var isim = "";

public function topla(x:Integer, y:Integer):Integer{ return x+y; } //JavaFX de son satırda return ve ";" gerek yoktur.

public class araba {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var model:String;
}
&lt;/pre&gt;Bu sınıf, değişken ve fonksiyonlara herhangi bir yerden yani aynı paketteki yada ayrı paketteki script dosyaları ve sınıflardan v.s ulaşabilirsiniz.&lt;br /&gt;
&lt;br /&gt;
Protected ise korunmuş anlamındadır. Korumadan kasıt eğer bir sınıf diğerini genişletiyorsa aynı paket içerisinde de olsa ayrı paket içerisindede olsa sınıf, değişken yada fonksiyona erişimi vardır. Sınıfların önüne protected gelmesi JavaFX de yenidir. Yani java da class anahtar kelimesinin önüne protected kelimesi gelmez. Aslında bir script dosyası derlendiği zaman bir java sınıfı haline gelir. Dolayısı ile protected sınıf olası ve mantıklı bir yaklaşım. &lt;br /&gt;
&lt;pre class="brush:javafx"&gt;protected var isim = "";

protected function topla(x:Integer,  y:Integer):Integer{ return x+y; } //JavaFX de son satırda return ve ";"  gerek yoktur.

protected class araba {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var  model:String;
}
&lt;/pre&gt;Package anahtar kelimesi ise önüne geldiği sınıf, değişken ve fonksiyonun sadece aynı pakette bulunan sınıflar tarafından ulaşılmasını sağlar. Bu davranış java da eğer bir değişkenin, sınıfın ve fonksiyonun önüne hiç bir erişim kısıtlaması anahtar kelimeleri getirmezseniz mümkündür(JavaFX de aynı davranışın script dosyaları için geçerli olduğunu hatırlayın).&lt;br /&gt;
&lt;pre class="brush:javafx"&gt;package org.karakan.tamer; // Burada paket tanımı var. Bu tanımı bir erişim kısıtlayıcı anahtar kelimesi olan package ile karıştırmayın.

package var isim = ""; 

package function topla(x:Integer,  y:Integer):Integer{ return x+y; } //JavaFX de  son satırda return ve ";"  gerek yoktur.

package class araba {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var  model:String;
}
&lt;/pre&gt;public-read anahtar kelimesi yanlızca değişkenler için kullanılır. public-read ile ilgili kurallar:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Her yerden okunabilir. (Farklı paketteki sınıftan aynı yada farklı script dosyasından v.s ). Fakat her yerden değeri değiştirişemez.&lt;/li&gt;
&lt;li&gt;Eğer script dosyasında tanımlanmışsa o tanımlandığı dosyadan yeniden değer atanabilir.&lt;/li&gt;
&lt;li&gt;Eğer sınıf içinde deklere edilmişse o sınıfın veya sınıfı genişleten ve aynı script dosyası içindeki diğer sınıftan yeniden değer atanabilir.&lt;/li&gt;
&lt;li&gt;Başka bir script dosyasında tanımlanan sınıfı diğer script dosyasındaki sınıfı genişletse bile değişkene yeni değer atayamaz.&lt;/li&gt;
&lt;/ol&gt;Aslında public-read tek başına yada package veya protected ile birlikte kullanılabilir. Package ve protected anahtar kelimesinin değişkenin değerinin okunmasına bir etkisi yoktur. Etkisi değişkeninin değerinin değiştirilmesi üzerinedir. Başına package gelen değişkenin kuralları:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Her yerden okunabilir. (Farklı paketteki sınıftan aynı yada farklı  script dosyasından v.s ). Fakat her yerden değeri değiştirişemez.&lt;/li&gt;
&lt;li&gt;Paket içindeki tüm script dosyalarından değeri değiştirlebilir.&lt;/li&gt;
&lt;li&gt; Eğer sınıf içinde deklere edilmişse o sınıfın veya sınıfı genişleten ve  aynı script dosyası içindeki diğer sınıftan yeniden değer atanabilir.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Başka bir script dosyasında tanımlanan fakat aynı paketteki sınıf diğer sınıfı genişletiyorsa değişkenin değerini değiştirebilir.&lt;/li&gt;
&lt;/ol&gt;Eğer public-read in başına protected kelimesi gerekirse: Başka bir script dosyasında tanımlanan fakat ayrı paketteki sınıf diğer  sınıfı genişletiyorsa değişkenin değerini değiştiremez.&lt;br /&gt;
&lt;br /&gt;
public-init için public-read için geçerli olan herşey geçerli. Farklı olan ise public-init olan bir değişkene heryerden ilk değer atanabilir demek. İlk değeri atadıktan sonra onu değiştirmeye kalkarsanız public-read kuralları ile karşı karşıya kalırsınız.&lt;br /&gt;
&lt;pre class="brush:javafx"&gt;public-read var id=12;
package public-read var id=12; 
protected public-read var id=12;
&amp;nbsp; 
public-init var serialNumber = "cdRT1045" 
package public-init var serialNumber = "cdRT1045"
protected public-init var serialNumber = "cdRT1045"
&lt;/pre&gt;Sanırım erişim kısıtlamaları (erişim kontrolcüleri)hakkında söyleyebileceklerim bu kadar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-7502120239128415293?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/7502120239128415293/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=7502120239128415293' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/7502120239128415293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/7502120239128415293'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2010/02/erisim-kstlamalar-access-modifiers.html' title='Erişim kısıtlamaları (Access Modifiers)'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-7581137482335106082</id><published>2009-10-15T17:09:00.008+03:00</published><updated>2009-10-15T22:12:04.084+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX variables'/><category scheme='http://www.blogger.com/atom/ns#' term='def'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX değişkenleri'/><category scheme='http://www.blogger.com/atom/ns#' term='var'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX de değişkenler'/><title type='text'>JavaFX de değişkenler</title><content type='html'>JavaFX değişkenleri iki tipdir. Bunlar "&lt;span style="color: rgb(255, 0, 0);"&gt;var&lt;/span&gt;" ve "&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;" dir. Var variable (değişkenin) kısaltılmışı def (define) tanımlamaktır. "&lt;span style="color: rgb(255, 0, 0);"&gt;var&lt;/span&gt;" kullanımı değişkenin değerinin ileride değişebileceğini gösterir. Örneğin "&lt;span style="color: rgb(51, 204, 0);"&gt;var ortalama = 10.0&lt;/span&gt;" ilerde "&lt;span style="color: rgb(51, 255, 51);"&gt;ortalama = 25.0&lt;/span&gt;" olabilir. "&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;" ise farklı ele alınır. "&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;" de değişkene ilk değer atanmak zorundadır ve ilerde programcı tarafından değeri değiştirecek bir atama yapılmayacağı garanti edilir.
Örneğin:
&lt;pre name="code" class="java"&gt;
var ortalama; // ortalamaya ilk değer atanmak zorunda değil.
def euro=2.47; // İlk değer hemen atanmalı.
def dolar; // Derleyici hata verir. İlk değer hemen atanmalı.
euro = 2.13; // Derleyici hata verir. Def olarak atanmış değişken'e değer atanamaz.
&lt;/pre&gt;
JavaFX'in güçlü özelliklerinden biri de &lt;span style="color: rgb(51, 204, 255);"&gt;binding&lt;/span&gt; (bağlanma) mekanizmasıdır. Bu mekanizma değişken başka bir değişkene ya da kod parçasına bağlanabilir.
Örnek:
&lt;pre name="code" class="java"&gt;
var  fizik_notu = 5.6;
var  kimya_notu = 7.2;
var toplam = bind  fizik_notu + kimya_notu;
&lt;/pre&gt;
Bu örnekte fizik ve/veya kimya notu değeri ne zaman değişirse toplam değişkeni tekrar hesaplanıp güncellenir. "&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;" bu örnekte önem kazanır. "&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;"'i bind ile güncel tutabiliriz. Bunun ne anlamı var diye sorabilirsiniz. Şöyle ki değişkeni başka biri değiştiremesin ama bazı durumlar da değişsin istiyorsunuz diyelim. "&lt;span style="color: rgb(255, 0, 0);"&gt;var&lt;/span&gt;" ile değişken değeri yanlışlıklada olsa değişebilir(kodu devir alan başka programcı ya da uykusu gelmiş olan sizin tarafınızdan). Ama "&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;" kullanırsak da değişkeni değiştiremeyiz. Fakat "&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;" i bir kod parçasına bağlarsak hem otomatik güncellenir hem de siz yada başkası yanlışlıkla değiştiremez. Bu durum gerçek hayatta bize başka bir ortamdan (veritabanı, internet)  dolar kurunu alan bir kod yazarak "&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;" değişkenine bağlama ve böylece hem güncel kalıp hem de yanlışlık değişmesi olasılığından kurtulma açısından fayda sağlar.

"&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;" 'in bir faydası da derleyicinin çeşitli optimizasyonlar uygulamasına fırsat verir.

Değişkene sonradan değer atarsanız değer atanana kadar değişkenin tipi bellirli değildir. Atama yapılınca yapılan atamaya göre değişken tipi bellirlenmiş olur. Sert kodlanan dillerde değişkenin tipi hemen belirtilmelidir. Değişken tipi atama yapmadan önce de belirlenebilir. Değişken tipleri aşağıdaki gibidir.

&lt;ul&gt;&lt;li&gt;Integer&lt;/li&gt;&lt;li&gt;Long&lt;/li&gt;&lt;li&gt;Short&lt;/li&gt;&lt;li&gt;Byte&lt;/li&gt;&lt;li&gt;Number&lt;/li&gt;&lt;li&gt;Double&lt;/li&gt;&lt;li&gt;Float&lt;/li&gt;&lt;li&gt;String&lt;/li&gt;&lt;li&gt;Array&lt;/li&gt;&lt;li&gt;Sequence
&lt;/li&gt;&lt;li&gt;Herhangi bir java sınıfı (JButton v.s.)
&lt;/li&gt;&lt;/ul&gt;Örnek:
&lt;pre name="code" class="java"&gt;
var teker_sayısı: Integer = 4;
var PI:Number = 3.14;
var urun_adi:String = "Merck";
var kayit_dosyasi:File;
&lt;/pre&gt;
Gördüğünüz gibi değişken isminin önüne "&lt;span style="color: rgb(255, 153, 255);"&gt;:&lt;/span&gt;" işareti getirerek değişken tipini belirleyebilirsiniz. Number tipi her zaman floattır. Bu durum cep telefonları ile uyumluluk adına belirlenmiştir. Sequence JavaFX'e özel bir değişken tipidir. Integer, short, byte, float, double java daki ile aynıdır. String sınıf olarak değil değişken tipi olarak ele alınır.

Sequenceler dizilere benzerler ancak JavaFX de dil tarafından desteklenen bazı ilginç özelliklere sahiptirler. Sequenceleri diğer yazılarımda ayrı olarak ele alacağım.

Son olarak bir örnek vererek bir özellikten daha bahsedeceğim.
&lt;pre name="code" class="java"&gt;
var x =23;
def y =145;
var a = {  var b =10;
              var c =x+y;
              c/b;
            }
&lt;/pre&gt;
Bu kod parçasında son ifadenin değeri &lt;span style="font-style: italic;"&gt;a&lt;/span&gt; değişkenine atanır. Aynı durum "&lt;span style="color: rgb(255, 153, 0);"&gt;def&lt;/span&gt;" ve bind ile bağlanmış değişkenler içinde geçerlidir. Blok yazımın avantajı okunabilirliği anlatır. Blok içinde tanımlanan &lt;span style="font-style: italic;"&gt;b&lt;/span&gt; ve &lt;span style="font-style: italic;"&gt;c&lt;/span&gt; değişkeni blok dışında geçersizdir. Yani bu değişkenlere erişilemez ve derleyici hata verir.

Değişkenlerin geçerlilik alanını sonraki yazımda işlemeyi düşünüyorum. O zamana kadar esen kalın.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-7581137482335106082?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/7581137482335106082/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=7581137482335106082' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/7581137482335106082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/7581137482335106082'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2009/10/javafx-de-degiskenler.html' title='JavaFX de değişkenler'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-7545298141552925197</id><published>2009-02-12T16:15:00.002+02:00</published><updated>2009-02-12T16:20:09.744+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX 1.1'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX1.1'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX Mobile'/><title type='text'>JavaFX 1.1 Yayınlandı</title><content type='html'>JavaFX'in yeni sürümü JavaFX1.1 indirilmeye hazır durumda. JavaFX takımı mobil profilini common (ortak) profili ile birleştirdi. Bu karar JavaFX geliştiricilerine eğer Masaüstü profilini (Desktop) uygulamarında kullanmazlarsa direkt mobil ortamlarda çalışma garantisini veriyor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-7545298141552925197?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/7545298141552925197/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=7545298141552925197' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/7545298141552925197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/7545298141552925197'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2009/02/javafx-11-yaynland.html' title='JavaFX 1.1 Yayınlandı'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-1454532612053832571</id><published>2009-02-04T14:55:00.005+02:00</published><updated>2009-02-04T15:59:42.151+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java media player'/><category scheme='http://www.blogger.com/atom/ns#' term='video player'/><category scheme='http://www.blogger.com/atom/ns#' term='basit java video player'/><category scheme='http://www.blogger.com/atom/ns#' term='java media components'/><category scheme='http://www.blogger.com/atom/ns#' term='jmc'/><title type='text'>JMC (Java Media Component) ile Basit Java Video Player</title><content type='html'>JavaFx kullanmadan java video oynatıcısı yazmak mümkün. Ancak ilk önce &lt;a href="http://www.javafx.com/"&gt;www.javafx.com&lt;/a&gt; sitesinden JavaFX SDK'yı indirin. Netbeans versiyonu kendi dizininde javafx'i barındırır. Bu yüzden JavaFX SDK'yi seçiyoruz (C: diskine kurmanız işinizi kolaylaştırır). Windows da Bilgisayarımı sağ tıklayıp özellikleri seçiyoruz. Burdan gelişmiş sekmesine ordan da ortam değişkenlerinden sistem değişkenlerin den path değişkenini çift tıklıyorsunuz. Satırın en sonuna noktalı virgül ekleyerek JavaFX SDK'nın yolu+\lib\desktop\ ekliyoruz. Bende bu C:\javafx\lib\desktop şeklindedir. Bunu yapmamızın nedeni video programının birkaç dll dosyasına ihtiyacı var. Aslında dll dosyalarını programımız bulup yükleyebilirdi. Ancak jmc.dll dosyası diğer dll leri kendisi yükleyecek şekilde yapılandırılmış. Dolayısıyla  bu girişim hata ile sonuçlanıyor.
Eğer program Netbeans gibi bir ide yerine komut satırından çalıştırılacaksa jmc.jar dosyası class-path'e eklenmeli. IDE kullananlar ne yapacağını biliyordur diye tahmin ediyorum :)

Programın  bazı açıklamalarını okumanızı tavsiye ederim. Fazla vaktim olmadığından sadece bazı durumları açıkladım.
&lt;pre name="code" class="java"&gt;

import com.sun.media.jmc.Media;
import com.sun.media.jmc.MediaProvider;
import com.sun.media.jmc.control.VideoControl;
import com.sun.media.jmc.control.VideoRenderControl;
import com.sun.media.jmc.event.BufferDownloadListener;
import com.sun.media.jmc.event.BufferDownloadedProgressChangedEvent;
import com.sun.media.jmc.event.DurationChangedEvent;
import com.sun.media.jmc.event.MediaDurationListener;
import com.sun.media.jmc.event.MediaSizeListener;
import com.sun.media.jmc.event.MediaStateEvent;
import com.sun.media.jmc.event.MediaStateListener;
import com.sun.media.jmc.event.SizeChangedEvent;
import com.sun.media.jmc.event.VideoRendererEvent;
import com.sun.media.jmc.event.VideoRendererListener;
import com.sun.media.jmc.track.MediaTrack;
import com.sun.media.jmc.type.ContainerType;
import com.sun.media.jmc.type.ProtocolType;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.net.URI;
import java.util.List;
import java.util.Map;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;

/**
*
* @author Tamer
*/
public class Main {

  public Main() {

      JFileChooser chooser = new JFileChooser("D:/filimler/stargate/1/SG.A.05.01/");
      if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
          URI resource = chooser.getSelectedFile().toURI();
final MediaProvider mediaProvider = new MediaProvider(resource); // Media akışı (streamming) kullanmak istyorsanız başına  // (açıklama)  ekleyin.


          //final MediaProvider mediaProvider = new MediaProvider(URI.create("http://sun.edgeboss.net/download/sun/media/1460825906/1460825906_2956241001_big-buck-bunny-640x360.flv")); // Media akışı (streamming) kullanmak istyorsanız başına  // (açıklama)  ekleyin.
//            System.out.println(mediaProvider.getCapabilities());
//            System.out.println(mediaProvider.getControls());
//            System.out.println(mediaProvider.getCurrentPlayCount());
//            System.out.println(mediaProvider.getDuration());
//            System.out.println(mediaProvider.getMediaTime());
//            System.out.println(mediaProvider.getName());
//            System.out.println(mediaProvider.getPlayCount());
//            System.out.println(mediaProvider.getRate());
//            System.out.println(mediaProvider.getSource());
//            System.out.println(mediaProvider.getStartTime());
//            System.out.println(mediaProvider.getStopTime());

          mediaProvider.addBufferDownloadListener(new BufferDownloadListener() {

              public void mediaDownloadProgressChanged(BufferDownloadedProgressChangedEvent arg0) {
                  System.out.println(arg0.getProgress());
              }
          });
          mediaProvider.addMediaDurationListener(new MediaDurationListener() {

              public void mediaDurationChanged(DurationChangedEvent arg0) {
                  System.out.println(arg0);
              }
          });
          mediaProvider.addMediaSizeListener(new MediaSizeListener() {

              public void mediaSizeChanged(SizeChangedEvent arg0) {
                  System.out.println(arg0);
              }
          });
          mediaProvider.addMediaStateListener(new MediaStateListener() {

              public void endOfMediaReached(MediaStateEvent arg0) {
                  System.out.println(arg0);
              }

              public void playerStarted(MediaStateEvent arg0) {
                  System.out.println(arg0);
              }

              public void playerStopped(MediaStateEvent arg0) {
                  System.out.println(arg0);
              }

              public void playerRepeated(MediaStateEvent arg0) {
                  System.out.println(arg0);
              }

              public void stopTimeReached(MediaStateEvent arg0) {
                  System.out.println(arg0);
              }
          });
          mediaProvider.addPropertyChangeListener(new PropertyChangeListener() {

              public void propertyChange(PropertyChangeEvent evt) {
                  System.out.println(evt.getPropertyName());
              }
          });
          VideoControl control = mediaProvider.getControl(VideoControl.class);
          final JComponent videoPane = control.getVideoPane();
          videoPane.setIgnoreRepaint(true);
          final JFrame window = new JFrame();
          window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          window.add(videoPane);
          window.pack();
          window.setVisible(true);
          //control.setResizeBehavior(VideoControl.ResizeBehavior.Stretch);
//            System.out.println(videoPane.getIgnoreRepaint());
          window.addMouseListener(new MouseAdapter() {

              @Override
              public void mouseClicked(MouseEvent e) {
                  if (e.getClickCount() == 2) {
                      if (GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getFullScreenWindow() != null) {
                          GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(null);
                          window.dispose();
                          window.add(videoPane);
                          window.setIgnoreRepaint(false); // Tam ekran apisi için gerekli
                          videoPane.setIgnoreRepaint(false);
                          window.setUndecorated(false);
                          window.setResizable(true);
                          window.pack();
                          window.setVisible(true);
                      // AWTUtilities.setWindowShape(window, new Ellipse2D.Float(0, 0, 500, 500)); // Pencereyi belirli bir şekle ayarlar. Ancak window.setUndecorated(true); olarak ayarlanmalıdır.
                      } else {
                          window.dispose();&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-1454532612053832571?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/1454532612053832571/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=1454532612053832571' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/1454532612053832571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/1454532612053832571'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2009/02/jmc-java-media-component-ile-basit-java.html' title='JMC (Java Media Component) ile Basit Java Video Player'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-6963990214243225038</id><published>2009-01-23T14:28:00.002+02:00</published><updated>2009-01-23T14:33:17.061+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX programlama dili'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX language'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><title type='text'>JavaFX dersleri</title><content type='html'>Günlüğüm de JavaFX dersleri vermek istiyorum. Ancak openjfx projesindeki değişiklere bakarak önümüzdeki sürümlerde -ki bugünlerde çıkmasını bekliyorum- byte,short gibi değişken tiplerinin gelmesi muhtemel gözüküyor. Bu yüzden programcılığın en temel yapı taşları olan değişkenler derslerin en başında gelince bir türlü başlayamıyorum.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-6963990214243225038?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/6963990214243225038/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=6963990214243225038' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/6963990214243225038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/6963990214243225038'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2009/01/javafx-dersleri.html' title='JavaFX dersleri'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-6332911340788560010</id><published>2008-12-04T16:08:00.003+02:00</published><updated>2008-12-04T16:15:16.052+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX SDK 1.0 yayınlandı'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX SDK 1.0'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><title type='text'>JavaFX SDK 1.0 Yayınlandı!</title><content type='html'>Sun Microsystems JavaFX SDK 1.0 yayınladı. Ancak linux ve solaris kullanıcıları biraz bekleyecek. Bendeniz ise incelemelerimi bitirince günlüğümde konuyla ilgili yazılar yayınlayacağım.(Tabi zavallı bir diş hekiminin programcılık anlayışı ile &lt;:)))

&lt;a href="http://www.javafx.com/"&gt;http://www.javafx.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-6332911340788560010?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/6332911340788560010/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=6332911340788560010' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/6332911340788560010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/6332911340788560010'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2008/12/javafx-sdk-10-yaynland.html' title='JavaFX SDK 1.0 Yayınlandı!'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-2455573574186617820</id><published>2008-10-24T10:32:00.003+03:00</published><updated>2008-10-24T13:52:24.490+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='yorumlayıcı'/><category scheme='http://www.blogger.com/atom/ns#' term='script dili'/><category scheme='http://www.blogger.com/atom/ns#' term='interpreter'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='derleyici'/><title type='text'>Yorumlayıcı (interpreter)</title><content type='html'>Yorumlayıcı (interpreter) için en basit örnek firefox gibi web tarayıcılarının içine gömülmüş olan yorumlayıcılardır. Yorumlayıcıların programlama diline script denir. Yorumlayıcıların varlığının önemi onu anlatmaktan daha önemlidir. Yorumlayıcılarla yazılan programlar (python, javascript, v.s) direkt derlenen programlara göre daha basit geliştirme sürecine yol açarlar. Bu sürece en büyük katkıları programlama dillerine göre script dillerinin daha basit, gevşek ve hata töleranslı  kurallar ile yazılıyor olmasıdır. Ayrıca temel komutlarının yanında diğer programlama dillerinde satırlarca kod yazarak oluşturduğunuz bazı yapıları (telefon listesi gibi) tek bir anahtar kelimelerle sağlayabilirler. Yorumlayıcılar web sayfaları üretmek, program yazmak yada belirli programların içerisinde programa otomatik olarak bazı şeyler yaptırmak için kullanılabilir. Firefox ve internet explorer içerisinde javascript komutları ile html ve css yapılarına ulaşarak onları değiştirmek için kullanılmasına program içine gömülü yorumlayıcı örneği uyar. Yorumlayıcıların en büyük dezavantajı ise hızlarıdır. Yorumlayıcılar aslen herhangi bir programlama dili ile yazılmış bir programlardır. Doğal olarak bizim verdiğimiz komutların işletilmesi için yorumlayıcının yazıldığı programlama dilinde pek çok komut yürütmesi gerekir. Diğer bir performans düşürücü durum da yazdığınız script kodlarının çalıştırılması için ilk önce yorumlayıcının belleğe yüklenip çalıştırılması lazım. Bu da script kodlarının işletilmesini geciktirecektir. Script dilleri derlenmediği için düz tekst dosyalarında tutulurlar. Bu da değişiklik yapmayı kolaylaştırır. Örneğin siz C gibi geleneksel bir programlama dili kullanarak bir program yazdınız. Bu programı derlemek 10 dakika sürsün. Programı geliştirirken bir hata yaptığınızı fark ettiniz. Bu hattayı düzelttikden sonra tekrar derlemeniz gerekir. Bu durumda bir 1o dakika daha derleme süresi kadar bekleyeceksiniz. Farklı olarak javascriptle bir web sayfasın da kullanılmak üzere şık bir efekt hazırladınız ancak efektinizin animasyon süresini biraz uzun tuttuğunuzu fark ettiniz. Bu durumda değişikliği yaptıktan sonra sadece yenile düğmesine basmanız değişikliğin etkisini görmeniz için yeterlidir. Ayrıca efektininiz hiçbir değişiklik yapmadan firefoxun çalıştığı bütün ortamlarda (linux, mac,solaris, v.s ) çalışacaktır. Scriptler tasarım şekline göre programcılığın derinine inmeden basit bir şekilde uygulanacak biçimde olabilirler. Örneğin 3D tasarım programlarından 3DStudio Max MaxScript adında gömülü script dili kullanır. Bu sayede tasarımcı basit bir şekilde sahnedeki öğeleri değiştirebilir. Özellikle yapılan değişiklikler basit ama gerekli ise script kullanmak daha mantıklıdır. Script dilleri bazen işlevselliği arttırır. Örneğin öyle bir program yazacaksınızki pek çok iş yapacak ama bu işler sizin önceden tahmin edemeyeceğiniz türden kullanıcı istekleri olacak. Buna en iyi örnek geogebra (MathLab da olabilir.) adındaki geometrik ve cebirsel ifadelerin grafiğini çizen program verilebilir. Kullanıcı böyle bir durumda pek çok formül ve bilgi girecektir ve bunlar önceden tahmin edilemez olacaktır. Bu durumda onlara esnek bir dil sağlamalısınız ki onlarda anahtar kelimeleri kullanarak gereken cümleyi (formülü) yazsın. Burada programın kendisi yorumlayıcıdır. Gömülü script dilleri dışındaki script dilleri yorumlayıcının tasarımına göre hali hazırda bulunan bir kütüphaneyi gerektiğinde script avantajı ile kullanabilirler. Örneğin Python scriptleri gereken kurulum yapılmışsa MySql, GTK, gibi kütüphanelere erişebilirler. Scriptlerin diğer bir avantajı da yorumlayıcı sayesinde hatta töleranslı olmalarıdır. Tabi ki yorumlayıcı yada kullandığı yerel kütüphaneler (MySql gibi) hatalı çalışmıyorsa. C ile yazacağınız bir program işletim sisteminin çökmesine neden olabilir yada bir başka programa veya donanıma zarar verebilir (Tampon taşması v.s). Ancak script dili ile yazılan diller genelde direkt komut yürütmedikleri için böyle bir duruma sebep vermezler. Ayrıca hata ayıklama da script dillerinde daha kolaydır. Çünkü script dilleri genellikle direkt olarak işlemcide çalıştırılmazlar. Bazı script dilleri (Python gibi) çalışma zamanı (run-time) kısalsın diye derleme yaparlar. Ancak bu derleme dosyaları yinede exe dosyaları gibi direkt çalıştırılabilir dosyalar değildir. Script dosyası değişirse yorumlayıcı tekrar derleme işlemi ile bu ara-dosyayı günceller. Eğer script diliniz pek çok farklı platformda çalışabiliyorsa o zaman derlenmiş ara dosyalar bir platformdan diğerine uyumsuzdur. Örneğin sizin script dosyanızın derlenmiş versiyonu diğer platfomda çalışmaz. Ama script dosyanız bu platform için tekrar derlenir. Script derleme işlemi javadaki runtime compiler (hotspot) ile karıştırılmamalıdır. Hotspot java derleyicisi tarafından derlenmiş dosyaları eğer uygunsa anında işlemci diline çevirir. Bu işlem dosya üzerinde değil java çalışırken eş zamanlı yapılır (Bence javaya aşık olmak için bir neden daha). Evet şimdilik yorumlayıcı muhabbeti bu kadar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-2455573574186617820?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/2455573574186617820/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=2455573574186617820' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/2455573574186617820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/2455573574186617820'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2008/10/yorumlayc-interpreter.html' title='Yorumlayıcı (interpreter)'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-1674426121151946781</id><published>2008-10-11T00:47:00.006+03:00</published><updated>2008-10-11T15:15:03.807+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX variables'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX programlama dili'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX language'/><category scheme='http://www.blogger.com/atom/ns#' term='değişkenler'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX değişkenleri'/><title type='text'>JavaFX de değişkenler</title><content type='html'>JavaFX de değişken tanımı:
&lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;değişkenismi&lt;/span&gt; : &lt;span style="color: rgb(102, 0, 204);"&gt;değişkentürü&lt;/span&gt; = &lt;span style="color: rgb(0, 153, 0);"&gt;değer&lt;/span&gt;;
&lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;ogrenci_notu&lt;/span&gt; : &lt;span style="color: rgb(102, 0, 204);"&gt;Integer&lt;/span&gt; = &lt;span style="color: rgb(0, 153, 0);"&gt;10&lt;/span&gt;;
şeklindedir. "var" niteleyicisi değişken tanımı yapılacağını belirtir. Değişken türü eğer değişken değeri hemen atanacaksa önemsizdir.
&lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; image&lt;/span&gt; = Image {
  url: "{__DIR__}/myPicture.png"
}
Ancak hemen değer atamayacağınız değişkenlerde değişken tipi belirtilmelidir.
&lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; image&lt;/span&gt; : &lt;span style="color: rgb(102, 0, 204);"&gt;Image&lt;/span&gt;;
...
&lt;span style="color: rgb(255, 0, 0);"&gt;image&lt;/span&gt;.&lt;span style="color: rgb(102, 102, 102);"&gt;url&lt;/span&gt;=&lt;span style="color: rgb(255, 153, 0);"&gt;"http://host.com/myimage.jpg"&lt;/span&gt;;
&lt;span style="color: rgb(0, 0, 0);"&gt;
&lt;span style="color: rgb(255, 255, 255);"&gt;Değişken tipleri Integer, Number, String (karakter katarı), Duration, Sequence, fx sınıfı yada java sınıfı olabilir.&lt;/span&gt;

&lt;span style="color: rgb(255, 255, 255);"&gt;Özel Duaration değişkeni : Bu değişken özellikle animasyon desteği için eklenmiştir. Fakat illa bu durum için kullanmak zorunlu değildir.&lt;/span&gt;

&lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;son_tur&lt;/span&gt; : &lt;span style="color: rgb(102, 0, 204);"&gt;Duration&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 0);"&gt;10s&lt;/span&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;yineleme_zamanı&lt;/span&gt; : &lt;span style="color: rgb(102, 0, 204);"&gt;Duration&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 0);"&gt;10ms&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;saat&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 0);"&gt;10s&lt;/span&gt;

Duration fx sınıfı zaman değişkeni için destek sağlar. s= Saniye ms = Milisaniye cinsinden değişken tanımlayabilirsiniz.

Sequence: Javaki dizilerin karşılığı olarak görülebilir. Ancak sequenceler bundan daha fazlasıdır. Sequence değişkenleri string, number ve diğer sınıf değişkenleri olabilir. Number tipi sequenceler javafx de bağzı işleri kolaylaştırmak için özel tanımlamalar sağlar.Bu başlıkta sadece tanımlama özelliklerini veriyorum. Bu konuyu ayrıca bir başlıkta daha geniş olarak ele alacağım.

String sequence tipine örnek:

&lt;span style="color: rgb(51, 51, 255);"&gt;var &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;yemekler &lt;/span&gt;=&lt;span style="color: rgb(51, 204, 0);"&gt;["Mantar sote", "Fırın tavuk", "Makarna"]&lt;/span&gt;;

Number sequence tipine örnek:

&lt;span style="color: rgb(51, 51, 255);"&gt;var &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;sayısalloto&lt;/span&gt; &lt;/span&gt;= &lt;span style="color: rgb(0, 153, 0);"&gt;[1,4,12,15,23,36,42]&lt;/span&gt;
&lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;birden_ona_kadar_rakamlar&lt;/span&gt; = &lt;span style="color: rgb(0, 153, 0);"&gt;[1..10] &lt;/span&gt;
Node sınıfını genişleten elips sınıfının sequence tipi  değişkende toplanması:
&lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;nodes&lt;/span&gt; = &lt;span style="color: rgb(0, 153, 0);"&gt;[Ellipse{}, Ellipse{}]&lt;/span&gt;
&lt;span style="color: rgb(51, 51, 255);"&gt;var&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;nodes&lt;/span&gt; = &lt;span style="color: rgb(0, 153, 0);"&gt;[Ellipse{}, Rectangle{}]&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-1674426121151946781?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/1674426121151946781/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=1674426121151946781' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/1674426121151946781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/1674426121151946781'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2008/10/javafx-de-deikenler.html' title='JavaFX de değişkenler'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-3259915183345332610</id><published>2008-09-20T04:47:00.008+03:00</published><updated>2010-03-02T02:14:43.248+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='RIA'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='java media components'/><category scheme='http://www.blogger.com/atom/ns#' term='Decora'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='jmc'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='Scenegraph'/><category scheme='http://www.blogger.com/atom/ns#' term='derleyici'/><title type='text'>JavaFX teknolojisi nedir?!</title><content type='html'>JavaFX teknolojisi Sun microsystems firmasının RIA (Rich Internet Applications - Zengin Internet Uyugulamaları -) alanında yaptığı bir teknoloji atılımıdır (yatırımı). Teknoloji terimini kullandım çünkü her ne kadar JavaFX bir script dili gibi gözükse de bundan çok ileri bir şeydir. JavaFX script dilinin yanında bu dil kullanılarak yaratılmış bileşenler ve yine bu bileşenleri desteklemek adına işletim sistemine özgü kütüphaneler içerir. JavaFX mobil cihazlar, sınırlı bağlantı içeren mobil cihazlar ve popüler işletim sistemlerinde desteklenmek üzere geliştirilmektedir. JavaFX'in script dili henüz tam oturmuş değil önceki yazımdaki siteden changelogları takip ederseniz yada en güncel kaynak dosyaları incelerseniz v4 de olduğunu görürsünüz. Ancak SDK Preview den anlaşıldığı kadarıyla kolay ve etkin bir dil olacak. JavaFX Java ile aynı yoldan giderek bağzı teknikleri anahtar kelimelerle dil düzeyinde desteklemiş. JavaFX de animasyon için "tween" anahtar kelimesi kullanılması buna güzel bir örnek. JavaFX'in ilginç bir yanı da java sınıflarını direkt kullanabilmesi. Yani script dostanızda import java.io.*; yada import javax.swing.JFrame; kullanarak o sınıfı bir değişkene atayabilir ve sonra özelliklerine ve metotlarına ulaşabilirsiniz. Bu durumda JavaFX Java teknolojilerinin hepsini barındırıyor. Ancak bu tarz da ( Java sınıflarını import ederek) yazılan bir uygulama pek de JavaFX script kullanarak yazılmış olmuyor. Durumu script lehine çevirmek için ( uygulama yazma kolaylığı adına ) Java sınıflarını sarmalıyor ve JavaFX bileşenlerini oluşturuyor.  Peki hedef ne? &lt;ol&gt;&lt;li&gt;Multimedia desteği vermek &lt;/li&gt;
&lt;li&gt;Hem interaktif hem de şık kullanıcı arayüzleri oluşturmak&lt;/li&gt;
&lt;li&gt;JavaFX'in java plug-in'e adapte edilerek internet tabanlı kullanıma açmak&lt;/li&gt;
&lt;li&gt;Kolay kullanım&lt;/li&gt;
&lt;li&gt;Çok platformluluk&lt;/li&gt;
&lt;li&gt;Network tabanlı uygulama &lt;/li&gt;
&lt;li&gt;Hızlı ve etkin programlama&lt;/li&gt;
&lt;li&gt;Geliştirme ortamı desteği&lt;/li&gt;
&lt;/ol&gt;1. Multimedia desteği JavaFX tarafından desteklenmesindeki en önemli sebep artan internet hızı ve depolama kapasitesi nedeni ile artık uygulamaların video ortamlarını desteklemesi gerekliliği. Bu durum video yayınlama sitelerin artışı ve buna ulaşan programlara olan rağbetle kendini belli ediyor. Javada zaten multimedia desteği yok muydu dersek Java Media Framework (JMF) vardı. Ama popüler codecleri desteklemiyordu. JMF 'de üçüncü parti codec desteği ancak java sınıfları ile yazılmış olmalıydı ( Zahmetli ve güncellik zor sağlanıyor). JMF encoderlerı iyi desteklemiyordu. Çok platformlu değildi. Sadece JavaSE destekli ortamlarda çalışıyordu. Java Media Components (JMC): Platforma bağlı multimedia bileşenlerini (DirectShow, Gstreamer) kullanan doğal kütüphane (jmc.dll, jmc.so gibi) ile java sınıfları arasında iletişim kurularak codec desteğinin büyük bir kısmı platformdan sağlandı (codec desteğinin JavaFX den soyutlanması). Kullanıcının istediği codec'i  yüklemesi ve gerekli güncelliği sağlaması kendi elinde oldu ( Lisans Problemleri kullanıcının problemleri haline geldi). Encoding (kodlama) decoding (kodu açma) işlemi çok kolay yapılabilir olacak. Codec' in yerel sistemden sağlanıyor olması durumunda eğer codec destekliyorsa SSE, MMX , çok çekirdekli işlemciden yararlanma , deinterlace v.s. gibi teknolojilerden yararlanmak mümkün . Codecler sisteme kurulu olmasa bile Sun microsystem'in JavaFX'in ileri ki sürümleri için söz verdiği HD ortamları destekleyen hızlı,  On2's TrueMotion codeclerinin rahatlıkla kullanımı mümkün olacak  2. JavaFX' de görsel olan herşey bir düğümdür (Node) ve stage denen sahnelerde sunulurlar. Sahne desteği Sun microsystems'in yürüttüğü scenegraph projesiyle destekleniyor. Bu projede herşey birbiri ile ilişkilli birer düğüm zinciri tıpkı html ağacı gibi. Scenegraph görsel efektleride destekliyor. Görsel efektler Decora projesi ile destekli. Decora platforma yönelik donanım hızlandırması için doğal kütüphanelerin yazıldığı proje. Decora efektleri uygularken eğer destekleniyorsa windows ortamalarında hem DirectX9 hemde OpenGL destekli. Linux, Solaris ve MacOSX de ise OpenGL destekli. Bunun yanından sisteme göre SSE  veya software (yani işlemci) desteği de var. Efektlerin donanım hızlandırması duruma göre DirectX shader language yada Opengl shader language diline çevrilen ancak henüz ayrıntıları belli olmayan java shader language ( jsl ) dili kullanılarak sağlanıyor. Böylece işlemci zamanı boşa harcanmamış oluyor. Eğer ilgili dosyaları bulamazsa (Decora-D3D.dll, v.s gibi) işlemci devreye giriyor. Hangi sistemin kullanıldığı sorgulanabiliyor. JavaFX de Swing bileşenleri scenegraph tarafından desteklenen çizimler, yine ilerde kavuşacağımız ileri düzey bileşenler (akordiyon menü, görünüşleri değiştirilebilir bileşenler -skinable- v.s) ve JMC tarafından gösterilen media Stage eklenebilir tarzda yazılıyor. Bu durumda stage eklenecek her türlü görsel bileşene ayrı ayrı olmak üzere efekt uygulanabiliniyor. Bu da oldukça şık arayüz tasarımlarının önünü açıyor. Efektler birbiri ardına uygulanabiliniyor. SVG desteği JavaFX SDK Preview de var.  3. JavaFX teknolojisinin son zamanlardaki kaynak kodundaki yapılan değişikliklere baktığımız zaman yansıtma (reflection) uygulandığını ve bunun java plug-in desteği ile alaklı olduğunu ifade eden açıklamalar görüyorum. Böylelikle JavaFX java plug-in le etkileşime girecek. Dolasıyla bu durum tarayıcı ortamı ile iletişim ve applet teknolojisinin canlanması anlamına gelebilir. Ancak bu etkileşimin mimarisi zaman içinde belli olacak.  4. JavaFX javafxc, javafx, javafxdoc adlı çalıştırılabilir dosyalarla geliyor. javafxc bir derleyici. javafx gerekli kütüphane dosyaları ve jar dosyalarının yolunu çalışma yoluna ekleyerek scripti çalıştırıyor. javafxdoc ise isterseniz kaynak dosyalarda kullanılan özel etiketlerle belgeler üretiyor. Ancak javafxdoc bu işi javadocdan çok daha iyi yapıyor. javafxdoc'un ürettiği belgeler html ve xml belgesi olabiliyor. Üretilen belgeler görsel olarak zengin ve interaktif.  5. Yine JavaFX teknolojisinin geliştirme deposunu incelediğimiz zaman Windows, Linux, MacOSX ve Solaris platformlarının desteklenmesi konusunda çalışmalar sürmekte. Fakat JavaFX çok platformluk konusunda javanın girdiği her yere girmeye çalışıyor. Bu bağlamda cep telefonları, cep bilgisayarları, dijital televizyon kutuları (Dijitürk gibi), gelişmiş multimedia ürünleri (Blue-Ray) gibi sınırlı bağlantılı cihazlarla bağlantılı cihazlar dahil pek çok ortamda var olma yolunda ilerleyecek.  6. Tabi ki yine her şey network ve buna JMC dahil. JMC akış (streaming) teknolojisini destekleyecek. RIA için gereken destek verilecek. Hali hazırda JavaFX SDK Preview sürümünde resimlerin direkt networkden indirilmesi mümkün.  7. JavaFX Javanın izinden giderek satırlarca kod yazarak elde ettiğiniz bazı teknikleri anahtar kelimeler ile sağlamış bulunuyor. Örneğin bir bileşenin ekranda artan ve azalan şekilde parlaması için ilk önce ilgili efekti uyguluyorsunuz. Sonra uyguladığınız efektin etki derecesini arttırıp azaltarak animasyonu elde ediyorsunuz. Normal de sadece bu işlem satırlarca kod yazmayı gerektirir. Birde değer tipi çok çeşitli olsun dersen ( Tamsayı -Integer-, Noktalı sayı -Float-) kod satırı sayısı iyce büyür. JavaFX de "tween, bind" anahtar kelimeleri ile "=&gt;" operatörü yeterli desteği sağlıyor. Dizilere alternatif olarak sequence değişkenleri var. Sequence değişkenlerine özel operatörler ve anahtar kelimeler dizi oluşturma eleman ekleme çıkartma işini kolaylaştırıyor. JavaFX script ilk önceleri interpreter olarak tasarlanmıştı. Ancak performans endişeleri python gibi script dillerinde olduğu gibi JavaFX script dosyalarını yorumlayıp derleyerek java sınıfı karşılıklarına çeviriyor.  8.JavaFX geliştirme ortamı olarak Netbeans üzerinde JavaFX plug-in kullanıyor. JavaFX SDK Preview ile beraber çıkmış olan bu plug-in henüz basit bir destekden ibaret. Basit destek dediysek tabi ki debug, profiler paletden sürükle bırak kode klipleri ve parser desteği var. Fakat parser, otamatik tamamlama, otomatik import hanüz iyi çalışmıyor. Büyük ihtimalle bu konuda da kapalı kapılar ardında çalışmalar sürüyor. Ancak Sun microsystems Swing tabanlı uygulama inşahasında kullanılanan matise benzer bir ortam sağlıyacak ve bu ortam flash programına pek benzemeyecek.Çünkü Sun microsystemse göre bu web programcılığı tarzında bir destekden ibaret. Diğer yandan sanatsal destek JavaFX SDK Preview Project Nile adı altında grafik programları ile (Adobe Photoshop ve Illustrator) görsel öğelerin JavaFX de kullanılması için SVG formatında plug-in düzeyinde destek veriyor. Bu destek linux tabanlı ortamlar için varda denemez yok da denemez. Çünkü linux ortamındaki grafik programları SVG yi zaten destekliyor. Project Nile dosyalarının exe olduğuna bakmayın jar dosyalarıda çalışıyor. Bu durum linux ortamında da geçerli. Inkspace ile yarattığınız çizimleri düz SVG dosyası olarak kayıt edin ama türkçe karakter kullanmayın. SVG converter ile çizimlerinizi fx dosyalarına çevirebilirsiniz.  Peki tüm bunlarla neler yapılabilir:  Henüz dosya sistemine erişim script düzeyinde yok ama yine de scriptin sınıflara erişimi ile desteği kendiniz oluşturabilirsiniz. Bu durumda az sayıda kod yazarak mp3 çalar video oynatıcı yazabilirsiniz. JMC bileşeni bir node sınıfını genişletir. Bu durumda oynatdığınız filme tek satır kod ile efekt (siyah beyaz) ekleyebilirsiniz. Efektleri arka arkaya sıralayarak daha fazla efektle daha ilginç şeyler yapabilirsiniz. Skin özelliği eklenince oynatıcınıza istediğiniz skinleri üretebileceksiniz. Kendi bileşenlerinizi yaratabilirsiniz.  Node sistemi nedir ve bizim için önemi ne olabilir:  Node (düğüm) sistemi tek bir sahne (stage) üzerine pek çok birleşen eklemek üzerine geliştirilmiştir. Kendi özel düğümlerinizi yaratabilirsiniz. Örneğin bir basit bir araba çizmek için CustomNode sınıfını kullanarak siyah bir daire ve içine daha küçük beyaz bir daire çizerek bir teker oluşturursunuz. Artık her sınıf örneğinizde bir tekerleğiniz var. İki tekeri oluşturup bunu Grup sınıfı ile tek bir node haline getirebilirsiniz. Geometrik öğelerin kesişimlerini alabilir, birbirinden çıkarabilir, ekleyebilirsiniz. Bir görselin (swing, Media viewer, SVG, resim, kare, daire, v.s) node olarak sarmalanması demek tüm nodların sahip olduğu özelliklere sahip olması demektir. Bu özellikler &lt;ol&gt;&lt;li&gt;Mouse ve klavye olaylarını alabilmek yada almamayı tercih etmek &lt;/li&gt;
&lt;li&gt;Efektlerin uygulanabilmesi&lt;/li&gt;
&lt;li&gt;Öteleme (translate) &lt;/li&gt;
&lt;li&gt;Bükme (shear)&lt;/li&gt;
&lt;li&gt;Çevirme (Rotate)  ve belirli bir noktadan çevirme &lt;/li&gt;
&lt;li&gt;Transformasyon (öteleme, bükme ve çevirme işlemlerinin bir arada uygulanması)&lt;/li&gt;
&lt;li&gt;Saydamlık(Opacity)&lt;/li&gt;
&lt;li&gt;Daha hızlı çizim için ön bellekleme (cache) &lt;/li&gt;
&lt;li&gt;Ebeveyn tespiti &lt;/li&gt;
&lt;li&gt;Düğüme kimlik (id) ataması &lt;/li&gt;
&lt;li&gt;Görünülük (Visibility)&lt;/li&gt;
&lt;li&gt;Diğer düğümlerin önüne alma gerisine atma&lt;/li&gt;
&lt;li&gt;Kırma (Clip) ve kırpma yumuşatma &lt;/li&gt;
&lt;/ol&gt;Önbellekleme çizimi geçici bir dizinde resim olarak saklamaya dayanır eğer çizimde değişiklik olursa ön bellek güncellenir. Sık değişmeyen öğelerde performans sağlar. Kimlik (id) özelliği ilgili node (düğüme) hızlı ve emin ulaşım sağlar. İlginç olan photoshop ve illustrator eklentileri katman isimlerini düğüm isimlerine atayarak her katmandaki SVG çiziminin ayrı tutulmasını ve ulaşımını kolaylaştırır.  JavaFX'in geliştirildiği depodan indirdiğimiz kaynaklara ve changeloglara (yapılan değişiklikler günlüğü) bakacak olursak bütün her şeyin düğüm uzayına geçirilmek için çalışıldığına dair notlara rastlıyoruz. Eğer bu yapılırsa windows xp de olduğu gibi kapatma durumunda ekranın kararması gibi bizde program penceresinin kararmasını sağlayabiliriz. Artık günümüz kullanıcıları kullandığı programların zaten görsel yönden zengin olması taraftarılar. Bu durumdan dolayıdır ki RIA terimi ortaya çıkmıştır.  Aslında JavaFX script olmadan da şu anda efektleri, stageleri, nodeları, grupları, geometrik çizimleri kullanabilirsiniz. Çünkü tüm bunlar açık kaynak kodlu olarak geliştirilen scenegraph ve decora projelerinden sağlanıyor. Örneğin decora kullanarak resim dosyalarınıza JavaFX olamada da efekt uygulayabilirsiniz.  Efektler dedik ama hangi efektler kullanıma hazır olarak geliyor.  &lt;ol&gt;&lt;li&gt;Karıştırma (Blend) : İki resmi karıştıma moduna göre (BlendMode) bir birleriyle karıştırır. Photoshop, Gimp gibi fotoğraf editörleri ile benzer şekilde çalışır.&lt;/li&gt;
&lt;li&gt; Bloom : Bu efekt resmin beyaz öğlerinin parlamasını sağlar.&lt;/li&gt;
&lt;li&gt; Renk ayarlama (Color Adjust) : Parlaklık, doygunluk, renk değerlerini ayarlama imkanı sağlar&lt;/li&gt;
&lt;li&gt;Displacement map : Bu efekt aslında oldukça güçlü bir efekt. Yerdeğiştirme efekti ediğimiz bu efekt FloatMap denen bir haritaya ihtiyaç duyuyor. FloatMap adından da anlaşılacağı gibi noktalı rakamlardan (Float) oluşan bir dizi. FloatMap içerisindeki sayılar resim üzerindeki ilgili piksellerin yer değiştirmesini etkiler. FloatMap için bir genişlik ve yükseklik bilgisi verilmesi gerekir. Genellikle harita büyüklüğü resim büyüklüğüyle aynıdır. Bu da bu efekti oldukça güçlü yapar.&lt;/li&gt;
&lt;li&gt;Gölge ekle (Drop Shadow) : Gölge ekle efekti için gölgenin uzaklığını, rengini, gölgenin bulanıklığını ayarlamanıza izin verir. &lt;/li&gt;
&lt;li&gt;Flood (türkçesini bende bilmiyorum) : Bu efekt sadece bir dikdörtgen çizer ve içini istediğiniz bir renk yada gradient ile doldurur.&lt;/li&gt;
&lt;li&gt;Gaussian bulanıklığı (Gaussian Blur) : Gaussian tekniği ile bulanıklaştırma sağlayan bir efekt&lt;/li&gt;
&lt;li&gt;Parlatma (Glow) : Uygulandığı öğede parlak alanlar yaratır. Bloom dan pek farkını göremedim.&lt;/li&gt;
&lt;li&gt;İç Gölge (InnerShadow) : Gölgeyi kenarlardan uzağa değilde kenarlardan içeri doğru yerleştirir.&lt;/li&gt;
&lt;li&gt;Maskeyi Ters Çevir (InvertMask) : Eğer resiminizin bir alfa kanalı varsa bunu tersine çevirir. Bu durumda resmin saydam kısımları opak opak kısımları saydam hale gelecektir.&lt;/li&gt;
&lt;li&gt;Işıklandırma (Lighting) : İşte bir gelişmiş efekt daha. Bu efektle özellikle grafik ve yazılara ışıklandırma ile birlikte 3D efekt etkisi yaratabilirsiniz.&lt;/li&gt;
&lt;li&gt;Hareket bulanıklığı (MotionBlur) : Adı üzerinde hareket eden cisimlerin içerisinden bakarken gördüğümüz bulanıklaşması ile aynı etkiye neden olur.&lt;/li&gt;
&lt;li&gt;Perspektif Değişimleri (PerspectiveTransform) : Evet bir sağlam efekte bu efekt. Bu efekte en iyi örnek vistada programlar arasında geçiş yapmak için kullanılan efektdir. Bu resimlere özel olarak perspektif vermek için dört köşesinin koordinatalarını ayarlamanıza izin verir. Bu durumda sol köşeler normal konumlarındayken sağ köşeler ortaya doğru ve birbirlerine yakın konumlandırılınca resim yan duruyormuş gibi görünür bu da 3D efekti yaratır. Ama siz böyle yapmak zorunda değilsiniz. Eğer isterseniz köşeleri ters çevirerek resmi ters-yüz de edebilirsiniz.&lt;/li&gt;
&lt;li&gt;Yansıma (Reflection) : Bu efekt resmin altında yansıma oluşturur. Yansımanın resmin alt kenarına uzaklığını, alt ve üst kenarının saydamlığını ve saydamlaşmanın başlangıç hattını  belirleyebilirsiniz.&lt;/li&gt;
&lt;li&gt;Eski fotoğraf tonu (SepiaTone) : Adı üzerinde resmin eski fotoğraflarda olduğu gibi kahverengimsi bir görünüm kazanmasına neden olur.&lt;/li&gt;
&lt;/ol&gt;Şimdilik bu kadar ama aklıma geldikçe bir şeyler eklemeyi düşünüyorum. Hatta zamanım oldukça kod örnekleride yayınlayacağım.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-3259915183345332610?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/3259915183345332610/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=3259915183345332610' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/3259915183345332610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/3259915183345332610'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2008/09/javafx-teknolojisi-nedir.html' title='JavaFX teknolojisi nedir?!'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-2411430586777065529</id><published>2008-09-13T17:07:00.006+03:00</published><updated>2008-09-13T17:18:21.265+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Decora'/><category scheme='http://www.blogger.com/atom/ns#' term='Scenegraph'/><title type='text'>JavaFX Decora ve Scenegraph linux'te</title><content type='html'>JavaFX için linux versiyonu donanım hızlandırması ile birlikte şu adreste:
&lt;a href="http://openjfx.java.sun.com/hudson/job/jfx-scenegraph/label=linux-i586/"&gt;http://openjfx.java.sun.com/hudson/job/jfx-scenegraph/label=linux-i586/&lt;/a&gt;
Bütün JavaFX çalışmaları ise burada:
&lt;a href="http://openjfx.java.sun.com/hudson/"&gt;http://openjfx.java.sun.com/hudson/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-2411430586777065529?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/2411430586777065529/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=2411430586777065529' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/2411430586777065529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/2411430586777065529'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2008/09/javafx-decora-ve-scenegraph-linuxte.html' title='JavaFX Decora ve Scenegraph linux&apos;te'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-8588021867002436440</id><published>2008-06-05T03:14:00.003+03:00</published><updated>2008-06-05T03:21:16.453+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='milli işletim sistemi'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='anadolu parsı'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus 2008 beta'/><title type='text'>VAyyy!! Pardus Naber</title><content type='html'>Sana diyom beta olan 2008 olan memleketimin el emeği göz nuru, yerli malı haftasında "kapat windows'u aç pardus'u kızdırmayın l.n beni" dedirten kurcalanası,hatası,eksiği gediği bildirilesi &lt;a href="ftp://ftp.pardus.org.tr/pub/pardus/kurulan/2008/Pardus-2008_Beta1.iso"&gt;pardus beta 2008&lt;/a&gt; hoj geldin!!!!



-Hoj bulduk yeğenim.

-Aha konuştu. Vay be bayağı geliştirmişler :-)))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-8588021867002436440?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/8588021867002436440/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=8588021867002436440' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/8588021867002436440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/8588021867002436440'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2008/06/vayyy-pardus-naber.html' title='VAyyy!! Pardus Naber'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-3853715352178515314</id><published>2008-06-05T00:43:00.006+03:00</published><updated>2008-06-05T20:57:18.872+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programlama dili'/><category scheme='http://www.blogger.com/atom/ns#' term='assembler'/><category scheme='http://www.blogger.com/atom/ns#' term='amatör programlama'/><category scheme='http://www.blogger.com/atom/ns#' term='low-level language'/><category scheme='http://www.blogger.com/atom/ns#' term='high-level language'/><category scheme='http://www.blogger.com/atom/ns#' term='yüksek seviyeli dil'/><category scheme='http://www.blogger.com/atom/ns#' term='düşük seviyeli dil'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='programlama'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='derleyici'/><category scheme='http://www.blogger.com/atom/ns#' term='assembly'/><title type='text'>Programlama dili nedir ki(ne)?!</title><content type='html'>Önceki yazımı yayınladıktan birkaç saniye sonra hemen başlayayım dedim programlama ile ilgili yazmaya. İlk önce program yazmayı merakeden yada bilgisayarı bir deney aracı bir uğraş haline getiren pek çok insanın hemen aklına gelen şu basit soruyu cevaplamaya çalışmak istiyorum:Programlama dili nedir (aslında ilk soru "Bu programlar-oyunlar- nasıl yapılıyor ki yahu" dur.) neden vardır?

Aslında programlama dili sihirli bişey değildir. Hatta hepsi aynı şeydir (Durun yahu hemen itiraz etmeyin tamam sizde birşeyler biliyorsunuz).Yani hepsi bilgisayara birşeyler yaptırtır. Yaptırtır yaptırmasına da ama nasıl yaptırtır ki(ne)? Şimdi ilk önce ayrıntıya girmeden şu an ekranına baktığımız şeyi işletim sistemiyle, işlemcisiyle, ekran kartıyla, hafızasıyla, disk sürücüsü ile bi bütün olarak yani bilgisayar olarak ele alalım.Bu kabullenme ile program yazan insan bu bilgisayara bir şeyler yaptırtacak ama onla nasıl iletişim kuracak. Yani derdini nasıl anlatacak? Anlatmak için kullandığı şey ne olacak? Eğer o bir insan olsaydı  konuşarak anlaşırdık ama o bir insan değil! Hadi insan diyelim ama türk değil o zaman onla aynı dili konuşmanız gerekir yada bir tercuman tutarsınız o anlatır derdinizi.İşte o tercumana programcı bir şeyler söyler "iki düğme oluştur düğmenin birinde TAMAM yazsın diğerinde İPTAL yazsın TAMAMI tıklayınca AYARLARI kaydet İPTALİ tıklayınca bir şey yapmadan çık v.s." tercumanda bilgisayara şöyle söyler: "101011110101010111110101010101010001010101011111010
1010101010100011111101010101010101111010101011110101
1010101010101000101010101111101001011110101010111110
0101111010101011111010101010101000101010101111101011
010101010100010101010111110100101111010101011111010" .
Şimdi siz olsanız tercumanı aradan kaldırmak istermisiniz? Şahsen ben hiç istemem.

Peki neden sadece bir tek programlama dili yok?
Aslında ilk başlarda varmış ve adıda assemblymiş(Bir varmış bir yokmuş gibi oldu!).Fakat hiç düşündünüzmü dünya üzerindeki konuşulan her dilin kendine göre avantaj ve dezavantajları var. Doğal olarak insanlar kendi dili dışında dil öğrenme ihtiyacı duydukları zaman bu dez/avantajları göz önünde bulundurur.Örneğin fransızca öğrenmeyi denemeye kalksak ne olur. Bildiğim kadarıyla fransızlar her nesneye hatta hayvana dişi-erkek kavramıyla yaklaşıyorlar(Kedi dişi masa nonoş v.s. :)) ). Bu da fransızca öğrenmek işi bayağı karmaşık olacak demek. Öteki taraftan dünyanın en nazik dili olarak geçiyor ve etkili bir romantizim yaratıyor.Bu bağlamda assemblyde fransızca gibi. Yukardaki örnek de olduğu gibi assembly 1 ve 0 larla konuşmaktan bir adım uzak sadece. Ama öteki yandan yazdığınız programın performansı için oldukça iyi bir dil. Şu bilgiyi hemen vermek istiyorum.Makina diline (yani bizim için bilgisayar dili) yakın olan dillere düşük seviye diller (low-level language) insan konuşmasına benzeyen yani "eğer şu yoksa bunu al o da yoksa geri dön şunu yap" şeklindeki dillere yüksek seviye (high-level language) denir.

Derleyici -Compiler-?! (Af buyur o ne yav annem gibi bişey mi ortalığı toplayan falan :)))
Eh madem biz bu bilgisayarla aynı dilde hiç konuşmadık bu adama nasıl söz geçiriyoruz? Şöyle ki hemen her programlama dilinde komutlar (bilgisayara emir vermek için kullandığımız dilin sözcükleri anlamında kullanıyorum)  düz yazı ile yazılır (içinde yazı karakteri, büyüklüğü, rengi gibi bilgiler taşımayan sadece "abvds" gibi harfler bulunan dosyaya düz yazı dosyası denir.) ve bu yazı dosyası derleyiciye verilir. Derleyici dosyayı okur ve bilgisayarın anlayacağı dile çevirir. Böylece programımız üretilmiş olur. Bu bağlamda derleyici bizim tercümanımızdır. Komut kelimesi yanlış anlaşılmasın. Komut çoğu zaman bilgisayardaki tıklayacağınız bir düğmesi olmayan klavye ile yazarak isteğimizi belirttiğimiz programlardır." del foto.jpg " komutu foto.jpg'yi siler ve del bir programdır fare ile tıklayacağınız bir öğesi bulunmaz.Komut satırından emirlerimizi bilgisayara iletiriz.

Sonuç:
Yazımın sonunda size şunları anlatmaya çalıştım:
&lt;ol&gt;&lt;li&gt;Programlama dili nedir neden gereklidir? -Bilgisayara derdini anlatan programcı dilidir.
&lt;/li&gt;&lt;li&gt;Programlama dili ile bilgisayara derdimizi anlatan kimdir. -Derleyici yada yorumlayıcı(yorumlayıcı için daha erken ama anlatacam onu da elbet).
&lt;/li&gt;&lt;li&gt;Madem ben bilgisayarıma doğrudan bişey anlatamıyorum o zaman uygun bir dil ile mi anlatacağım derdimi? -Evet aynen öyle&lt;/li&gt;&lt;li&gt;E o zaman ben gidip bir programlama dili mi öğreneyim? Evet bu da doğru ama...
&lt;/li&gt;&lt;li&gt;Bu kadar mı şimdi!  -Hayır devamı gelecek tabi :))&lt;/li&gt;&lt;li&gt;Programcı büyüklerimize saygı onlardan da bize sevgi arz ediyoruz.(Yav adam bizden büyük yada küçük ama o yazıyor e biz kullanıyoruz. Mesela &lt;a href="http://www.pardus.org.tr/"&gt;Pardus&lt;/a&gt;'u yazıyor. Firefox'u çeviriyor &lt;a href="http://code.google.com/p/zemberek/"&gt;zembereği&lt;/a&gt; yazıyor. E biz de yeni yeni programlama ile ilgili birşeyler öğreniyoruz o zaman kavga etmek, kırılmak, kırıcı eleştiri yapmak karşılıklı olarak yok! &lt;:)) &lt;/li&gt;&lt;/ol&gt;Şunları ise henüz anlatmadım:
&lt;ol&gt;&lt;li&gt;Programlama dili öğrenmek kolaydır denir. -"İyi de ben geri zekalımıyım değişken, fonksiyon, nesne, örnek nedir hiç bişey anlamamıştım". Aslında geri zekalı değilsin sadece sen araştırmaya kalktığın zaman televizyon programlarında ki Prof.Dr. XXXX gibi "Efendim karsinomların iki çeşiti vardır malign ve selim malign olanların hemidesmazomları........." şeklinde konuşan yazarlarla karşılaşıyorsun o kadar. Ben de senin mahallenin çocuğu olduğum için sana sahip çıkmaya çalışıyorum.(Bu arada o insanları yadırgamayın tüm dünyaları bu olmuş olabilir ve sanki sizde onlardan ve o dünyadanmış gibi zanedebilirler ama siz de onlar sayesinde msn, internet, google gibi şeyleri kullanıyorsunuz ve hala onlar bunu size aşılamaya çalışıyorlar. Sonuçta aziz insanlar onlar)&lt;/li&gt;&lt;li&gt;Programlama dilleri dışında daha kolay olan programlama dilcikleri var.(javascript,php v.s)&lt;/li&gt;&lt;li&gt;Düşük seviye programlama ile yüksek seviye programlam nedir niye var? -Niye Arapça, Türkçe, İngilizce, Ugandaca var?
&lt;/li&gt;&lt;li&gt;Benim aklıma gelmeyen ama sizin aklınızda olan pek çok şey var! - E yaz bana o zaman abi biliyosan söyle şu ne diye. Ben de biliyorsam söyleyeyim sölemezsem de Bill GATES gibi olayım (Büyük yemin ettim bak).
&lt;/li&gt;&lt;/ol&gt;Sürçü lisan ettiysek affola :))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-3853715352178515314?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/3853715352178515314/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=3853715352178515314' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/3853715352178515314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/3853715352178515314'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2008/06/programalam-dili-nedir-ki-ne.html' title='Programlama dili nedir ki(ne)?!'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-8739589942020699539</id><published>2008-06-05T00:25:00.007+03:00</published><updated>2008-06-05T20:47:14.901+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programlama dili'/><category scheme='http://www.blogger.com/atom/ns#' term='amatör programlama'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='bilgisayar'/><category scheme='http://www.blogger.com/atom/ns#' term='programlama'/><title type='text'>Programlama nedir diyorsan yamacıma gel</title><content type='html'>Hemen kabul ediyorum ki bu yazı tamamen ordan burdan okuyarak araştırarak programlamayı öğrenmiş fakat java programlama dilini 9 yıldır takip eden onla oynayan, parka giden, beraber yatan, beraber kahvaltı yapan, amatör, bu konuda akademik bilgi almamış (yani bilgisayar müh. de okumamış) bi tipim. Dolayısı ile bana güvenmek zorunda değilsiniz ve evet elbette ki bu işin sağlam eğitimini almış okuluna gitmiş bir insan olarak bazı insanlar benden çok iyi biliyordur bu konuları (kısaca bu insanlar &lt;span style="color: rgb(255, 0, 0);"&gt;bizi&lt;/span&gt; rahat bıraksın lütfen çünkü bu yazının amacı başka!! neyse sakinim ben, sakin olmalıyım).
İşte bu kabullenmeden sonra birkaç tane günlük yazım olacak.Bu yazılar benim gibi programlamanın p'sini bilmeyen "donanımdan biraz çakarım o da hangi kartı nereye takacağım kadar" diyen sınıfa hitap edecek(Merak etmeyin şu an da bunlardan çok çok fazlasını biliyorum ama ilk başladığımda bu kadar biliyordum).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-8739589942020699539?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/8739589942020699539/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=8739589942020699539' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/8739589942020699539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/8739589942020699539'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2008/06/programlama-nedir-diyorsan-yamacma-gel.html' title='Programlama nedir diyorsan yamacıma gel'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-664344843582193126.post-1011076517247382184</id><published>2008-05-23T17:27:00.000+03:00</published><updated>2008-05-23T22:30:31.081+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='bilgisayar'/><category scheme='http://www.blogger.com/atom/ns#' term='tartışma'/><category scheme='http://www.blogger.com/atom/ns#' term='türk dil kurumu'/><category scheme='http://www.blogger.com/atom/ns#' term='forum'/><category scheme='http://www.blogger.com/atom/ns#' term='türkçe'/><category scheme='http://www.blogger.com/atom/ns#' term='TDK'/><category scheme='http://www.blogger.com/atom/ns#' term='günlük'/><title type='text'>Türkçeleştirin şu yabancı kelimeleri</title><content type='html'>Açıkçası bu benim  ilk günlüğüm ve türkçem berbat. Kısaca başlıkla anlatmak istediğimi anlatayım. Şimdi bu bizim Türk Dil Kurumu yabancı kelimeleri türkçeleştirmeye çalışıyorlar ya işte orda bir şeyi yanlış yapıyorlar anladığım kadarıyla.Mesela adamlar "yes" kelimesini türkçeye çevirecekler ya şöyle çeviriyorlar "ben seni doğruluyorum." yada "cam: içinden ışığı olduğu gibi geçiren cisim" gibi.Yani insanlara şunu diyorlar siz gidin kelime kullanmayın herşeyi açıklayın ömrünüzün diğer yarısını tanımlamalarla geçirin.Ama öbür tarafdan biraz da kendimizi eleştirelim.BilgiSAYAR ne kadar komik bir laf yahu.
- Abi bizim kardeş illa bilgisayar istiyo bu yaşta ya!
- Eee çocuk küçük olduğu için bilgileri saymakda zorlanıyor.Huhuhaha
Yahu bilgi sayılır mı yaw!? E bak öyle yada böyle saçma ama değil çatır çutur kullanıyoruz işte.Peki neden bu psikoloji var bizde.Şöyle ki estağfurullah (Umarım doğru yazmışımdır)  günümüzde anlamının tam zıttına kullanılıyor.Çünkü artık anlamını değiştirmiş.BilgiSAYAR da anlamını yitirmiş iki kelimenin birleştirilmiş halini bile ifade etmiyor.Kısacası kelime evrimi diye bişey var. Yani inatla bazı kelimeler seçsek onları tartışma sitelerinde(Forumlar) günlüklerde (Bloglar) kullansak yeni yetişen nesil bu isimlerle öğrenecek yine bu camiayı.Kısacası BilgiSAYAR lafına bizim gibi gücenmeyecek öyle alışacak.Kompüter diyen ve çokça kullanan kaç insan tanıyorsunuz.
Son bir fikir daha:Tartışma siteleri(forumlar) kaynak kodlarında bazı değişiklikler yaparak leptop gibi kelimelerin yerine dizüstü kelimesiyle değiştirebilir yada yazarı bu konuda uyarabilir.
İlk günlükten bu kadar.Sürçü lisan ettiysem af ola!!!
Bu arada bozuk türkçe ve imla hatalarımı düzelten kız arkadaşım filize de teşekkürler(Kendisi türk dil kurumunun peşime düşmesinden korkuyor heralde).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/664344843582193126-1011076517247382184?l=www.tamerkarakan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.tamerkarakan.com/feeds/1011076517247382184/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=664344843582193126&amp;postID=1011076517247382184' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/1011076517247382184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/664344843582193126/posts/default/1011076517247382184'/><link rel='alternate' type='text/html' href='http://www.tamerkarakan.com/2008/05/trkeletirin-u-yabanc-kelimeleri.html' title='Türkçeleştirin şu yabancı kelimeleri'/><author><name>Tamer KARAKAN</name><uri>http://www.blogger.com/profile/00735810553903761630</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp1.blogger.com/_GH3_DgmDPkg/SDbgaKIx9kI/AAAAAAAAAAM/7YTogrwOHdg/S220/Untitled-1.jpg'/></author><thr:total>0</thr:total></entry></feed>
