The WeakReference class, monitoring memory leak and garbage collection in a Java application

Image
 Below is a Stack implementation that uses an internal resizeable array structure.  public class MyStack< T > implements Stack< T > { private static final int CAPACITY = 100 ; private Object[] array ; private int pos = 0 ; public MyStack () { this . array = new Object[ CAPACITY ] ; } @Override public void push ( T item) { if ( pos >= array . length / 2 ) { Object[] newArray = new Object[ pos * 2 ] ; System. arraycopy ( array , 0 , newArray , 0 , array . length ) ; array = newArray ; } array [ pos ++] = item ; } @Override public T pop () { if (isEmpty()) { throw new RuntimeException( "empty stack" ) ; } @SuppressWarnings ( "unchecked" ) T item = ( T ) array [ pos - 1 ] ; pos -= 1 ; return item ; } @Override @SuppressWarnings ( "unchecked" ) public T peek...

Java Programlama Dili Ders Notları - 1

Giriş


Java Programlama Dili, Sun Microsystems tarafından 1995 yılında Java Platformunun temel öğesi olarak piyasaya sunulmuştur. 2007 yılında Sun, Java platformunu GNU GPL lisansi uyarınca özgür yazılım haline getirdi. Sun firması dışında Java platformuna yönelik implementasyon gerçekleştiren gruplar mevcuttur. Örneğin, Özgür Yazılım Vakfı çatısı altında geliştirilmiş bir GNU Java derleyicisi ve çalıştırma ortamı bulunmaktadır.
Java dili tasarlanırken, C++ dilindeki bazı konuların çıkarılması ve diğer dillerdeki bazı kavramların dile dahil edilmesi sözkonusu olmuştur.

Bir Java Programının Derlenmesi ve Çalıştırılması


Bilindigi gibi bir bilgisayarın çalıştırabildiği kod, kendi merkezi işlem birimi (CPU) donanımı için tasarlanmış olan makine dilidir (assembly). Makine diline göre insan algisina daha yakin, okunmasi kolay ve üzerinde çalışılan problemde yer alan kavramların daha kolay ifade edilebileceği dillerin birçok alanda tercih edildiğini biliyoruz. Yani bircok yazilim sistemini geliştirirken yüksek seviyeli programlama dilleri adini verdiğimiz dilleri kullanıyoruz.
Bir programı hangi dilde yazmış olursak olalım, çalıştırabilmek için bu programı makine diline çevirmemiz gerekiyor. Kaynak koddan, çalıştırılabilir kod elde etme konusunda 3 ayrı teknik olduğunu görüyoruz:

1. Kaynak koddan, doğrudan doğruya makine kodu elde etmek. Örnek: C Programlama Dili
2. Kaynak koddan arakod elde etmek (veya sanal makine kodu) ve ara kodu bir yorumlayıcı tarafından çalıştırmak.
3. Kaynak kodu doğrudan bir yorumlayıcı tarafından çalıştırmak. Örnek: Ruby

Bazi yuksek seviyeli dillerde yazilmis programlar, bir derleyici yazilimi tarafindan belli bir makineye ozgu koda (ornegin Intel 80x86 ailesi) cevrilmektedir. Ornegin C programlama dilinde durum boyledir.

Java Sanal Makinesi, byte-code adi verilen ara kodu calisma zamaninda yorumlamaktadir.
Bilindigi gibi. Java teknolojisinin tanitiminda uzerinde en cok durulan konu, Java programlarinin her turlu makinede calistirilabilmesi olmustur. Iste bunun yapilabilmesi icin, makine diline benzeyen bir dil ortaya atilmis (byte-code) ve bu dildeki programlarin farkli makinelerde calisabilmesi icin yorumlayicilar yazilmistir. Kisacasi, C/C++ dillerinde oldugu gibi, dogrudan makineye ozgu calistirilabilir kod degil, bir ara-kod uretilmekte ve daha sonra bu ara-kod makineye ozgu yorumlayici (Java Virtual Machine Implementation) tarafindan calisma zamaninda yorumlanmaktadir.

Comments

Popular posts from this blog

Trie Data Structure and Finding Patterns in a Collection of Words

My Crappy Looking Solution to "Binary Tree Common Ancestor" Problem

A Graph Application in Java: Using WordNet to Find Outcast Words