Forum'da ara:
Ara


Yazar Mesaj
Mesaj27.01.2009, 00:16 (UTC)    
Mesaj konusu: Java Script Nedir ? Ne İşe yarar ?

no exploit oldukça fazla derecede karıştırılmakta. no exploit Sun firması tarafından Pascal ve Delphi dillerinden esinlenerek yazılmış bir programlama dilidir. Sonuçta tarayıcıdan bağımsız bir program elde edersiniz. Yani bir exe veya com uzantılı dosya vardır elinizde. Fakat no exploit bu tür bir programlama dili değildir. Yorumlanması için bir tarayıcıya ihtiyaç duyar. Bu yüzden script dilidir. Html dosyasını içine gömülüdür. Sonuçta elinizde exe veya com uzantılı bir dosya yoktur. no exploit , Netscape firması tarafından
C dilinden esinlenilerek yazılmıştır. Yazılma amacı Html'in sahip olmadığı bazı özelliklerin web sayfalarında kullanılmak istenmesidir. Yani ziyaretçi ile etkileşim gibi önemli unsurlar Html'de yok veya oldukça az kapasitede diyebiliriz. Netscape firması bu konuya ağırlık vererek no exploit script dilini internet ortamına kazandırmıştır.
Gelelim Netscape ve Internet Explorer tarayıcılarının no exploit kodundaki farklı anlayışa. Bu gerçekten doğrudur. Netscape firması no exploit dilini hazırladığında Microsoft firması bu dilin özelliklerini veya yazılım tarzını tam anlamıyla Internet Explorer'a eklemedi. Kendi yazım kurallarını belirledi. Bu yüzden biz no exploit kodu yazarken bu iki tarayıcı özelliklerini de göz önünde bulundurmalıyız. Fakat bu her kodda karşımıza çıkmaz.

JAVASCRIPT'İN GENEL ÖZELLİKLERİ


1. no exploit kodlarını yazmak için Windows kullanıcıları için NotePad, Mac. kullanıcıları için Simple Text yeterlidir.
2. no exploit kodları --> etiketi ile biter.
3. no exploit etiketi JavaScript'i anlamayan eski sürüm tarayıcıların bu kısmı geçmeleri içindir.
4. Genellikle yazım tarzı şu şekildedir:

no exploit
<!--
no exploit kodları
-->
</script>

5. İyi bir programcı kod satırlarında açıklama yapar. Bu satır şu işlemi gerçekleştiriyor gibi açıklayıcı bilgiler yazar kodlarının yanına. JavaScript'te bu tür açıklama // ile başlar ve // ile biter. Eğer açıklamanız bir satırdan fazla ise /* ile başlar */ ile biter.

// bu satır kullanılacak değişkenlerin tanımlanması içindir.
/* açıklama satırı; 1
açıklama satırı 2
açıklama satırı 3 */

6. no exploit kodları Html kodların arasında yer alır. Veya uzantısı js olan dosyalarda saklanarak yine Html içerisinden çağırılır. no exploit Appletleri gibi Html'den ayrı bir unsur değildir. no exploit Html'in bir parçasıdır.
7. Kullanılacak yere göre Html'in içerisinde kullanılır. Fakat genelde <head>...</head> etiketleri arasında kullanılır.
8. no exploit kodları bittiğinde elinizde asla kendi başına çalışan uzantısı exe veya com olan bir dosya olmaz. Her zaman için tarayıcı tarafından yorumlanması gerekir. Yorumlanması demek no exploit kodunun çalışması anlamındadır.
9. Nesne ve buna uygulanan olaylar ile ilgili bir takım görevleri vardır. no exploit kullandığı her unsuru nesne olarak algılar. Siz bu nesneleri tıklamak, üzerine gelmek, üzerinde çıkmak gibi olaylar ile çalıştırırsınız ki bu da Javascript'in ziyaretçi ile etkileşmesi demektir.
10. Genel öğrenim yapımız diğer programlama dillerine nazaran biraz farklı olacaktır. Bu Javascript'in bir script dili olmasında ileri gelir.

DEĞİŞKENLER

Genel Değişken Özellikleri:
Değişkenler Javascript'te ve diğer programlama dillerinde olduğu gibi bilgi depolamak bu bilgiyi kullanmak amacıyla kullanılırlar. Değişkenler "var" komutu ile oluşturulurlar. Karakter olarak kullanıldıklarında işlem yapılamazlar. Nümerik olarak kullanıldıklarında ancak işlem yapabilirler. Kullanımına bir örnek verelim. Örnek:

var sayi;
var sayi1=10;
var yazi1="10";

Burada birinci satırdaki "sayi" değişkeni script kodunun herhangi bir yerinde kullanılmak üzere oluşturulmuştur. İkinci satırda "sayi1" adındaki değişkenin değeri hemen o satırda = ifadesinden sonra verilmiştir. Böyle değişken tanımıda yapılabilir. Üçüncü satırda ise değişkenin karakter ifadesi olarak kullanımını görüyoruz. Burada önemli olan karakter değişkenlerin alıntı " " ifadesinin arasında kullanılmasıdır. Her değişkenden sonra ; işareti konulmalıdır. Tarayıcı, bir başka komut satırına geçtiğini bu yol ile anlar.
Şimdi değişkenlerle ilgili matematik işlemlerinin nasıl olacağını görelim. Bunu daha iyi açıklayabilmek için örnekler üzerinde çalışalım. Örnek:

var sayi1=10;
var sayi2=20;
var sayi3=sayi1+sayi2;

Birinci ve ikinci satırlarda değişkenler oluşturduk. Üçüncü satırdaki ise sayi3 değişkeni ile diğer iki değişkeni topladık. Burada önemli olan işlem yapmak istediğimizde değişken değerinin alıntı " " işaretlerinin arasına konmamasıdır. Üçüncü satırı - ileride göreceğimiz write () fonksiyonu ile - tarayıcıda yazdırırsak göreceğimiz değer 30'dur.
Şimdi de değişkenleri karakter olarak tanımladığımızda neler olduğuna bakalım.

var sayi1="10";
var sayi2="20";
var sayi3= sayi1+sayi2;

Bir önceki örnekten farklı olarak değişken değerlerinin alıntı işaretleri içerisinde yazdık. Eğer sayi3 adlı değişkeni tarayıcıda bastırırsak göreceğimiz ifade 1020 ifadesidir. Yani tarayıcı karakter olarak tanımladığımız değişkenleri ardada ekledi. Burada unutulmaması gereken şey bunun sadece + işleminde geçerli olmasıdır. Diğer işlem türlerinde bu tür bir sonuç alınamaz.

Değişkenlere Ad Verirken Uymamız Gereken Kurallar:
1. Değişken isimleri harf veya _ karakteri ile başlayabilir. Rakam kullanmak istersek 2. karakterden sonra kullanabiliriz. Yani değişkenin ilk karakteri rakam olamaz.
Değişken isimlerine örnekler;

var url="netyardim"; doğru
var _rakam=12; doğru
var a1=123; doğru
var 3uzler="üçüzler" yanlış

2. Değişken tanımlarken bir veya birden fazla boşluk bırakmak tanımlama açısından herhangi bir sorun teşkil etmez.
3. Değişken adı verirken kullandığımız harflerin büyük veya küçük olması bazı tarayıcılarda fark etmezken çoğu tarayıcıda farklı bir değişken anlamındadır.

var say=1;
var Say=1;

Farklı değişkenler olarak algılanır.

Değişkenlerin İşlem Operatörleri İle Kullanımı:
Değişkenlere işlem yaptırabilecek operatörleri ve özelliklerini inceleyelim. Operatörleri birkaç kısıma ayırarak inceleyelim;
1. Aritmetik operatörler
2. Karşılaştırmak operatörleri
3. Mantıksal operatörler
4. Özel operatörler

Aritmetik Operatörler:
Her zaman kullandığımız bu operatörler + , - , * , / , % 'dir.Değişkenlerin çeşitli aritmetik operatörlerle kullanımına bir örnek verelim.

var i=10;
var j=11;
var k=12;
var m,n;
m=i*j+k;
n=i*(j+k);

Şimdi örneğimizi inceleyelim:
İlk üç satırda değişkenlerimizi hem tanımlayıp hem de değer atadık. Dördüncü satırda ise m ve n değişkenlerini tanımlayıp değer atamdık. Diğer satırlarda ise m ve n değişkenlerinden istenen işlemleri tanımladık. Buna göre son iki satırın sonuçları farklıdır. Çünkü parantezlerin işlem önceliği vardır.
Beşinci satırın cevabı (10*11)+12 = 122 şeklinde olacaktır. Son satırda ise sonuç 10*(11+12) = 230 olacaktır. Diğer bir işlem operatörü olan % 'nin yaptığı işlemi şu şekilde anlatabiliriz.% operatörü % işaretinin solundaki değişkeni sağındaki değişkene böler ve kalanı verir. Örnek olarak;

var a=100; var b=9; var c=100%9;

Burada c değişkenin değeri 100/9'un kalanı 1'dir. Yani c değişkeninin değeri 1 olacaktır. Diğer -(eksi) ve / (bölme) operatörlerinin işlemleri kendilerine atanan çıkartma ve bölme işlemidir.Bu operatörlerin kısa kullanımı içinde no exploit bize kolaylık sağlar. Bu operatörleri sıralamak istersek;
-= : *= : /= : %= : ++ : --
Bu operatörlerin kısa uzun şekilde yazılışları ise;

x+=y x=x+y
x-=y x=x-y
x*=y x=x*y
x/=y x=x/y
x%=y x=x%y
x++ x=x+1
x-- x=x-1

şeklindedir.
Bu operatörlerin nasıl işlem yaptığını bir örnekte görelim.

var x,y,z;
x=10; y=20; z=30;
x++; x+=y; z--; y*= z;

Şimdi her zamanki gibi işlem satırlarının cevaplarını birlikte bulalım.
x++ satırı x=x+1 işleminin yapılmasını söyler. Buna göre x değişkeni 11 değerini alır.İkinci satıra geldiğimizde x+=y satırı x=x+y işleminin yapılmasını söyler. Bir önceki satırdaki x'in değeri 11 idi. Böylelikle yeni x'in değeri 11+20=31 olacaktır. Diğer satırda z-- işlemi sonucunda z'nin değeri 29 olacaktır. Son satırda ise y=y*z işlemi ile y değişkeni 20*29= 380 değerini alacaktır.

Karşılaştırma Operatörleri:
Bu operatörler değişkenlerin birbirleri ile karşılaştırılmak istendiğinde kullanılır.
== operatörü iki değişkenin birbirine eşitliğini kontrol eder.
!= operatörü iki değişkenin birbirine eşit olmadığı durumlarda kullanılır.
< operatörü bilindiği üzere küçüktür operatörüdür. Soldaki değişkenin sağdakinde küçüklüğünü kontrol eder.
<= soldaki değişkenin sağdaki değişkene küçük eşitliğini kontrol eder.
> soldaki değişkenin sağdaki değişkene göre büyük olup olmadığını kontrol eder.
>= soldaki değişkenin sağdaki değişkene büyük eşitliğini kontrol eder.

Mantıksal Operatörler:
Bu tip operatörler iki değişkene bağlı karşılaştırılmaların yapılmak istendiği durumlarda kullanılır.
Operatörler && , || , ! operatörleridir.
&& And (ve) operatörü iki değişkenin de değeri doğru olması istendiğinde kullanılır.
|| Or (veya) operatörü iki değişkenden en az birinin doğru olması durumu istediğinde kullanılır.
! Not (değil) operatörü değişkenin değeri doğru ise yanlış , yanlış ise doğru olması istendiği durumlarda kullanılır.

Özel Karşılaştırma Operatörü:
Bu operatör iki değişken arasında karşılaştırma yapmanın en sade ve kısa yoludur.
Operatörün kullanım biçimi :

değişken_1 [istenen karşılaştırma operatörü] değişken_2 ? değişken_3 : değişken_4

Bunu bir örnekle açıklayalım.
Değişkenleri var ile tanımladığımızı farz ediyorum. Buna göre;

a < b ? c : d

Yukarıdaki satırda yapılması istenen işlem;
a değişkeninin b değişkeninden küçük olup olmadığı karşılaştırılıyor. Buna göre cevap doğruysa işlemin sonucu c değişkeninin değeri değilse d değişkeni oluyor.
Şimdi tüm bu öğrendiklerimizi bir no exploit kodunda görelim. Bu bizim ilk no exploit kodumuz olacak. Örnek :

no exploit Language="no exploit 1.2">
<!--
var i=1; var j=2;
var k=3; var m=4;
var n=5; var
p=6; var q=7;
i=+j;
j++;
k--;
m=m+k;
n=*j;
i < j ? 3 : 1 ;
k >= n ? 0 : 1 ;
k=2 && j=5 ? p : q ;
i=2 || j=3 ? m : n ;
p!=2 ? k : 10 ;
-- >
</script>

İlk yedi satırda değişkenlerimizi hem tanımladık hem de değer atadık. Böyle bir yazımı yapabileceğimizi değişkenleri anlatmaya başlarken söylemiştik.
İşlem satırlarına geçtiğimizde ise;

i+=j;

Bu işlem daha da önce gördüğümüz gibi bize i=i+j işlemini yapmamızı söyler. Buna göre i değişkeninin değeri 3 olacaktır. Hemen altındaki satırda bulunan j++ işlemi dolayısıyla da j değişkeni 3 değerini alacaktır. Diğer işlem satırında k--işlemi ile de k değişkeni 2 değerini alır. Bir diğer satırdaki m=m+k işlemi ile m(m=4) değişkeni k(k=2) değişkeni toplanarak 6 değerini alır. n=*j işlemi ile de n(n=5) değişkeni 3*5=15 değerini alacaktır.
Şimdi diğer karşılaştırma işlemlerine geçmeden önce değişkenlerimizin işlem sonrası aldığı değerleri yazalım.

i=3 , j=3 , k=2 , m=6 , n=15 , p=6 , q=7 ; i < j ? 3: 1;

Bu satırın 3 < 3 işleminin cevabı doğru ise 3 değilse 1 değeri alacağını görebiliyoruz. Tabi ki üç üçten küçük olmadığı için cevabımız 1 olacaktır.

k>=n ? 0 : 1;

Bu satırda ise 2>=15 işlemi gerçekleşir ki bunun cevabı da yanlıştır ve ikinci değer işlem satırının cevabıdır yani 1 dir.
Şimdiki karşılaştırma işlemimiz ise mantıksal operatörlerle ilgili. Buna göre;

k=2 && j=5 ? p : q;

İşlem bize ne söylüyor ? k değişkeni ve j değişkeninin kesin olarak bir değere eşit olup olmadığını karşılaştırmamızı söylüyor. Bu iki değer de doğruysa çünkü &&(and) mantıksal operatörünün anlamı bu işlem doğrudur değilse yanlıştır. Buna göre k=2 'dir. Fakat buna karşılık j'nin değeri 5 değildir. Bu yüzden karşılaştırmanın cevabı yanlıştır. Dolayısıyla işlem q yani 7 değerini alır.

p!=2 ? k : 10;

İşlemde istenilen p değişkeninin değerinin ikiden farklı olması durumdur. Yani 6!=2 bunun anlamı doğrudur. Gerçektende 6=2 değildir. Bizde bu satırda bunu istiyorduk. O halde cevap doğrudur. Böylelikle işlem k yani 2 değerini alır.
Şimdi biz bu yaptıklarımızla sadece javascript'te bir şeyler hesap etmesini ve karşılaştırmasını söyledik. Tarayıcı da bu işlemleri yapar ve hafızasında tutar. Daha sonra öğreneceğimiz komutlarla bunları istersek tarayıcıya yazdırabilir. Başka bir yerde kullanılmasını söyleyebiliriz.
INTERNET EXPLORER VE NETSCAPE TARAYICI FARKI

Giriş kısmında belirttiğimiz gibi no exploit kodlarında MSIE (Microsoft Internet Explorer) ve NN (Netscape Navigator) yönünden farklılık vardır. Bu tarayıcının html dökümanı nasıl modellediğine bağlıdır. Tarayıcının nesne döküman modeli, bir Html sayfasındaki çeşitli elemanların tarayıcı tarafından nasıl algılanıp yorumlandığı ile ilgilidir. no exploit gerçekte W3C (Web tekniklerinin standartlarını belirleyen kurum [Sadece pasaj sakinleri linkleri görebileceklerdir. lütfen kısa bir vaktinizi ayırın ve pasajımıza üye olun.. ]) konsorsiyumu tarafından belirlenen kodlardan oluşmamıştır. Tarayıcı üreten firmalar bu konuları kendilerince yorumlayıp tarayıcılarına yerleştirmişlerdir. Yani kendi nesne döküman modellerini oluşturmuşlardır.
Biz bu kısımda her iki tarayıcınında nesne döküman modelini incelemeyeceğiz. Bize gerekli olan kısmını öğreneceğiz. Şimdi tarayıcı farkının nasıl ayırt edilebileceğini görelim.

ie4 = (document.all) ? true : false;
nn4 = (document.style) ? true : false;

Biz bu iki satırla bir önceki ders olan değişkenler ve mantıksal operatörler yardımıyla iki tarayıcıyı da kontrol altına aldık. Bir diğer örnekle yapıyı pekiştirelim.

no exploit language="no exploit">
<!-- // Kodları eski sürücü tarayıcılardan saklayalım
ie4 = (document.all) ? true : false ;
nn4 = (document.style) ? true : false ;
if (ie4)
{
// MSIE 4.0 için uygun kodları buraya yazacağız
}
else
{
// NN 4.0 için uygun kodları buraya yazacağız.
}
//Saklamayı bitir -->
</script>

Şimdi bu kodları inceleyelim. Değişken tanımlama kısmının anlaşıldığını varsayarak geçiyorum. Anlamadığınız bir kısım varsa 1. Değişkenler kısmına tekrar geri dönün.

If (ie4) ve if (nn4)

Burada ileriki derslerde öğreneceğimiz koşul ifadesini kullanıyoruz. Bu kodları Javascript'in anlayış tarzı şu şekilde olacaktır. Eğer nn4 , ie4 değişkenlerinden doğru olanı ie4 ise -ki bunu true ve false değerlerinden algılar- alt satıra geçip ona uygun kodu uygulayacaktır. Şayet ie4=false yani nn4=true ise diğer if koşulu yorumlanarak işleme konulacaktır. Bu da nn4 için gerekli kodun çalıştırılması demektir.
Şimdi bu kodun tamamını vererek dersi bitirelim.

<html>
<head>
<title>Tarayici kontrolüno exploit>
<head>
no exploit language="no exploit">
<!-- // Kodlari eski surum tarayicilardan saklayalim.
function tarayici() {
ie4 = (document.all) ? true : false ;
nn4 = (document.style) ? true : false ;
if (ie4)
{
// MSIE 4.0 icin uygun kodlari buraya yazacagiz.
window.location="ie.htm";
}
else
{
// NN 4.0 icin uygun kodlari buraya yazacagiz.
window.location="nn.htm";
}
}
//Saklamayi bitir -->
</script>
</head>
no exploit=tarayici()>
</body>
</html>

Yukaridaki kodları herhangi bir editör (NotePad gibi) yardımıyla yazıp tara.htm olarak kaydedin.

<html>
<head>
<title>MSIE tarayici kullaniyorsunuzno exploit>
</head>
<body>
<h3>Tarayiciniz Internet Explorer</h3>
</body>
</html>

Yukaridaki kodu ie.htm olarak kaydedin.

<html>
<head>
<title>Netscape tarayici kullaniyorsunuzno exploit>
</head>
<body>
<h3>Tarayiciniz Netscape Navigator</h3>
</body>
</html>

Yukaridaki kodu nn.htm olarak kaydedin.

Önemli!: Bu üç Html dosyasının da aynı klasörde olması gereklidir.

Tara.htm adlı dosyada anlamadığınız kodlar olduğunu görüyorsunuz. Şimdilik bu kodları anlamanız gerekli değil. Yeri geldikçe bu kodların nerede ve nasıl kullanılacağını göreceğiz.


EKRANA ÇIKTI VE KLAVYEDEN BİLGİ GİRİŞİ

Bu dersimizde Html üzerinden klavye aracılığı ile ziyaretçiden bilgi almasını ve herhangi bir değişken vb. Türde yazıların html e nasıl yazdırılacağını göreceğiz.

Prompt ()
Hemen başlayalım. Ziyaretçiden bilgi alma iki tür no exploit komutuyla gerçekleşir. Birisi Prompt yani bizim burada bahsedeceğimiz komut. Diğeri ise Form yoluyla bilgi alınması. Form yoluyla alınan bilgiler formun Html üzerinde yer alması yüzünden Prompt komutu ile birbirinden ayrılır. Prompt komutu ile Html sayfasından hariç bir pencere açılır. Alınmak istenen bilgi ziyaretçiye bu yol ile sorulur ve hemen altındaki boşluk yardımıyla cevap alınır. Şimdi kodun nasıl kullanıldığına bir göz atalım.

prompt ("Sorulan soru" , "Cevap ornegi")

Bu komutun yorumlanışı şu şekildedir. Html üzerinde Html'den bağımsız bir pencere aç. (bu prompt komutu ile yapılır) İlk çift tırnak içerisinde olan kelime veya kelime grubu, pencerenin üst kısmında ve değiştirilemeyen kısımdır. Burada soru veya pencerenin niçin açıldığı ile ilgili bir açıklama verilir. İkinci çift tırnakta ise doldurulacak olan cevap satırının içinde seçili bir haldedir. Bu ise genel olarak cevap örneği olarak ziyaretçiye sunulur. Kullanılması zorunlu değildir. Kullanılmadığınızda undefined gibi tanımlanmamış uyarısı alınır.

prompt ("Tarayicinizin turunu giriniz ?" ,"lutfen cevabı ie veya nn olarak veriniz");

Şimdi kullanıcıdan nasıl bilgi alınacağını gördük fakat bu bilgiyi nasıl kullanabiliriz? Bu sorunun cevabı prompt komutunu var ile bir değişkene atmak suretiyle kullanabiliriz olacaktır. Yani;

var tara=prompt ("Tarayicinizin turunu giriniz ?" ,"lutfen cevabı ie veya nn olarak veriniz");

Biz bu satır ile ne yapmış olduk ? Ziyaretçiden prompt komutu ile tarayıcısı sorduk ve bunu var değişken tanımlama komutuyla tara değişkenine atadık. Ziyaretçiden aldığımız bu bilgi sonucunda tara değişkeni ya ie yada nn değerini alacaktır. Biz daha sonraki satırlarda bu değişkeni belli bir koşul koyarak kullanabiliriz. Mesela daha önceki örneklerimizde olduğu gibi ie ise şu sayfayı aç nn ise şu sayfayı aç.
Bir öneri , bu tip tarayıcı tanıma yöntemi oldukça yanlış bir yöntemdir. Çünkü ziyaretçiden alınan bilgi ile bizim daha sonra kullandığımız koşul ifadeleri uyuşmayabilir. Bu yüzden kodumuz doğru çalışmaz.

Write()
Html dosyasına yazı yazdırma komutu ise write dır. Bu kodun yazım kurallarını inceleyecek olursak;

document.write ("goruntulenmek istenenler" , degisken_ismi );

Kodu inceleyelim. no exploit html üzerinde yazı yazmak istediğinde write komutunu tek başına kullanamaz. Bunun için document fonksiyoneli (yardımcısı manasında) ile birlikte kullanılır. document.write komutundan sonra parantez açılır. Daha sonra yazılmak istenen sıraya göre değişken ismi veya görüntülenmek istenenler yazılır. Değişkenler çift tırnak içerisinde yazılmazlar. Sadece görüntülenmek istenenler çift tırnak içerisinde yazılır.
Şimdi prompt komutu ile write komutunu birleştirerek bir kod hazırlayalım. Bu kodumuzda prompt aracılığıyla ziyaretçiye adını sorup ad değişkenine atıyoruz. Daha sonra bu değişkeni write komutu yardımıyla ziyaretçiye Merhaba diyoruz. Şimdi kodlara geçelim.

<html>
<head>
<title>Prompt , write ornegi no exploit>
</head>
<body>
<!-- //Kodlari eski tarayicilardan gizliyoruz
var isim = prompt ("isminizi giriniz " , "kucuk harf veya buyuk harf kullanabilirsiniz" );
document.write ("Merhaba " , isim , " !" );
// Saklamayi bitir -->
</script>
</body>
</html>

Eski kodlarımıza göre bu kod biraz farklı değil mi ? Hemen göze çarpıyor ki no exploit kodumuz <head> etiketleri arasında değil. Daha öncede dediğimiz gibi uygulanması istenen sıraya bağlı olarak kod yerini aldı. Biz aslında Html'de font kurallarını kullanarak yazı da yazdırabiliriz. Eğer hiçbir kural uygulamadığınız tarayıcının banko (default) değerleri kullanılır. Örneğin Merhaba dedikten sonra alınan ismin bir alt satırda görüntülenmesini istiyorsak bunu Javascript'e şu şekilde yaptırabiliriz.

document.write ("Merhaba" , "" , isim)

Bu tür (yani türünde) Html etiketlerinin tümünü Javascript'e yaptırabilirsiniz. Hatta ileride göreceksiniz ki no exploit zerinden Html yazmadan web sayfası yapılabilir. Aslında Html yazmıyor değiliz fakat bunu <body> etiketlerinde yani Html dökümanı içerisinde yapmıyoruz. Bunu için Javascript'e emir veriyoruz. Bu normal olarak kimi zaman hissedilir derecede olmasa bile sayfanın yavaş yüklenmesine neden olur. Bu yüzden web sayfası üzerinde yaptığınız işleme göre kodunuzu yazın.







Java nedir,nasıl çalışır?

Bu yazida java'nin basitce ne oldugunu, nasil calistigini ve java ile iliskili bazi kavramlari basitce ve bildigim kadari ile aciklamaya calisacagim

On bilgi.

Java Sun microsystems muhendislerinden James Gosling tarafindan gelistirilmeye baslanmis gercek nesneye yonelik, platform bagimsiz, yuksek performansli, cok islevli, yuksek seviye, interpreted[adim adim isletilen] bir dildir (son ozellik, yani adim adim isletilen konusuna aciklik getirilecek).

Java ilk ciktiginda daha cok kucuk cihazlarda kullanilmak icin tasarlanmis ortak bir platform dili olarak dusunulmus. Ancak bakmislar ki platform bagimsizligi ozelligi C ve C++'tan cok daha ustun ve guvenli bir yazilim gelistirme ve isletme ortami sunuyor, hemen her yerde kullanilmaya baslanmis. Su anda ozellikle kurumsal alanda ve mobil cihazlarda son derece populer olan java, ozellikle J2SE 1.4 ve gelecek 1.5 surumu ile masautunde de gucunu arttirmayi hedefliyor. Java'nin ilk surumu olan Java 1.0 (1995) Java Platform 1 olarak adlandirildi ve tasarlama amacina uygun olarak kucuk boyutlu ve kisitli ozelliklere sahipti. Daha sonra platformun gucu gozlendi ve tasariminda buyuk degisiklikler ve eklemeler yapildi. Bu buyuk degisikliklerden dolayi gelistirilen yeni platforma Java Paltform 2 adi verildi ama versiyon numarasi 2 yapilmadi, 1.2 olarak devam etti. Bu bahar cikacak Java 1.5, gecen 1.2, 1.3 ve 1.4 surumlerinin ardindan en cok gelisme ve degisikligi barindiran surum olacak. (java konusunda temel bilgi icin [Sadece pasaj sakinleri linkleri görebileceklerdir. lütfen kısa bir vaktinizi ayırın ve pasajımıza üye olun.. ] bakabilirsiniz)

Java nasil calisir?

Bir java yazilimi su sekilde gelistirilir:

Programci java kodunu yazar.
Bu kod bir java derleyicisi ile derlenir. Sonucta bytekod adi verilen bir tur makine kodu ortaya cikar. Platform bagimsizligini saglayan sey bytecode'dir. Cunku bir kere bytecode olustuktan sonra yazilim tum isletim sistemlerinde calisabilir.
Bu byte kod Java virtual Machine (Java Sanal Makinesi) tarafindan adim adim isletilir. Asagida java ve C++ kodunun gecirdigi asamalar gosterilmistir.


Java kodunun yazilmasi.

java nesneye yonelik bir dil oldugundan tum yazilim siniflar ve nesneler uzerinden yurutulur. Siniflar uygulamadaki nesnelerin tanimlandigi kod parcalaridir. Java'da her bir sinif bir dosya icerisinde yer alir. Dosyalarin uzantilari .java seklindedir. Dosya adi ise icinde tanimlanan sinif ile aynidir. Ornegin, BenimSinif.java gibi.

Derleme

Derleyici kisaca herhangi bir editor ile yazilan java kaynak kodlarini (yani .java uzantili siniflarin yer aldigi dosyalari) java sanal makinesinin calistirabilecegi bir tur makine dili (assembler) olan Bytecode'a donusturur. Bu donusturulen bytekod ise (.class ) dosyalari icerisinde saklanir. Java kodunu derlemek icin bir java derleyicisine ve java kutuphanelerine ihtiyaciniz var. Su anda iki derleyici yaygin olarak kullanilamktadir. Bir tanesi Sun'in SDK'si ile birlikte gelen javac. digeri ise IBM'in acik kodlu derleyicisi jikes. Benim yaygin olarak kullandigim Jikes, cok hizli derlemesi ile unlu olsa da en son java yazilimlarini derlemek icin javac'ye ihtiyac duyulabilir. Ayrica linux altinda derleme yapmak icin gnu lisansi ile gelistirilen acik kodlu Gnuj kullanilabilir. Derleyici ve kutuphanelerin bulundugu (Java API) uygulamaya "J2SE SDK" adi verilmistir.

Calistirma ve Java sanal makinesi.

Sanal makine donanimdan bagimsiz yazilim gelistirme ihtiyacina cevap verme amaciyla gelistirilen bir teknolojidir. Java'nin temel felsefesi olan "bir kere yaz, her yerde calistir" sanal makine sayesinde varolmustur. Sanal makineyi bir yonden bir tur hayali bir mikroislemci gibi dusunebiliriz. Gercek tum mikroislemciler (Intel Pentium, AMD Athlon, Sun Sparc vs) belirli bir grup komutu islemek uzere tasarlanmistir. Bu komutlara islemcinin komut kumesi adi verilir. Ornegin x86 komut kumesi gibi. Tum yazilimlar calisabilmek icin once bu komut kumesine donusturulur, daha sonra islemci bu komutlari sira ile gercek islemci komutlarina donusturup isletir. Java Sanal makinesi de Bytekod komut kumesini tipki islemci gibi adim adim isletir. Java'nin interpreted bir dil olarak adlandirilmasinin nedeni budur. Bytekod ilkel islemlerin yaninda (ilkel islemler, mikroislemci seviyesi komutlardir, aritmetik islemler, bit islemleri, bellek ve yigin islemleri vs.) sanal makinenin uzerinde calistigi isletim sistemine yonelik islemler de barindirir. Bu sayede Java Virtual Machine yazici, seri port, grafik, dosya servisi, ag baglantisi gibi yazilim ve donanim servislerine erisim yapabilir.

Java'nin dogrudan bytecode calistirmasi performansinin dusuk olabilecegi izlenimini verebilir. Ancak, JVM tasarimi gecen 10 yilda cok degismis ve gelistirilmistir. Su anda java'nin performansi cogu alanda C++'in performansina yakin bir seviyededir ve islemci hizi ve bellek miktarinin her gecen yil katlanarak artmasi ile performans konusu cogu uygulamada artik ikinci planda kalmistir. Asagida cesitli platformlar icin java'nin calismasi basit blok sema olarak gosterilmistir. Eger sozkonusu dil C++ olsayid uc ayri kod yada kodda uc ayri #ifdef vs tanimi, uc ayri obje dosyasi olusturulmasi gerekirdi ve cogu uygulamada C++ projesi sadece tek platforma destek verirdi (win32 gibi)



Not: ALINTIDIR

______________

SEVGİDE ÖZGÜRLÜK SAYGIDA MECBURİYET VARDIR
Önceki mesajları göster:   


Powered by phpBB © 2001, 2005 phpBB Group
Türkçe Çeviri: phpBB Türkiye & Erdem Çorapçıoğlu