07 Eylül 2009 Pazartesi

JAC (Java Asn1 Compiler) Version 3.0

I have released the version 3.0 of my open source project JAC (Java Asn1 Compiler) It is available for download now.
In JAC 3.0, direct call of 'encode(..) decode(..)' methods of 'asn.1 Choice' objects are implemented.
And also with version 3.0, user can encode/decode an asn.1 Choice object without knowledge of which element is chosen inside.
Moreover, bugs that users specified via e-mail or blog comments are all fixed.
Version 3.0 is more compatible and error free.

25 Mart 2009 Çarşamba

JAC is 1 year old

Version 2.0 of my open source project JAC (Java Asn.1 Compiler) reached to 1,300+ download rate since March, 2008 till today (March, 2009). And now appears first when "java asn1 compiler" is googled. I will upload the new release to the project page at sourceforge.net soon. In the next release an important bug about asn.1 Choice element will be fixed and the overall maintaining of project will be done due to the feedback of users.

It is really nice to see that an open source project of you is really useful for somebody around the world.
Before developing JAC I was really disturbed about not providing some work for any open source project. Because I usually take advantage of using open source projects but had developed nothing. This feeling was really disturbing before JAC. But now I am really glad to hear good comments via e-mail or blog posts from users of an open source project of mine. And some companies also mentioned that they are using the project in their infastructure environment. That was really surprising for me. I am still trying to answer the questios of users via e-mail and blog comments as much as I can.

20 Ekim 2008 Pazartesi

Galleria - Oto Galeri İş Takip Programı

Galleria adını verdiğim Oto Galeri İş Takip Programı'mı Ekim ayı itibarıyla bitirmiş bulunmaktayım.
Bu blog yazım bu programım hakkında bilgi vermek amaçlı.

Galleria, oto galeri işletmenlerine yönelik çok fonksiyonlu ve kullanımı çok kolay bir yazılım olarak tasarlandı. Bir oto galerinin alış satışını yaptığı araçlara yönelik ödeme, masraf, vekalet bilgisi ve satış devri bilgisi gibi sürecin her aşamasını programın sunduğu basit ve anlaşılır web arayüzüyle kolayca takip edebilmesini sağlıyor.

Neden böyle bir program geliştirdim ?

2. el otomobil satışı yapan oto galerilere yönelik daha önce tasarlanan yazılımlar, karmaşık muhasebe programlarından farklı değil. Bu yüzden program kullanmayı çoğunlukla bilmeyen ve muhasebe terimlerine yabancı olan oto galeri esnafı böyle bir programı satın almıyor. Neden diye sorulduğunda "Kim kullanacak ki ?" yanıtını veriyor. Ve oto galericilerin çok büyük bir çoğunluğu bilgisayar kullanmayı sadece bir internet kullanıcısı olarak biliyor.

Bu yüzden Galleria, hem web arayüzü sağlayarak hem de benzerlerinden çok daha fonksiyonlu ve işlevsel bir program olarak oto galerilerin tüm otomasyon ihtiyacını karşılamaya yönelik geliştirildi.

Galleria'yı benzerlerinden üstün kılan temel özellikleri neler ?

- Basit web arayüzü ile çok kolay kullanım sağlayarak iş takibini hızlandırması ve şık ve sade tasarımı

- Gelişmiş araç raporlama ile
  • Herhangi bir araç modelinden kaç adet sattım ?
  • Bu araç modelini ortalama ne kadar sürede sattım ?
  • Bu modelin bana olan toplam karı ve birim karı nedir ?
  • Ve bu modeli daha çok hangi aylarda sattım ?
  • Ay satış dağılımım toplamda ne ?
bilgisini galericinin karşısına rapor olarak sunması ve böylelikle galerinin ileriye yönelik iş planına yön vermesine yardımcı olması

- Özel senet modülü ile
Satılan araca ait tüm senetlerin program için özel sipariş edilmiş A4 boyutundaki senet kağıdı ile tüm yazıcılarda uyumlu bir şekilde kolayca yazdırılabilmesi (Bir A4 kğıdına 2 senet yazdırır)

- Akıllı yedekleme ile tüm veritabanının yedeğini alıp yedek dosyasını kullanıcıya mail olarak göndermesi ve böylelikle bilgi güvenliğini en üst düzeyde sağlaması (Mail adresinden yedek dosyası indirildikten sonra, tüm kayıtları geri yüklemek kullanıcının sadece 30 saniyesini alır.)

- Ve son olarak kullandığı web teknolojisinin desteğiyle bir programdan öte kurumsal bir çözüm paketi olarak kullanıcının karşısına çıkıyor. Çünkü yerel ağında birden fazla bilgisayar bulunduran ve farklı iş yükü dağılımına sahip olan oto galeri, tek bir programın modem üzerinden yerel ağda birden fazla bilgisayarda eş zamanlı bir sekilde çalışabilmesi ile kurumsal bir çözüm paketi satın almış oluyor.

Neden web teknolojileri kullanıldı ?

Web arayüzü, karmaşık bir sistemi sade ve kullanımı kolay bir arayüz ile kullanıcıya sunma imkanı sağlıyor. Ve Internet arayüzüne zaten çok alışık olan kullanıcı bu yüzden programı çabuk öğreniyor ve bu da kullanıcıyı programa hızlı adapte ediyor.

Web teknolojisinin desteğiyle oto galerinin yerel ağında (localhost) birden fazla bilgisayarda eş zamanlı bir sekilde çalışabilmesini sağlıyor ve iş yükünü tek bir program üzerinden çalışanlarına dağıtabilmesine olanak vererek kurumsal bir çözüm paketi olarak oto galeri işletmeninin karşısına çıkıyor.

Kurulum Ekranı :


Program Ana Ekranı:


Ek Modüller:

- Şirket Masraf Takip Modülü :


Oto galerinin şirket masraflarını belli masraf tipleri tanımlayarak başlıklar altında takip edebileceği ve raporlayabileceği modülün, isteğe bağlı olarak program ana menüsüne eklenmesidir.

- Ek Ödeme Takip Modülü :

Oto galerinin araç dışı farklı şahıs veya kurumlara alacak ve borç takibini belli iş tanımları ekleyerek takip edebildiği modülün, isteğe bağlı olarak program ana menüsüne eklenmesidir.

Programın Farklı Sürümleri:

- Demo Versiyonu :


Oto galerinin kurulumdan sonra programı tüm özellikleriyle 5 gün süreyle kullanabileceği ücretsiz sürümdür.

- Süreli Versiyon :

Oto galerinin kurulumdan sonra programı tüm özellikleriyle 6 aylık veya 1 yıllık süreyle kullanabileceği ücretli sürümdür.

- Full Versiyon :

Oto galerinin süresiz olarak satın aldığı ücretli sürümdür.

Teknik Bilgi:

- Dil : java, jsp
- Uygulama Sunucusu : Tomcat 6.0
- Veritabani : PostgreSQL 8.3

- Geliştirilme Ortamı : Eclipse WTP (web tool platform for JEE)
- Kullanılan uygulama çatıları (framework) : Struts 2, Hibernate 3

- Kurulum nasıl gerçekleşiyor ? :

Kullanıcı, program CD sinde Galleria.exe yi çalıştırdığında karşısına yukarıda resmettiğimiz Galleria Kurulum Ekranı çıkıyor. Kurulum sihirbazı gerekli dosyaları kullanıcının bilgisayarında gerekli yerlere kopyaladıktan sonra sonlanmadan önce bir windows batch file'ın çalışmasını tetikliyor.

Bu batch file sırasıyla uygulama sunucusu olan Tomcat 6 kurulum ekranını ve bu sonlandığında da veritabanımız olan PostgreSQL kurulum ekranını kullanıcının karşısına çıkartıyor. Kullanıcı bu ekranlarda sırayla Tomcat in ve PostgreSQL'in kurulumunu tamamladıktan sonra batch file kullanıcının bilgisayarında kurulumların doğruluğunu sınıyor ve kurulumlar doğru yapılmış ise PostgreSQL komutlarını çalıştırarak OTO veritabanını, tabloları ve relation ları oluşturuyor. Galleria.war dosyasını da Tomcat'in alt dizinine kopyaliyor. Ve programın kısayolunu da kullanıcının masaüstüne kopyaladıktan sonra kurulum tamamlanıyor.

Veritabanını oluşturan PostgreSQL komutları sırasıyla şöyle:

OTO veritabanını oluşturan komut :

createdb -W -U postgres OTO

Tabloları ve relation ları oluşturan komut :

psql -W -U postgres -d OTO -f C:\Windows\galsecure\db.go

- Masaüstündeki programın kısa yolu uygulamayı nasıl başlatıyor ? :

Galleria bir web uygulaması ve calışması için öncelikle uygulama sunucusu olan Tomcat'in başlatılması gerekiyor. Masaüstündeki programın kısayolu yine bir batch file ın kısayolu. Kullanıcı masaüstündeki program icon'una tıkladığında bir batch file çalıştırılıyor. Bu batch file öncelikle Tomcat i çalıştırıyor ve daha sonra Internet Explorer'ı şu url ile açıyor : http://localhost:8080/Galleria

Bu batch file'da çalışan komutlar şöyle :

start tomcat6

start iexplore "http://localhost:8080/Galleria"

Böylelikle kullanıcı masaüstündeki icon a tıklayarak Tomcat i çalıştırmış oluyor ve daha sonra bir Internet Explorer penceresini karşısında buluyor. Internet Explorer da verilen URL ile açılan pencere, programın giriş ekranı. Yani şu:


- Emek hırsızı biri, programı bir başkasından alıp habersizce kullanabilir mi? :

Hayır kullanamaz :) Programin kurulumu bittikten sonra kullanıcı programını aktive etmeden kullanamıyor. Aktivasyon işlemini gerçekleştirmek zorunda. Aktivasyon işlemi için kurulum yapılan bilgisayarın Internet'e bağlı olması gerekmekte. Ve aktivasyon işlemi sonucunda PC için üretilen şifre bilgisayarın MAC adresiyle ilişkili. Yani unique.

12 Haziran 2008 Perşembe

Proje Yönetim Sistemi Otomasyonu

2007-2008 bahar doneminde Yazılım Mühendisliği Laboratuvari dersi kapsaminda gelistirdigim bu proje hakkindaki temel bilgileri bu yazida vermeye calisacagim.

Projenin
- SRS (System Requierement Specification)
- SDD (Software Design Descriptiom) belgeleri ve
- ER diagrami ile
- Veritabani scriptini incelemek isterseniz bana e-mail yoluyla ulaşabilirsiniz. (fatih_batuk [at] yahoo.com)

Gelistirilme Ortami : Eclipse WTP (web tool platform for JEE)
Dil : jsp, java
kütüphaneler
: Struts2, Hibernate
Veritabani : PostGreSql 8.2

Projenin Kısa Tanımı :

Sistem birden çok projenin yürütüldüğü bi firmanın proje ve kaynak yönetimi ihtiyacını karşılayacak biçimde düşünülmüştür. Sistemde projeler, proje modülleri ve alt modüller tanımlıdır. Her proje birden fazla proje modülünden oluşabilir. Her proje modülü de birden fazla alt modülden oluşabilir.

Sistemde proje yöneticiler, takım liderleri ve calışanlar tanımlıdır. Bir projeye ait kaynaklar, o projedeki proje yöneticisi, takım liderleri ve çalışanları ifade etmektedir. Her proje bir proje yöneticisi tarafından yönetilir. Bir proje yönetici birden fazla projeyi yönetebilir.

Sistemde takımlar tanımlıdır. Her takımın bir lideri vardır ve her takım lideri yalnızca bir takıma liderlik edebilir. Bir takımda istenildiği kadar çalışan olabilir.

Sistemde görevler tanımlıdır. Sistemdeki proje alt modüllerine birden fazla görev atanabilir. Bir görev yalnızca bir proje alt modülü için tanımlıdır. Bir görev yalnızca bir takıma aittir. Ve her takıma bir görev verilebilir. Görevlerin başlangıç ve bitiş süreleri vardır.

Sistemde, sistem kullanıcıları için roller tanımlıdır. Her kişinin bir rolü vardır. Sisteme girdiğinde, ait olduğu role ait izin verilen işlemleri gerçekleştirebilmelidir. Yeni roller eklenebilmelidir. Temel roller süper kullanıcı, proje yöneticisi, takım lideri ve çalışan dır.

Proje’de karşılanan temel İşlevlerden bazıları :

  • Sisteme süper kullanıcı tarafından yeni proje yöneticisi, takım lideri ya da çalışan eklenebilir, var olanlar değiştirilebilirö silinebilir.
  • Sisteme süper kullanıcı tarafından yeni projeler, proje modülleri ve alt modüller eklenebilir ve var olanlar değiştirilebilir, silinebilir.
  • Sisteme süper kullanıcı veya proje yöneticisi tarafından yeni görevler ve takımlar eklenebilir ve var olanlar değiştirilebilir, silinebilir.
  • Bir projedeki tüm kaynaklar(işgücü), projedeki takımların yüklendiği görevler ve o takımdaki çalışanlar tüm roller tarafından listelenebilir.
  • Bir modülün tamamlanma oranı ayrılan iş gücüne göre hesaplanarak süper kullanıcı veya proje yöneticisi tarafından raporlanabilir.

Projenin ER Çizeneği (Entity-Relationship Diagram):




Projenin bazı ekran görüntüleri :

1.

2.



3.



Öğrenci Okul Servisi Otomasyonu

2007-2008 guz doneminde Veritabani Laboratuvari dersi kapsaminda gelistirdigim bu proje hakkindaki temel bilgileri bu yazida vermeye calisacagim

Gelistirilme Ortami : .NET 2005
Veritabani : Oracle 10g
Dil : aspx, C#

Projenin Kısa Tanımı :

Sistem farkli okullara servis hizmeti veren bir servis sirketinin ihtiyacini karsilayacak bicimde duzenlenecektir. Sirketin filosindaki araclarla farkli okullara eszamanli hizmet verebildigi dusunulmustur. Sistemde okullar kayitlidir. Okullarin mudurleri tanimlidir ve servis sirketi okul ile ilgili organizasyon meselerini okul muduru ille irtibata gecerek yapmaktadir.

Sistemde soforler ve araclar tanimlidir. Okullara servis atamalari yapilmaktadir. Bir okula atanan servisler ogretim yilinin sonuna kadar sabittir. Bir servis araci birden fazla okulun servis aginda eszamanli olmamak kaydiyla bulunabilir. Bir servis bir okul icin sadece bir guzergaha atanabilir. Bir servis araci birden cok servis soforu tarafindan kullanilabilir ve bir servis soforu birden fazla araca atanabilir.

Sistemde rehberler tanimlidir. Rehber ilkogretim okuluna hizmet verildiginde servis sirketi tarafindan soforle birlikte araca atanmaktadir. Rehber ilkogretim ogrencilerini aractan indirip guvenli bir yere birakmak ile gorevlidir. Rehber tasiyan araclarin kapasitesine rehberin oturma yeri dahildir. Rehber de bir yolcu olarak algilanip kapasite dolduracaktir. Ilkogretim ustu duzeyindeki okullar icin servislerde rehber bulunmayacaktir.

Sistemde iller tanimlidir Bir ilde birden cok okula hizmet verilebilir. Sistemde bolgeler, mahalleler, duraklar ve guzergahlar tanimlidir. Ogrenciler ilgili guzergahin ilgili duragindan servise binerler. Bir bolgede birden fazla mahalle bulunabilir. Bir mahallede birden fazla durak olabilir. Guzergahlar duraklarla tanimlidir. Bir duraktan birden fazla guzergah da gecebilir. Bir okul servis aginda birden fazla guzergah tanimlanabilir.

Sistemde ogrenciler tanimlidir. Ogrenciler okullarina atanan guzergahlardan birini secip kendilerine en yakin duraktan servise binerler. Ihtiyaca gore guzergaha duraklar eklenip cikarilabilir. Ogrenci icin bindigi duraktan ucretlendirme yapilir. Ogrencinin taksitleri bindigi duraga gore tanimlidir.

Sistemde yoneticiler tanimlidir. Yoneticiler servis sirketinin personelidir ve onay islemlerini yuruten sistem yoneticileridir. Yoneticiler bölge-güzergah-servis-sürücü işlemlerini yönetebilir, güzergahlara yerleşmek isteyen öğrencileri onaylayip sisteme kaydedebilirler.

Proje’de karşılanan temel işlevlerden bazıları :

  • Sisteme yeni il, bolge, mahalle, okul, okul turu, arac, sofor, rehber, ogrenci, yönetici ve müdür eklenebilir, var olanlar listelenebilir, duzenlenebilir ve silinebiir
  • Sistem yoneticileri okullara servis atayabilir, guzergahlari ve duraklari tanimlayabilir, soforlerin ve gerekliyse rehberin servise atanmasini gerceklestirebilir.
  • Guzergahlara durak eklenip çıkartılabilir. Yeni guzergahlar tanimlanabilir.
  • Ögrenci taksitleri yonetici duzeyinde kontrol edilip listelenebilir ve odeme girisi yapılıp düzenlenebilir.


Projenin ER Çizeneği (Entity-Relationship Diagram):



Projenin sorgu ekranları için Oracle'da gerçekleştirimi yapılan faydalı olabilecek bazı SQL sorgu örnekleri :

1.
Taksidi ödenmemiş öğrencilere 3 taksit için %10, 4 taksit için %15, 5 taksit için %20, 6 taksit için %25 faiz ekleyerek, öğrencinin TC nosu, adı, soyadı ve toplam borcunu listele

SELECT OGRENCITAKSIT.TCNO, KISI.KISIAD, KISI.KISISOYAD,

CASE COUNT(*)
WHEN 3 THEN SUM(MIKTAR)*1.1
WHEN 4 THEN SUM(MIKTAR)*1.15
WHEN 5 THEN SUM(MIKTAR)*1.2
WHEN 6 THEN SUM(MIKTAR)*1.25
ELSE SUM(MIKTAR)
END AS TOPLAM_BORC

FROM OGRENCITAKSIT

INNER JOIN OGRENCI ON OGRENCI.TCNO = OGRENCITAKSIT.TCNO

INNER JOIN KISI ON OGRENCI.TCNO = KISI.TCNO

WHERE OGRENCITAKSIT.ODENDI = 0

GROUP BY OGRENCITAKSIT.TCNO, KISI.KISIAD, KISI.KISISOYAD


2. Her araçtaki mevcut öğrenci miktarı ile araç kapasitesini listele

SELECT ACIKLAMA, plaka, COUNT(*) AS MEVCUT, KAPASITE FROM OGRENCI

INNER JOIN GUZERGAHDURAK ON
OGRENCI.GUZERGAHDURAK_PK = GUZERGAHDURAK.GUZERGAHDURAK_PK

INNER JOIN GUZERGAH ON GUZERGAHDURAK.GUZERGAHNO = GUZERGAH.GUZERGAHNO

INNER JOIN ARAC ON GUZERGAH.ARACNO = ARAC.ARACNO

GROUP BY ACIKLAMA, plaka, KAPASITE



3. Girilen minimum bolge sayisina 'VE/VEYA' minimum okul sayisina sahip illeri listele

SELECT ILAD FROM IL WHERE ILNO IN

( ( SELECT ILNO FROM BOLGE GROUP BY ILNO HAVING COUNT(*) > :BOLGENO )

INTERSECT ('VEYA' için INTERSECT yerine 'UNION' yazılmalı)

( SELECT ILNO FROM OKUL GROUP BY ILNO HAVING COUNT(*) > :OKULNO ) )


4.

SELECT SOFORARAC.SOFORARAC_PK, SOFORARAC.TCNO, SOFORARAC.ARACNO, SOFORARAC.BASLANGICSAATI, SOFORARAC.BITISSAATI,
SOFORARAC.GUNU, SOFORARAC.BASLANGICTARIHI, SOFORARAC.BITISTARIHI, SOFORARAC.TCNOREHBER,
KISI.KISIAD || ' ' || KISI.KISISOYAD AS SOFORISIM, KISI_1.KISIAD || ' ' || KISI_1.KISISOYAD AS REHBERISIM, ARAC.PLAKA

FROM SOFORARAC

INNER JOIN ARAC ON SOFORARAC.ARACNO = ARAC.ARACNO

LEFT OUTER JOIN KISI ON SOFORARAC.TCNO = KISI.TCNO

LEFT OUTER JOIN KISI KISI_1 ON SOFORARAC.TCNOREHBER = KISI_1.TCNO


Projenin ekran goruntulerine de vaktim olursa burda yer vermeye calisacagim.

26 Mart 2008 Çarşamba

Java Asn1 Compiler (open source)

(download link : http://sourceforge.net/projects/jac-asn1/)

During my internship at Turkcell Teknoloji at the summer of 2007, I have developed an asn.1 compiler which creates .java classes of asn.1 types and supports asn.1 encoding/decoding.

Before starting to develop the project I have searched and examined lots of open source compilers but a good free java asn.1 compiler that supports BER encoding was not available on the net. There were lots of open source compilers but they were not sufficient for our needs. The Objective Systems Inc. has a fully qualified asn.1 compiler but it is not free.

I have completed my project in 2 months. It was the last 2 month of my intenship at Turkcell Teknoloji (July-August, 2007).

We gave my project the name "JAC (Java Asn1 Compiler)". It is an open source project and I have hosted it on sourceforge.net The link of my project is here :

http://sourceforge.net/projects/jac-asn1/

I have developed the new version 2.0 and hosted it on the above link. The previous version (1.0) downloaded more than 200 times but not available now.

I have added some extra features to my compiler(JAC) with the version 2.0.
I tried to answer the needs of the users of the project that they specified to me via e-mail.
And the new version information is specified in the file "Version.txt" file under the download package.

About JAC



JAC (Java Asn.1 Compiler)
is a tool for you if you want to
(1) parse your asn.1 file
(2) create .java classes of data types defined in your asn.1 file and
(3) do encoding/decoding of instances of your generated classes.
BER, CER and DER are all supported. Just download and import it into your eclipse workspace.

There are clear examples under the download package of my project about the term "asn.1" and asn.1 files.
In the Power Point document "JAC (Java ASN1 Compiler).ppt" there are good examples of how to create .java classes from asn.1 files and do encoding/decoding by use of JAC.
In this power point slide show you can find all features and capabilities of JAC.

JAC class hierharchy is shown briefly on the figure below :


W.Woody's asn.1 library package





JAC's package




Created .java classes by JAC



Please feel free to contact me about the project (JAC - Java Asn1 Compiler).
Any questions, suggestions or comments will be welcomed.

13 Temmuz 2007 Cuma

Javada temel bir kac sey

Java hakkında kısaca bir kaç temel bilgi verelim bu yazıda, başlangıç olsun.
Java teknolojisi nasıl çalışıyor? Bir Java kodumuz hani aşamalardan geçiyor ? Farklı olan yapı ne?
Kisaca bahsedecek olursak Java da kaynak kodumuzu .java uzantili text dosyalarina yaziyoruz ve derleyici(javac compiler) bu dosyalarimizi .class uzantili Java'ya ozel bi dosya formatina ceviriyor. '.class' uzantili dosylarda "bytecode" dedigimiz JVM makina diline ait ifadeler var. Ve Java kodunu en son islettigimizde JVM bu .class uzantili dosyalari isletime aliyor. JVM nin her turlu platformda bulunabilmesi ve kolaylikla kurulabilmesi sizin java programinizin farkli farkli ortamlarda da "uygulanabilir" olmasini sagliyor. Javanin slogani da bu zaten :) "Bi kere yaz, her yerde calisir"
Java platformu(JRE + API) hakkında temel kısa bilgiler için :

http://java.sun.com/docs/books/tutorial/getStarted/intro/definition.html

Javada temel programlama bilgileri icin Lewis&Loftus un "Java Software Solutions" adli kitabi bence cok yardimci olacaktir. Cok yalin ve guzel bir anlatimi var ve anlamaniz icin iyi bi ingilizcenizin olmasi da gerekmiyor. Bilkent Universitesinde Java dersinde de bu kitap tercih ediliyor. Ben cok istifade etmistim acikcasi. Benim onerim bu ama pdf i var mi bilmiyorum. Aramak lazim :)

Java'da Garbage Collector
Javanın farklı yapılarından biri de Garbage Collector(GC).
C de program yazarken mesela kullandıgınız bellek alanını (memory allocation) eger free etmezseniz bazı döngülerde hata alabilirsiniz
Ve belleğin verimsiz kullanılmasına sebep olursunuz.
O yüzden programcı aldığı her bellek alanını ""free" etmekle yükümlüdür aynı zamanda.
Hatta bulunması zor olan hatalardan biri de bu tip hatalardır. Programcı kullandıgı bellek alanını free etmeyi eğer bi yerde unuttuysa ve bunu farkedemzse hatayı başka yerlerde arayarak ciddi uğraşlar verebilir çoğu zaman. (Ben çok tecrübe ettim :> )
Java da garbage collector mekanizması ile programcı bellek alanıyla ugrasmaktan kurtulmuş oluyor.
GC JVM icersinde JVM(Java Virtual Machine-Java uygulamanizin her ortamda calismasina olanak saglayan sanal makina) tarafindan calistirilan bir mekanizma. Arka planda çalışan garbage collector kullanılmayan, program içerisinde bi yere bağlantısı kalmayan(referansı olmayan) nesneleri kendisi otamatik siliyor.
O yüzden "free()" işlemine gerek kalmıyor. Kısaca Java daki "çöpçü" oluyor garbage collector :)

Biraz ayrintiya inerek benim de yeni okudugum GC nin yonetimi hakkinda bi kac seyden daha bahsedelim burda.
Suncucu tabanli gelsitirilen Java uygulamalarinda, uygulama sunucusunun uzerindeki yuku azaltmak icin GCnin calismasinin kontrol edilmesi gerekebilir. Yani GC nin cok sik devreye girip fazla yuke sebep olmamasi icin bazi onlemler almak mumkun (Bazi JVM parametrelerini kullanmak ve buyuk boylu Java nesnelerinin kullanimindan uzak durmak gibi). Ben bunu hic tecrube etmedim ama asagidaki linkte GCViewer in kullanimiyla GCnin performansi nasil etkileyebileceginin grafiksel olarak izlenmesi hakkinda Mustafa Tan in yazdigi guzel bir yazi mevcut :
(GCViewer, JVM de kullanilan hafizayi ve GC'nin çalisma sıklığını izliyebilecegimiz guzel bir uygulama)

http://mustafatan.blogspot.com/2007/07/java-hafza-problemleri-ve-gcviewer.html

[ "Adama bak yaa 'Javada temel bilgiler' diye başlık atıyo, gelmiş bi de GCViewer'dan bahsediyo" diyebilirsiniz ama demeyin :) ]