21 Aralık 2010 Salı

Genel Ajax özellikleri (render)

render : Bu özellik bir ajax olayı gerçekleştikten sonra sayfadaki bir veya daha fazla alanın güncellenmesi gerekiyorsa buna olanak sağlar.
Bunun için ise id özelliğini referans olarak alır.





value="Specific
reference" render=":infoBlock,:sv:infoBlock2" />


...



...





Yukarıdaki örnekte de görüldüğü gibi iki çeşit render edebilirsiniz. İkisi de aynı özelliği taşıyor.
id özelliği sayesinde hangi alanın güncelleneceğini belirtiyoruz.

Kaynak: http://docs.jboss.org/richfaces/latest_4_0_X/Component_Reference/en-US/html/index.html

9 Aralık 2010 Perşembe

jBPM Başlangıç (I)

Kullanıcılar için Kaynak: http://docs.jboss.com/jbpm/v4/userguide/html_single/#introduction

Evet... Ne olduğunu öğrenmeye çalıştığım şey jBPM :) nedir, ne değildir, ne yapar?

Anladığım kadarını buraya yazacağım...

jBPM aslında bir tür iş akışını düzenlemek için kullanılan bir süreç motoru anladığım kadarıyla.

jbpm-4.4.zip yüklemek için: http://sourceforge.net/projects/jbpm/files/

jBPM nedir?

jBPM, herhangi bir java uygulamasında gömülü olarak veya tek başına bir sunucu olarak çalıştırılabilen, esnek ve genişletilebilir bir süreç motorudur.

Yükleme:

jBPM indirin (jbpm-4.X.zip). Bilgisayarınızda herhangi bir yere kaydedebilirsiniz. Zip'ten çıkardıktan sonra kaç dosya göreceksiniz:

9 Kasım 2010 Salı

JSF'te kayan yazı (marquee) kullanımı

Jsf'te kayan yazı oluşturmak için basit bir yol:

İşte geldim burdayım!..


çıktı :

İşte geldim burdayım!..

İsterseniz kendi component'inizi de oluşturabilirsiniz. Aşağıdaki linke kendi componenti'inizi nasıl oluşturacağınızla ilgili örnek de yer almaktadır.
.
.
Kaynak: http://www.coderanch.com/t/212575/JSF/java/MARQUEE-componenet-JSF
.
.

5 Kasım 2010 Cuma

Hibernate Criteria ve Order By kullanımı

İki tarih arasındaki satışlarının listesini azalan tarih ve artan ürün numarasına gören bir sorgu :)
List sales = session.createCriteria(Satis.class)
.add(Expression.between("date", startDate, endDate))
.addOrder( Order.desc("date") )
.addOrder( Order.asc("urun.no") )
.list();

.
.
kaynak: http://www.javalobby.org/articles/hibernatequery102/

19 Ekim 2010 Salı

Java Persistence API (JPA)

Katılmış olduğum eğitimdeki sunumdan yararlanarak herhan ulaşabilecek şekilde pdf'teki içeriği açıklayarak buraya gireceğim.

Eğitimi veren kişi: Melih sakarya

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Persistence kelime anlamı olarak kalıcı demektir. Yani nesnelerde veya sınıflarda bir kalıcılık söz konusu olmalıdır.

JPA;
  • Java EE standartıdır.
  • EJB lerin entity kısmını oluştururlar.
  • Entity Bean ler EJB 3.x ile oldukça kolaylaşmıştır.
  • Annotataion tabanlıdır. (@In, @Entity vs.)
  • JPQL sorgulama dili özelliği vardır.
  • Hibernate, Toplik, EclipseLink essential desteği vardır.
JPA ayarlarının ve veri tabanı bağlantı bilgilerinin bulunduğu dosya "persistence.xml"dir ve JavaSource/meta-inf/ altında bulunmalıdır.

ENTITY MANAGER
Veri katmanı ile haberleşmemizi sağlayan nesne olup EntityManagerFactory sınıfı ile üretilir.

EntityManagerFactory emf = Persistence.createEntityManagerFactory("deneme");
EntityManager em = emf.createEntityManager();
em.close();

"deneme" > persistence.xml'deki --- persistence-unit name="deneme"


ENTITY (Entity)
  • Veri sınıflarını ifade eder
yani eğer ki class ve içerdiği nesneler ver tabanında yer alacaksa bu class'ı Entity olarak tanımlarız.
  • Her bir Entity bir kayıt sınıfıdır.
  • Nesneler Kayıtları ifade eder
Bir class'ın nasıl entity yapılacağı ile ilgili içerik için tıklayınız.

EntityManager işlemleri

Yani veri tabanı ile ilgili işlemler ve onları yapan komutlar;

persist : Kaydetme işleimni yapar.
entityManager.persist(kullanici);

remove : Silme işlemini yapar
entityManager.remove(kullanici);

refresh : verinin son halini getirir.
entityManager.refresh(kullanici);

merge : Eğer veri tabanında aynı kayıt varsa kaydetmez, yok ise kaydeder, eğer değişiklik var ise update eder.
entityManager.merge(kullanici);

....
....



28 Eylül 2010 Salı

Statefull, Stateless Session Bean

Beanleri (class) statefull veya stateless yapınca ne oluyor?

Statefull session bean : Statefull kullanıldığı zaman, nesne üyeleri yani class'ın içindevar olan field'lar (alanlar) tek bir session bean'in durumunu temsil eder. Bu durum, istemci oturumu kapatana kadar korunur, değerler hafızada yer alır. Bu duruma Conversational State denir.

Stateless Session Bean : kullanıldığında ise Conversational bir durum yoktur. İstemci session Bean2in metodlarını çağırınca, session bean üyelerinni durumu sadece ilgili metod bitene kadar korunur. Metod bittiğinde ise durum korunmaz.

Stateless session beanler diske yazılmazlar. Bu yüzden de statefull session bean'e göre daha iyi performans sağlarlar.

kaynak : http://www.cyber-warrior.org/FORum/j2ee-istemcileri-clients-_133235,0.cwx

27 Eylül 2010 Pazartesi

Seam annotations

Anladığım, yeni öğrendiğim annotation'lar;

@Name


@Name("componentName")

Class'a verilen ismi belirler. Bu sayede context'te bu isimle cagırabiliriz. Kullanıcı arayüz'de atama ve tanımlama yaparken componentName yazılan yere ne yazılmışsa onu yazarak nesnelerine veya metodlarına ulaşabiliriz. İstenildigi sekilde isimlendirilebilir fakat tek olmalıdır. Class ismiyle aynı olma zorunluluğu yoktur.

@Scope
@Scope(ScopeType.CONVERSATION)
Nesnenin ne kadar süre context'te kalacağını yani yaşam süresini belirler.

Scope Türleri : EVENT, PAGE,CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS.

EVENT : Default degerdir. Tek bir istek boyunca yaşar
PAGE : sayfa açık kaldığı sürece yaşar, devam eder.
CONVERSATION : Birkaç sayfadaki bilgiler alınacaksa o sayfalar boyunca yaşar.
SESSION : Oturum kapanıncaya kadar yaşar
BUSINESS_PROCESS :
APPLICATION : uygulama kapanıncaya kadar yaşar.
STATELESS :

~

@In

Context'te inject edilen nesne var ise onun bir instance'ını getirir. Eğer yoksa null döndürür.

@In(create=true)
Inject edilen nesne null olduğunda hata verir. Eer create=true denilirse SEAM o nesnenin bir instance'ını oluşturur.

@Out
Başına @Onut annotation'ı konulan nesne context'te gönderilir ve başka bir yerden aynı nesne @In ile inject edilebilir.

@Factory

Metodlar üzerinde kullanılır. İlgili componentten bağımsız olarak kullanılabilir. Yani herhangi bir yerden verilen isim ile cagrılabilir.



Versiyonlama (@Version)

@Version annotation'ı ile versiyonlama yapabilirsiniz.


@Entity
public class Ogrenci implements Serializable {
private Long id;
private String ad;
private Integer versiyon;

@Id @GeneratedValue
public Long getId() ...

@Version
public Integer getVersiyon() ...

}


Bu sayede aynı anda işlem yapıldığında uyarı verilir. Versiyon kontrolu yapar ve duruma gore işleme devam eder.

Entity Class (@Entity)

Entity class'lar eğer verilerde bir kalıcılık sağlanacaksa oluşturulur. Kalıcılık derken, eğer bir veritabanına veri kaydedeceksek, işte o zaman.

Entity classlar oluşturuldukları isimde, kullandığımız veritabanında bir tablo oluştururlar ve class'ın içinde ki nesneler'de veri tabanındaki o tabloya kolon,alan olarak eklenir.

Eğer tablodaki isminin Entity ismi ile aynı olmasını istemiyorsak;

@Table(name="konulacak_Isim") annotation'ını Entity class'ın başında tanımlarız.


Mesala Öğrenci isimli bir class'ımız olsun.

--

public class Ogrenci{

private String ad;
private String soyad;

//Getter Setter

}

--

Bu normal oluşturulmuş ad ve soyad bilgilerini tutan bir class'tır. Fakat ben bu class'taki alanları veri tabanına da eklemek istiyorum.

Entity class oluşturmak için gerekli olan şartlar;

* Classın başına @Entity annotation'ı eklenmeli
* Serializable implements edilmeli
* Bir identy (id) icermeli ve o id'nin başına da @Id ve @GeneratedValue annotation'ı eklenmeli


@Id : O nesnenin ID olacagını belirtir.
@GeneratedValue : Id' değerinin otomatik olarak artacağını belirtir
---

@Table(name="ogr")
@Entity
public class Ogrenci{

@Id @GeneratedValue
private Long id;
private String ad;
private String soyad;

//Getter Setter

}

@Transient
Entity class'ımıza eklediğimiz herhangi bir nesnesin vertabanında bir karşılığı olmasını istemiyorsak, veri tabanına eklenmesini istemiyorsak o nesnenin başına @Transient annotation'ını eklememiz yeterli olacaktır.


@Entity
public class Ogrenci{

@Id @GeneratedValue
private Long id;
private String ad;
private String soyad;

@Transient
private String ogretmeni;

//Getter Setter

}

12 Ağustos 2010 Perşembe

f:selectItems

listeye girecek elemanları tek tek xhtml'e girmektense, managedbean'de liste oluşturup o listeyi döndürmeyi tercih edenler;



public class Ornek{

private String harf;

public List getReportTypes() {
List harfler = new ArrayList();

harfler.add(new SelectItem("a", "A"));
harfler.add(new SelectItem("b", "B")));
harfler.add(new SelectItem("c", "C")));
harfler.add(new SelectItem("d", "D")));

return harfler;
}

//getter setters
}


xhtml de ise;




3 Ağustos 2010 Salı

Postgres start / stop

Programı çalıştırdığımda veritabanım olan postgres'e ulaşamadığımdan login olamıyordum. postres nasıl olduysa durmuş.

startlamak için konsolda;
sudo /etc/init.d/postgresql-8.4 start

Durdurmak için;
sudo /etc/init.d/postgresql-8.4 stop

23 Temmuz 2010 Cuma

İreport dublicate parameter hatası ve çözümü

Error loading the report template:
net.sf.jasperreports.engine.JRException: Duplicate declaration of parameter : vergiDairesi

xml kısmında iki kez aynı parametre tanımlandığı için bu hatayı vermektedir.

bir field için bir tanım yeterli olmaktadır. Çözüm için iki tanımdan biri kaldırılmalı
:)

22 Temmuz 2010 Perşembe

Jsf elementleri

  • HTML

 














Blogger'a html kod ekleyebilmek için





I. Adım Template'in html kısmını açın.
II. Aşağıdaki linke gidin ve tüm css'i kopyalayın.


http://syntaxhighlighter.googlecode.com/svn/trunk/Styles/SyntaxHighlighter.css

III. " ]]--> " ifadesini aratın ve hemen öncesine o css'leri yapıştırın.

IV. <'/head> tagı öncesine şağıdaki kodu yapıştırın.


















V. <'/body> tagı öncesine ise





Blogu kaydedin ve html olarak görünmesini istediğiniz kodları


...html kodları ikisi arasına yazın..



Kaynak: http://codingfreak.blogspot.com/2009/02/blogger-adding-syntax-highlighter-to.html

25 Haziran 2010 Cuma

Map'in keylerini List'e atmak

//collectCostCenterElementAmounthsByCostCenterName keylerini listeye atıyoruz
List employerList = new ArrayList(collectCostCenterElementAmounthsByCostCenterName.keySet());

listeyi compare etmek için;

Collections.sort(employerList, new CompanyNameCompare());

CompanyNameCompare class'ı
------------------

package name.name;

import java.util.Comparator;

/**
*
* @author halime
*
*/

/***
* Sirketin altinda bulunan işverenlerin isimlerini compare ediyor
*/
public class CompanyNameCompare implements Comparator {
public int compare(String isveren1, String isveren2) {
return isveren1.getAdi().compareTo(isveren2.getAdi());
}
}

21 Haziran 2010 Pazartesi

CreateCriteria

İşten çıkış tarihi boşsa veya endDate.getTime()'dan büyük eşitse ve since'i endDate.getTime()'dan küçük eşitse o şirketteki bütün çalışanların listesini döndürür.

Ne tür classle işlem yapacağımızı belirtiyoruz.

ve skısıtlamalarımızı giriyoruz.
  

employmentList.addAll((List) hibernateSession
.createCriteria(Employment.class)
.add(Restrictions.in("employer", "ABC"))
.add(Restrictions.or(Restrictions.isNull("till"),Restrictions.ge("till", endDate.getTime())))
.add(Restrictions.le("since", endDate.getTime()))
.list());

.
.

10 Haziran 2010 Perşembe

Konsol komutları

işletim sistemi olarak linux ubuntu kullananlar için;

java' durdurumak için (for kill java);
ps -ef | grep java

javanın id'si dönecektir
kill -9 (java Id)

---------------

bir yerden başka bir yere dosya göndermek (taşımak)
scp /home/halime/Desktop/belge.txt /home/halime/Belgelerim/

izin vermiyorsa başın "sudo" yazılır.

---------------

dosyayı kaldırmak veya silmek için;
rm -f
/home/halime/Desktop/belge.txt

---------------

Kısa Yolllar:

Ctrl+C : şuanki komutu durdurur
Ctrl+D : exit gibi oturumu kapatır
Ctrl + P: son komutu gösterir
exit : oturumdan çık

---------------



28 Mayıs 2010 Cuma

Hibernate Criteria (Sorgu SQL) oluşturma

Criteria class'ınıı kullanarak sorgu oluşturabiliyoruz.

Nasıl mı?:)

Kisi.java isimli bir classımız olsun


public class Kisi{
private String isim;
private String soyIsim;

....getter and setter methods....
}


---

public class Test {

List isimListesi= new ArrayList();


Criteria crit = session.createCriteria(Kisi.class);
crit.add( Expression.eq( "isim", "Halime Oral" ) );


isimListesi= crit.list(); //hql ile alınan sorgu sonuçlarını listeye aıyoruz

}




criteria expression:

Restriction.allEq = Bütün değerler eşitse

Restriction.between = arasında

Restriction.eq = eşise

Restriction.ge = büyük eşitse

Restriction.gt =büyükse

Restriction.le = küçük eşitse

Restriction.lt = küçükse

Restriction.ne= eşit değilse

27 Mayıs 2010 Perşembe

Hibernate Öğreniyorum (Hibernate nedir?)

Hibernate'i tam anlamıyla öğrenmeye çalışırken web'den bulduğum yazıları derkeleyerek ve kaynak gösterek bir yere not etmek istedim.

başlandıç olarak

Hibernate, Java platformunda yazılmış bir ORM (Object/Relational Mapping) aracıdır. ORM, nesne odaklı (object oriented) dillerdeki nesnelerin, ilişkisel veritabanlarındaki (relational databases) kayıtlara nasıl karşılık geldiğini yürüten bir teknolojidir. NHibernate adında .NET çatısı için yeniden yazılmış bir türevi bulunur.

Hibernate gibi ORM araçlarıyla, bir nesneyi veritabanına kaydetmek, yeni halini güncellemek ve sorgulama yapmak düz SQL bağlantılarına göre çok kolaydır.

Örneğin, JDBC ile veritabanına bir kayıt eklemek için şuna benzer bir kod yazılır:

stmt.executeUpdate( "INSERT INTO KAHVE VALUES ('Colombian', 101, 7.99, 0, 0)");

Burada, "KAHVE" tablosuna bir kayıt eklenmekte. Böyle bir işlemi Hibernate ile yapmak için:

session.saveOrUpdate(kahve);

kahve, bildiğimiz düz bir java nesnesidir (POJO).

Hibernate gibi ORM araçlarının en önemli faydası, kod yazımını kısaltmak veya kolaylaştırmaktan öte, yazılım bakımını kolaylaştırmasıdır. Veritabanı temelli uygulamalarda, kodun 1/3´ü veritabanı erişimine yöneliktir. Veritabanındaki bir kolonunun tipinin değişmesi, yeni bir kolon eklenmesi gibi değişiklikler, bütün veri erişim kodunu tekrar gözden geçirmeyi gerektirir. Hibernate ile bu gözden geçirmeden çok yüksek oranda tasarruf edilir. Hibernate kullanılan yazılımlarda, veritabanındaki değişikliklerde yapılması gereken sadece nesnelerle tabloların birbirine nasıl eşleştirildiğinin (mapping) gözden geçirilmesidir.

kaynak: http://tr.wikipedia.org/wiki/Hibernate

sisteme nasıl entegre edilmesi için ise şağıdaki linki takip edin :)

http://www.ceviz.net/hibernatee-giris_a1215.html
.
.

24 Mayıs 2010 Pazartesi

iReport'ta Yazıya Özellikleri Verme


Herzamanki gibi ilgili alanlar seçilir ve properties'den sırayla;

Font Name: Yazı ismi :)
Size : Boyutu
Bold : kalın olsun mu?
Italic : eğik olsun mu?
Underline : altı çizik olsun mu?
Strike Through : üstü çizik olsun mu? (Galiba!..)
Pdf Font Name : Pdf üretildiğindeki yazı adı
Pdf Embedded : Pdf gömülsün mü? (anlamadım :))
pdf Encoding : Karakter ayarı (Türkçe karakter sorunu buradan giderilir)
Horizontal Alignment : yazı ortalansın mı, sola mı yoksa sağa mı yaslansın
Vertical Alignment : Yazı ilgili alanın üstünde mi ortasındamı yoksa tabanında mı yer alsın
Rotation : hiçbiri, sağ, sol (none, right, left)
Line Spacing : Yazı uzun geldiğinde alt satıra kaysın mı?

iReport'ta null sorunu ve çözümü

Raporu tasarladınız ve kodu yazdınız. Boş gelen alanlar rapora basıldığında boş gözükmesi yerine "null" diye yazar. Kötü br görüntü :) Oysa ki siz eger içeride değer yoksa hiçbirşey yazmamasını istersiniz.

bunun için de çözüm basit.

aslında textField olarak tanımlanmış tüm alanlar için bu uygulamayı yaparsak tekrar aynı sorunla karşılaşılmaz. alan(lar) seçilir ve yine sağ taraftaki properties'den "Blank When Null" kutucuğunu işaretleyip (.jasper uzantılı dosyayı silmeyi unutmuyoruz) tekrar programı çalıştırdığımızda sorunumuz ortadan kalkmış olacaktır.

.
.
.

iReport Türkçe karakter sorunu ve çözümü

Eclipse'te;

Map allJrxmlParams = new HashMap();

allJrxmlParams.put("adi", "Ayşe Fatma");

adi alanına String olarak verebilecğeimiz gibi veri tabanından da çekerek verebiliriz.


ireport ile formu tasarladınız ve eclipse'de ilgili alana ilgili kaydı getirdiniz. Fakat türkçe karakter sorunu ortaya çıktı.

Bunun çözümü :

$F{adi}

ilgili alanı secip sağ tarafta bulunan Properties'deki Pdf Encoding ayarını "CP1254 (Turkish)" olarak secip kaydediyoruz.

ilgili jrxml daha önceden derlendiği için .jasper uzantılı dosyayı siliyoruz. aksi takdirde yapılan değişiklik kaydedilmeyecektir.

sildikten sonra tekrar derlendiğinde türkçe karakter sorunu ortadan kalkmış olacaktır.

14 Mayıs 2010 Cuma

Locale göre ayları getirmek :)

.
.
.

Ay isimlerini tek tek message bundle'lara yazmak yerine şu şekilde bir kod buldum :)

programda hangi dil seçilirse o dil'e göre getirmekte ay isimlerini



int month = 4;
int year = 2010;

//Get Month's Names by locale :)
// Locale locale =Locale.getDefault();
Locale selectedLanguage = (Locale) Component.getInstance("org.jboss.seam.core.locale");
DateFormatSymbols symbols = new DateFormatSymbols(selectedLanguage);
String[] months = symbols.getMonths();

String monthN = months[month - 1];
allJrxmlParams.put("bordroAyYil", monthN + " / " + year);
.
.

26 Nisan 2010 Pazartesi

HashMap içindeki en yüksek key,value nasıl bulunur?

.
.
.
System.out.println("HashMap'in yüksek değeri (Value) " +

Collections.max(hm.values()) + ", ve HashMap'in yüksek anahtarı (Key) " +

(Collections.max(hm.keySet())));
.
.
.

19 Nisan 2010 Pazartesi

SQL left join right join

.
.
.

SELECT column_ad(ları)
FROM tablo_adı1
LEFT JOIN tablo_adı2
ON tablo_adi1.column_adi = tablo_adi2.column_adi


LEFT JOIN anahtarı tablo 1'deki tüm satırları getirir tablo 2 'de karşılığı olmasada...

RIGHT JOIN anahtarı ise tablo2'deki tüm satırları getirir tablo1'de karşılığı olmasada :)

kaynak : http://www.w3schools.com/sql/sql_join_right.asp

.
.
.

9 Nisan 2010 Cuma

Polimorfizm

minerallerin aynı kimyasal bileşiminde olupta diğer fiziksel özelliklerinin farklı olması olayına denir. farklı iki şekilde bulunan bileşiğe dimorf, üç şekilde bulunana trimorf denir.

örnek: en yaygın örnektir; kömür ve elmas aynı iç yapıya sahip olmalarına rağmen, atomlarının sahip olduğu farklı bağ yapısı bunların birbirlerinden çok farklı fiziksel özelliğe sahip olmalarına neden olmuştur.(*) *itusozluk

konuya buradan giriş yaparsak önce olayın ne olduğunu gerçek hayattan örnek olarak görmüş oluruz.

bunu java'ya uyguladığımızda da yine adı polimorfizm olarak geçmektedir.

Java, türetilen sınıfa ait bir variable ya da referansın ondan türemiş (extends) olan nesne ya da nesnelerde kullanılması anlamına gelir.

Alt sınıf, türetildiği ana sınıfa ait tüm özellikleri alır; yani, ana sınıf ne yapıyorsa türetilen alt sınıfta bu işlemlerin aynısını yapabilir ama türetilen alt sınıfların kendilerine ait bir çok yeni özelliği de olabilir. (http://www.bilgisayarmuhendisleri.com/sayfa.aspx?s=38)

upcasting : türetilen alt sınıfa ait nesnenin, ana sınıf tipindeki referansa bağlamanın yukarı doğru yani >

Araba sınıfına ait bir metot var : public void sur() { System.out.println("Araba Sur");}

Aile arabası ve yarış arabası ürettik (Araba sınıfını extend ettik)

public class DenemeSurusu {
public static void arabaDene(Araba ar) {
ar.sur();
}

public static void main(String args[]) {
arabaDene( new YarisArabasi() ) ;
}

}

arabaDene metodu Araba tipinde bir bir obje kabul etmekte iken biz ona YarisArabasi tipinde bir obje verdik. YarisArabasi > Araba'dan türedi bu olaya upcasting diyoruz.

Sonucda türemiş olan obje her zaman ana objenin methodlarına veya değişkenlerine sahip olacaktır(private lar hariç ) ama yeni türetilmiş olan bu objenin ekstradan methodları veya değişkenleri olabilir.

Downcasting , daha genel bir tipden daha gelişmiş bir değişim ise upcasting kadar basit ve güvenli olmayabilir .Eğer bir yer de upcasting veya downcasting den bahsediliyorsa orada kesinlikle inheritance (kalıtım) vardır .

super.metodAdi(); denildiğinde türetildiği sınıfın uygulamalarını gerçekleştirir.

Şuanki tarihin 6 ay sonrası tarihi getirmek

public static void main(String[] args) {


Calendar now = Calendar.getInstance();
now.add(Calendar.MONTH,6);

String altiAySonrasi =(now.get(Calendar.DATE) -1) + "/" + (now.get(Calendar.MONTH) + 1)+ "/"+ now.get(Calendar.YEAR);

System.out.println("Alti ay sonrasi : " + altiAySonrasi);

// Calendar now = Calendar.getInstance();
// System.out.println("Current date : " + (now.get(Calendar.MONTH) + 1)
// + "-"+ now.get(Calendar.DATE)+ "-" + now.get(Calendar.YEAR));
//
//
// now.add(Calendar.MONTH,6);
//
// System.out.println("date after 6 months : " + (now.get(Calendar.MONTH) + 1)+ "-"
// + (now.get(Calendar.DATE) -1) + "-"+ now.get(Calendar.YEAR));
//
// now = Calendar.getInstance();
// now.add(Calendar.MONTH, -5);
//
// System.out.println("date before 5 months : " + (now.get(Calendar.MONTH) + 1)
//
// + "-"+ now.get(Calendar.DATE) + "-"+ now.get(Calendar.YEAR));

}

Bugünün tarihi : 09/04/2010.....

Çıktısı : Alti ay sonrasi : 8/10/2010

kaynak: http://www.java-examples.com