Wednesday, November 10, 2010

JXPATH Uygulamalari

 1.Uygulama :
public class Employee {
    private String name;
    private String surname;
    private int age;
    public Employee() {
    }
    public Employee(String name, String surname, int age) {
        this.name = name;
        this.surname = surname;
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSurname() {
        return surname;
    }
    public void setSurname(String surname) {
        this.surname = surname;
    }
}


public class Main {
    public static void main(String[] args) {
        Employee e = new Employee();
        e.setName("Abdulkadir");
        e.setSurname("Selcukoglu");
        e.setAge(27);
        JXPathContext context = JXPathContext.newContext(e);
        Object n =  context.getValue("name");
        System.out.println(n);
    }
}


//Console Output
Abdulkadir




 2.Uygulama :
public class Employee {
    private String name;
    private String surname;
    private int age;
    public Employee() {
    }
    public Employee(String name, String surname, int age) {
        this.name = name;
        this.surname = surname;
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSurname() {
        return surname;
    }
    public void setSurname(String surname) {
        this.surname = surname;
    }
}

public class EmployeeBean {
    List list =  new  ArrayList();
    public EmployeeBean() {
        list.add(new Employee("Abdulkadir","Selcukoglu", 27));
        list.add(new Employee("Ertugrul","Aslan", 26));
        list.add(new Employee("Rasim","Imanov", 35));
        list.add(new Employee("Nazim","Memedov", 25));
        list.add(new Employee("Murat","Tagiyev", 24));
    }
    public List getList() {
        return list;
    }
    public void setList(List list) {
        this.list = list;
    }
}

public class Main {
    public static void main(String[] args) {
        EmployeeBean b = new EmployeeBean();
        for (Employee e : b.list) {
            JXPathContext context = JXPathContext.newContext(e);
            Object n =  context.getValue("name");
            Object s =  context.getValue("surname");
            Object a =  context.getValue("age");
            System.out.println(n + "  "+s+"  "+a);
        }
    }
 }

//Console Output
Abdulkadir  Selcukoglu  27
Ertugrul  Aslan  26
Rasim  Imanov  35
Nazim  Memedov  25
Murat  Tagiyev  24

 2.Uygulama : 

 public class Address {
    private String country;
    private String city;
    public Address() {
    }
    public Address(String country, String city) {
        this.country = country;
        this.city = city;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
}
public class Employee {
    private String name;
    private String surname;
    private int age;
    private Address address;
    public Employee() {
    }
    public Employee(String name, String surname, int age, Address address) {
        this.name = name;
        this.surname = surname;
        this.age = age;
        this.address = address;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSurname() {
        return surname;
    }
    public void setSurname(String surname) {
        this.surname = surname;
    }
}

public class EmployeeBean {
    List list =  new  ArrayList();
    public EmployeeBean() {
        list.add(new Employee("Abdulkadir","Selcukoglu", 27,new Address("Turkiye","Mardin")));
        list.add(new Employee("Ertugrul","Aslan", 26,new Address("Turkiye","Gaziantep")));
        list.add(new Employee("Rasim","Imanov", 33,new Address("Gurcistan","Tiflis")));
        list.add(new Employee("Nazim","Memedov", 25,new Address("Gurcistan","Tiflis")));
        list.add(new Employee("Murat","Tagiyev", 26,new Address("Azerbaycan","Baku")));
    }
    public List getList() {
        return list;
    }
    public void setList(List list) {
        this.list = list;
    }
}

public class Main {
    public static void main(String[] args) {
        Address a =  new Address();
        a.setCountry("Turkiye");
        a.setCity("Mardin");
        Employee e = new Employee();
        e.setName("Abdulkadir");
        e.setSurname("Selcukoglu");
        e.setAge(27);
        e.setAddress(a);
        JXPathContext context = JXPathContext.newContext(e);
        Object ulke =  context.getValue("address/country");
        System.out.println(ulke);
    }
}

//Console Output
Turkiye

  3.Uygulama : 
public class Names {
    private String nameList[];
    public Names() {
    }
    public Names(String[] nameList) {
        this.nameList = nameList;
    }
    public String[] getNameList() {
        return nameList;
    }
    public void setNameList(String[] nameList) {
        this.nameList = nameList;
    }
}


public class Main {
    public static void main(String args[]){
        String list[]={"Abdulkadir","Ertugrul","Rasim","Nazim"};
        Names n=new Names();
        n.setNameList(list);
        JXPathContext context = JXPathContext.newContext(n);
        Object o[]= (Object[]) context.getValue("nameList");
        System.out.println(o[0]);
        System.out.println(o[1]);
        System.out.println(o[2]);
        System.out.println(o[3]);
    }
}

//Console Output
Abdulkadir
Ertugrul
Rasim
Nazim


  4.Uygulama :
 
public class Book {
    private String name;
    public Book() {
    }
    public Book(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}


public class Author {
    Book books[];
    public Book[] getBooks() {
        return books;
    }
    public void setBooks(Book[] books) {
        this.books = books;
    }
}



public class Main {
    public static void main(String args[]) {
        Author author = new Author();
        Book bs[] = new Book[3];
        bs[0] = new Book();
        bs[0].setName("Hz Muhammed'in Hayati");
        bs[1] = new Book();
        bs[1].setName("Sahabalerin Hayati");
        bs[2] = new Book();
        bs[2].setName("Guzel Ahlak");
        author.setBooks(bs);
        JXPathContext context = JXPathContext.newContext(author);
        Book b[]= (Book[]) context.getValue("books");
        for (Book k : b) {
            System.out.println(k.getName());
        }
    }
}


//Console Output
Hz Muhammed'in Hayati
Sahabalerin Hayati
Guzel Ahlak



  5.Uygulama :
public class Book {
    private String name;
    public Book() {
    }
    public Book(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}


public class Author {
    Book books[];
    public Book[] getBooks() {
        return books;
    }
    public void setBooks(Book[] books) {
        this.books = books;
    }
}
 
public class Main {
    public static void main(String args[]) {
        Author author = new Author();
        Book bs[] = new Book[3];
        bs[0] = new Book();
        bs[0].setName("Hz Muhammed'in Hayati");
        bs[1] = new Book();
        bs[1].setName("Sahabalerin Hayati");
        bs[2] = new Book();
        bs[2].setName("Guzel Ahlak");
        author.setBooks(bs);
        JXPathContext context = JXPathContext.newContext(author);
        Iterator iter = context.iterate("books[position() < 4]");
        while(iter.hasNext()){
            Book bb = (Book) iter.next();
            System.out.println(bb.getName());
        }
   }
}

//Console Output 
  Hz Muhammed'in Hayati
Sahabalerin Hayati
Guzel Ahlak


  6.Uygulama 

   
public class Address {
    private String country;

    private String city;

    public Address() {
    }

    public Address(String country, String city) {
        this.country = country;
        this.city = city;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }
}

public class Employee {
    private Map addresses = new HashMap();
    public Employee() {
        addresses.put("home", new Address("Turkiye","Mardin"));
        addresses.put("office", new Address("Azerbaycan","Baku"));
    }

    public Map getAddresses() {
        return addresses;
    }

    public void setAddresses(Map addresses) {
        this.addresses = addresses;
    }
 }

 public class Main {

    public static void main(String args[]) {
        Employee emp = new Employee();
        JXPathContext context = JXPathContext.newContext(emp);
        String cou = (String) context.getValue("addresses/home/country");
        String ci = (String) context.getValue("addresses/home/city");
        System.out.println(cou);
        System.out.println(ci);
        String cou2 = (String) context.getValue("addresses/office/country");
        String ci2 = (String) context.getValue("addresses/office/city");
        System.out.println(cou2);
        System.out.println(ci2);
    }
}
 

//Console Output
Turkiye
Mardin
Azerbaycan
Baku




Monday, October 25, 2010

JSF Giris

Bu yazi asagindaki linkten kopyalanmistir Fatih Celk hocamizin elline emegine saglik Fatih hocanin yazilarini ve bu yaziyi su linkten bulabilirsiniz http://www.fatihcelik.org/2009/11/jsf-tutorial-1-giris/
Nedir?

JSF (JavaServer Faces) JEE uygulamalarının web arayüzünü inşa etmek için oluşturulan, Javanın standart web frameworküdür.JEE uygulamalarında web arayüzleri oluşturmak için Java servlet, java server pages(JSP) , Struts, Apache Wicket gibi çok sayıda framework bulunur(Tabi web uygulamalarında çığır açan java appletlerini de unutmamak lazım). JSF de bunlardan bir tanesidir.
JSF Mimarisi

JSF ,JSP ve Servlet’ların üzerine kurulmuştur.Bu var olan teknolojilerle MVC yaklaşımını birleştirir.

                                                               JSF Mimarisi

JSF MVC mimarisini de destekler.Hatta JSF’nin ortaya çıkmasındaki en büyük etkende JSP’nin MVC’yi kendi içerisinde destekleme konusundaki sıkıntılarıdır.MVC(Model-View-Controller) basitçe iş ve sunum mantığının birbirinden ayrılması olarak düşünülebilir.MVC hakkında daha fazla bilgi için buraya bakabilirsiniz.

                                                                   MVC yapısı

Sonraki resimde de JSF nin MVC’yi nasıl uyguladığı görülmektedir.



JSF'nin MVC'yi uygulaması
Neden JSF?

Yazının başında da belirttiğim gibi çok sayıda Java web frameworkü bulunmakta.Peki neden JSF?
             - Herşeyden önemlisi JSF bir Java standardıdır.
             - Sektördeki önemli firmaların (IBM, Oracle…) JSF’ye olan desteğide onu bir adım öne çıkarır.
             - Farklı JSF implementasyonları bulunur.(Sun Reference Implementation, Apache MyFAces..)Bu da bize projemizin gerekliliklerine göre seçim yapabilme özgürlüğü sağlar.
             - Bileşen yönelimlidir.
             - Çok sayıda 3. parti bileşen kütüphanesi bulunur(Richfaces, Icefaces, Primefaces,Trinidad,Tomahawk…).

Şu anda JSF’nin 2.0 versiyonu bulunmaktadır.Ancak ben bu tutorial serisinde JSF 1.2 yi anlatacağım.Çok derinlere inemeyeceğim için bunun çok problem olacağını zannetmiyorum.Daha ileriki makalelerde JSF 2.0 ile gelen yeniliklere de değineceğim.

Bu ilk makalem JSF ye basit bir giriş niteliğindeydi.Bir sonraki makalede geliştirme ortamının kurulumu ve ilk örneğimizi yapacağız.Herkese iyi çalışmalar.

Friday, October 22, 2010

Checked Exceptions And Runtime Exceptions.

Soru
Iyi gunler arkadaslar asagidaki soruyla karsilastiktan sonra exception'lar ile ilgili ogrenmem gereken birsey oldugunu gordum sorum su kontrol edilebilen hatalar ve calisma zamani verilen hatalar var. bir cok exception sinifi var ve ben hagisi runtime exception hangisi checked exception oldugunu nasil anlayabilirim mesala biiyorumki

FileInputStream fis= new FileInputStream("dememe.txt");

sinifi icin FileNotFoundException sinifi checked exception dir.

Yani benim bu Exception siniflarini tek tek bilmeliyimki hangisi checked exception hangisi runtime exception oldugunu yoksa ayird edilebilecek birsey varmi yardimci olabilirmisiniz

Which of the following are checked exceptions?

a) IllegalThreadStateException

b) IllegalMonitorStateException

c) ParseException

d) NumberFormatException

e) IOException

f) RuntimeException

g) ClassNotFoundException

cevap c , e , g



Hayirli gunler


Cevap veren Gökalp Gürbüzer JTPD sayfasindan
http://www.jtpd.org/talks/5378557

Java'daki aykırı durumları (exception) "kontrol edilebilir"/"çalışma zamanı" olarak ayırmak biraz kafa karıştırıcı geliyor; çünkü aykırı durumların tamamı çalışma zamanında geldiği aşikar. Aslında "Runtime Exception" olarak anılan aykırı durumlar java.lang.RuntimeException sınıfından türeyen aykırı durumlardır. "Runtime Exception"lar, JVM'in karşılaştığı aykırı durumlardır; daha doğrusu JVM ile işletim sistemi arasındaki iletişim sırasında ortaya çıkan aykırı durumlardır. RuntimeException sınıfından türemeyen ama Exception sınıfından türeyen bütün aykırı durumlar "Checked Exception" olarak adlandırılır ve JVM üzerinde çalışan program akışının denetiminde olan durumları kapsar.

Bu yüzden "Checked/Runtime Exception" ayrımı için belki de "Normal/JVM Aykırı Durumu" çevirmesi daha doğru olabilir.

Normal/JVM aykırı durumlarını genel olarak ayırabilmek için de aykırı durumun hangi durumda fırlatılabildiğini tahmin etmek bir yöntem olarak uygulanabilir. Örnek sorudaki "ParseException" verilen bir metnin ayıklanamadığı (parse) durumlarda fırlatıldığını biliyorsak "JVM ile ilgisi yoktur, o zaman normal aykırı durumdur" dememiz mümkün. Keza IOException da bir dosyanın bulunmaması ya da okunamaması, ya da bir sokete bağlanılamadığı zaman karşımıza çıktığına göre "JVM değildir, o zaman normal aykırı durumdur" diyebiliriz. Son olarak da ClassNotFoundException bir sınıfın adını verip sınıfı çağırmaya çalıştığımızda karşımıza geldiğine göre "JVM değildir, o zaman normal aykırı durumdur" denilebilir.

Diyeceksiniz ki "IOException'ın nasıl olur da JVM ile ilgisi olmaz?". Yanıtı şu: JVM, işletim sistemine "ben bu G/Ç işini yapacağım" demiş ve işletim sistemi "olmaz kardeşim, izin vermiyorum/yapamazsın" demiştir. Yani arada iletişim sağlanmış, ama JVM olumsuz yanıt almıştır. Bu bir JVM aykırı durumu değildir, JVM bu yanıtı bize bildirmektedir yalnızca. Eğer işletim sistem ile iletişim sağlayamasa idi bir JVM aykırı durumu fırlatılacaktı.

Aynı mantıkla diğer yanıtlardan IllegalThreadState ve IllegalMonitorState "JVM ile ilgilidir" diye düşünülüp JVM aykırı durumu olduğu söylenebilir. f şıkkında verilen RuntimeException zaten JVM aykırı durumlarının türediği nesne olduğu için en kolay ayırt edilebilecek şık.

Bu sorudaki asıl zor nokta d şıkkında: NumberFormatException. Bu aykırı durum RuntimeException'dan türeyen "IllegalArgumentException" sınıfından türer ve IllegalArgumenException da bir yordama normalde verilmemesi gereken bir parametre ile gidildiğinde alınan bir aykırı durumu belirtir. Bence IllegalArgumenException'un JVM aykırı durumu olduğu tahmin edilebilir, ancak NumberFormatException için durum böyle değil malesef.

Biraz uzun oldu sanırım ama, kıssadan hisse olarak ayrımı şöyle yapabiliriz:

Eğer aykırı durum JVM'e değen bir satırdan gelmiş ise JVM aykırı durumudur. Eğer aykırı durum JVM'in üst katmanlarında çalışan koddan geldiyse normal aykırı durumdur.

JVM'e değen satırlar ise bellek, iş (process) ve iplik (thread) ile ilgili satırlardır.

Bu açıdan bakıp biraz JavaDoc kurcalamak sanırım bu ayrımı gözümüz kapalı yapmayı sağlayacaktır.


Benim sonrada eklediklerim 
 

java.lang.RuntimeException sinifindan tureyan siniflar ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

java.lang.Exception sinifindan tureyan siniflar  
AclNotFoundException, ActivationException, AlreadyBoundException, ApplicationException, AWTException, BackingStoreException, BadLocationException, CertificateException, ClassNotFoundException, CloneNotSupportedException, DataFormatException, DestroyFailedException, ExpandVetoException, FontFormatException, GeneralSecurityException, GSSException, IllegalAccessException, InstantiationException, InterruptedException, IntrospectionException, InvalidMidiDataException, InvalidPreferencesFormatException, InvocationTargetException, IOException, LastOwnerException, LineUnavailableException, MidiUnavailableException, MimeTypeParseException, NamingException, NoninvertibleTransformException, NoSuchFieldException, NoSuchMethodException, NotBoundException, NotOwnerException, ParseException, ParserConfigurationException, PrinterException, PrintException, PrivilegedActionException, PropertyVetoException, RefreshFailedException, RemarshalException, RuntimeException, SAXException, ServerNotActiveException, SQLException, TooManyListenersException, TransformerException, UnsupportedAudioFileException, UnsupportedCallbackException, UnsupportedFlavorException, UnsupportedLookAndFeelException, URISyntaxException, UserException, XAException 
 

Sunday, October 17, 2010

Garbage Collector nedir?

 Bu yazi http://www.cemkefeli.com/post/2009/10/02/JAVA-Garbage-Collector-nedir.aspx bu blogtan kopyalanmistir yazan hocamizin ellerine saglik...
JAVA - Garbage Collector nedir?
by Cem Kefeli
2. Ekim 2009 04:19

Herhalde birçoğumuz o meşhur "Segmentation Fault" hatası ile karşılaşmışızdır. Hatanın isminin zaten başlı başına can sıkıcı olması bir yana bir de üstüne üstlük hata nerede? hani ne oldu? nerede problem? gibi soruların bir çoğunu da oldukça canınız sıkıldıktan sonra cevaplamanız mümkün olabilecektir. Bu iş en çok da C/C++ kullanırken başınıza gelecektir. Çünkü C/C++ da bellek yönetimi tamamen uygulama geliştiricilerin tasarrufuna bırakılmıştır. Yani siz sisteminizin belleğinin bir byte'lık bir gözüne dahi istediğiniz gibi erişebilirsiniz. Bunun bizim için münkün olmasını sağlayan olay pointer(işaretçi) kavramıdır. İşaretçiler ile istediğimiz gibi istediğimiz her yere erişebiliriz. Zaten sorunlara yol açan olaylar da tam olarak burada başlıyor. İstediğimiz yerlere erişiyoruz ama bazen de erişmememiz gereken bir yere erişme imkanı da veriyor bize. Hiç bir kontrol de yapılmıyor derleyici tarafından. Yani 'arkadaşım sen buraya erişmeye çalışıyorsun ama bak burası başkası tarafından kullanılıyor, ya da senin sınırlarının dışında.' gibi bir hata ile bizi uyarmıyor. İşi tamamen bizim bilincimize bırakmış durumda. Çok bilinçli kullanılması gereken bir bellek yönetimine sahip olmak gerekiyor. Bir yandan güzel bir yandan kötü bir özellik. Olayın bir başka yönü ise oluşturduğumuz nesnelerin kullanılmadıkça bir kenarda birikmesi ve bir süre sonra bellek sızıntısı(Memory Leak)'na yol açması. Bu olay C/C++ kullanan bir çok yazılımda, işletim sistemleri dahil, sık görülen birşeydir. Nesneleri oluşturup önerildiği şekilde uygun yollar ile bellek alanlarını boşaltmazsanız sağda solda birikirler ve gereksiz yer kaplayıp işletim sistemini felakete sürükleyebilirler. Bu olay dinamik bellek yönetimi olarak adlandırılmaktadır.

Bu olaya seneler önce ilk olarak java el attı. Dedi ki: 'Ben nesneye yönelik bir yazılım dili olduğuma göre böyle şeyler ile ilgilenmem. İşaretçi kavramı filan benim için yoktur. Benim gözümde herşey nesnedir. Dolayısı ile bellekte nesneler tutulur. Bellek yönetimine gelince o konuda da yazılımcıların işini çok kolaylaştıracak birşey sunuyorum. O da Garbage Collector(Çöp Toplayıcı)...'. Bu fikir seneler sonra C# tarafından da hemen benimsendi tabi ki. Birçok örneği olduğu gibi Microsoft bu güzelliği gözden kaçırmadı ve kendi .NET Framework yapısı içerisine dahil etti.

Garbage Collector(GC)'ın yaptığı iş temel olarak; kullanımı son bulmuş, hiçbir nesne örneği tarafından referans gösterilmeyen, bellek bölgelerini tesipit edip o bölgelerdeki bellek alanını boşaltmaktır. GC sizin yerinize yazılımınızı takip eder ve kullanılmaya bellek bölgelerini sisteme iade eder. Bu Java'da asla bellek sızıntısı olmadığı anlamına gelmez tabi ki ama daha öncelerine göre çok da az oranlara indirgenmiş ve bellek sızıntısı hatalarının tedavisi daha kolay hale gelmiştir. Az önce de söylediğim gibi Java pointer kavramını kabul etmez ve herşeye nesne gözü ile bakar. GC ise bu nesnelerin aktif kullanımın bellek üzerindeki etkisi ile ilgilenir. Program çalıştığı sürece otomatik olarak bu işlemler gerçekleştirilebileceği gibi aşağıdaki biçimde manuel olarak da tetiklenebilmektedir.
1.
Runtime.getRuntime().gc();  
2.
//veya System.gc();

Friday, October 15, 2010

System.out.printf

Iyi gunler arkadaslar bugunku yazimda System.out.printf ne oldugunu ve nasil kullanildigini anlatacam. System.out.printf console yazilacak yazinin istenilen bir kalipta cikmasini sagliyor. yani System.out.print aynisi ama farki su sen benim yazacagim kaliba uygun olarak cik manasini tasiyor. Bir uygulama ile dediklerimi daha iyi anlayacaksiniz

Once bildigimiz bir System.out.print ornegini gosterecem sonra ikisi arasindaki farki anlayacagiz Birinci uygulamami yapacam

public class TestMain {
      public static void main(String args[]){
           System.out.print("Name : Abdulkadir Surname : Selcukoglu City : Mardin");
      }
}

//Console Output
Name : Abdulkadir Surname : Selcukoglu City : Mardin

Somdi ikinci uygulama System.out.printf halina bakalim

public class TestMain {
       public static void main(String args[]){
   System.out.printf("Name : %s Surname : %s City : %s","Abdulkadir","Selcukoglu","Mardin");
       }
}


//Console Output
 Name : Abdulkadir Surname : Selcukoglu City : : Mardin

Dikkat ettiyseniz  "Name : %s Surname : %s City : : %s " bu kisim ile kalibi hazirladim ve kalibin icinde %s ile yazdigim yerlere nelerin geleceginide daha sonraki parametrelerde belirledim "Name : %s" kismindaki %s ikinci yazdigim parametre "Abdulkadir" yazisi " Surname : %s" olana yere "Selcukoglu" ve son olarakta "City : : %s " olan yere "Mardin" yazilir.

Simdi biraz daha guzel bir uygulama ile daha iyi anlamamizi sagliyalim. Ilk uygulama klasik System.out.println ile yapalim.

public class TestMain {
      public static void main(String args[]) {
             String data[][] = {{"Abdulkadir", "Selcukoglu", "Mardin"},
                                          {"Ertugrul", "Aslan", "Gaziantep"},
                                          {"Rasim", "Imanov", "Baku"}};
             for (int i = 0; i < data.length; i++) {
                    String[] d = data[i];
                    System.out.println("Name : " + d[0] + " Surname : " + d[1] + " City : " + d[2] + "");
             }
      }
}

//Console Output
Name : Abdulkadir Surname : Selcukoglu City : Mardin
Name : Ertugrul Surname : Aslan City : Gaziantep
Name : Rasim Surname : Imanov City : Baku


Simdide bu uygulamayi  System.out.printf ile yapalim

 public class TestMain {
      public static void main(String args[]) {
             String data[][] = {{"Abdulkadir", "Selcukoglu", "Mardin"},
                                          {"Ertugrul", "Aslan", "Gaziantep"},
                                          {"Rasim", "Imanov", "Baku"}};
             for (int i = 0; i < data.length; i++) {
                    String[] d = data[i];
                    System.out.printf("Name : %s Surname : %s City : : %s ",d[0],d[1],d[2]);
                    System.out.println();

             }
      }
}

//Console Output
Name : Abdulkadir Surname : Selcukoglu City : : Mardin
Name : Ertugrul Surname : Aslan City : : Gaziantep
Name : Rasim Surname : Imanov City : : Baku

Wednesday, October 6, 2010

Java Decompler

Muratkan hocam decomple programi ile actiginiz bir class uzantili dosyayi degisiklik yaptiktan sonra farkli kaydette basmalisiniz yani save as sonra orada kaydedeceginiz uzantiyi class olani java diye degistirip kaydettikten sonra class tekrar derliyeceksiniz ve derlenmis class uzantili bir dosya elde etmis olacaksiniz
 Asagida bu konu ile ilgili basit bir uygulama yaptim diyelimki Merhaba.java adinda bir class olsun
public class Merhaba{
      public static void main(String args[]){
             System.out.println("Merhaba Haciiiii");
      }
}

Bunu asagidaki sekilde derledim.
 










Derleyince Merhaba.class isminde derlenmis bir dosya olustu simdi bunu degistiriyorum

Simdide kaydediyorum

Kaydetikten sonra tekrar derlemen gerekiyor simdide asagida nasil derleyeceyini gosterecem ve goreceyizki yapilan degisiklik istenilen hale gelmis


Insallah isine yarar hayirli calismalar

TreeSet Uygulamasi

public class TreeSetMain {
      public static void main(String[] args) {
//===============================================================
                  TreeSet times = new TreeSet();
                  times.add(1205); 
                  times.add(1505);
                  times.add(1545);
                  times.add(1830);
                  times.add(2010);
                  times.add(2100);
//=================================================================
 
                TreeSet subset = new TreeSet();
  //Yukarida gorulan TreeSet'in baska bir TreeSet aktaririken headSet methodu icine yazilan degrin 
//altindaki degerleri kopyaliyor
              subset = (TreeSet) times.headSet(2010);
              for (Integer i : subset) {
                     System.out.println(i);
              }
//===============================================================
              System.out.println("subset'teki en son deger : " + subset.last());
              System.out.println("times'taki en son deger : " + times.last());

//=================================================================


              System.out.println("subset'teki ilk deger : " + subset.first());
              System.out.println("times'taki ilk deger : " + times.first());
//=======================================================
              TreeSet sub2 = new TreeSet();
  //burada yine bir TreeSet'teki degeri baska bir TreeSet'aktarirken su sayidan buyuk olnlari aktar   // demek icin tailSet kullanilir.
              sub2 = (TreeSet) times.tailSet(2000);
              System.out.print("sub2 : ");
              for (Integer i : sub2) {
                     System.out.print(" " + i);
              }
              System.out.println();
//===========================================================
// Java 6 version ile beraber gelen lower() ve higher() methodlarinin kullanimi
            System.out.println("1600'de dusuk ilk deger : " + times.lower(1600));
            System.out.println("2000'de yuksek ilk deger : " + times.higher(2000));
//==========================================================
            System.out.println("1831 sahisinin varsa kendisi yoksa bir ust sayi doner : " + times.ceiling(1831));

//=================================================================
             System.out.println("1544 sayisi varsa kendisi yoksa bir alt deger doner : " + times.floor(1544));

//==================================================================
             System.out.println("TreeSet'teki ilk degeri donderir : " + times.pollFirst());
//===============================================================
             System.out.println("TreeSet'teki son degeri donderir : " + times.pollLast());
//=========================================================
             System.out.println("TreeSet icindeki degerleri sondan basa dogru okur");
             for (Integer i : times.descendingSet()) {
                    System.out.println(i);
             }

//===============================================
           TreeSet numbers = new TreeSet();
            numbers.add(123);
            numbers.add(111);
            numbers.add(234);
            numbers.add(10);
            numbers.add(322);
            numbers.add(213);
            numbers.add(3);

//Sayilari duzgun sirasiyla verir girilen siraya gore degilde kusukten buyuge gore siralar
           System.out.print("Number List : ");
           for (Integer number : numbers) {
                 System.out.print(" " + number);
           }
           System.out.println();
//=========================================================

           TreeSet names = new TreeSet();
           names.add("Abdulkadir");
           names.add("Ertugrul");
           names.add("Rasim");
           names.add("Ahmet");
           names.add("Mehmet");
           names.add("Nazim");
           names.add("Celil");
           names.add("Kenan");

//Karaktarleri girdiyi siraya gore degilde karekteri alfabetik siraya gore siralar
           System.out.print("Name List : ");
           for (String name : names) {
                 System.out.print(" " + name);
           }
           System.out.println();

//========================================================
           System.out.print("Delal ve Delal harf sirasindan once gelen tum isimlerin listesi : ");
           for (String name : names.headSet("Delal")) {
                  System.out.print(" " +name);
           }
           System.out.println();
      }
}

//Console Output
1205
1505
1545
1830
subset'teki en son deger : 1830
times'taki en son deger : 2100
subset'teki ilk deger : 1205
times'taki ilk deger : 1205
sub2 : 2010 2100
1600'de dusuk ilk deger : 1545
2000'de yuksek ilk deger : 2010
1831 sahisinin varsa kendisi yoksa bir ust sayi doner : 2010
1544 sayisi varsa kendisi yoksa bir alt deger doner : 1505
TreeSet'teki ilk degeri donderir : 1205
TreeSet'teki son degeri donderir : 2100
TreeSet icindeki degerleri sondan basa dogru okur
2010
1830
1545
1505
Number List : 3 10 111 123 213 234 322
Name List : Abdulkadir Ahmet Celil Ertugrul Kenan Mehmet Nazim Rasim
Delal ve Delal harf sirasindan once gelen tum isimlerin listesi : Abdulkadir Ahmet Celil
 

Monday, October 4, 2010

Java Generics

Iyi gunler arkadaslar bugunku kunumuzda genericleri inceliyecez oncelikle java generic'lere neden ihtiyac duydugu ile ilgili bir uygulama yapacaz ve daha sonra genericlerin kullanimini gorecez bence bu konun anlasilmasini en iyi yolu uygulama uzerinde anlatmak

Birinci Adim









//Console Output
SONUC : 2 

Ikinci Adim










//Console Output
SONUC : Merhaba Dunya

Gorulduyu gibi her tanimlanan degisken icin ayri ayri siniflar olusturduk ama bunu bu sekulde yapmak digru degildir bu islemi iki sekilde gerceklestirebilirirz
  • Birinci yontem kalitim yolu ile genisletilmis siniflarin superclass'ini tanimlayarak yada en usteki yani butun sunuflar turedigi Objact sinifini tanimlayarak.
  •  Ikinci yontem ise generic yontemi 
Ben bu yontemlerden ikisinide sizlere gosterecem. 

Ucuncu Adim 








//Console Output
 SONUC : 5


 

//Console Output 
 SONUC : Merhaba Dunya....
 

Yukaridaki islemlerde gorulduyu gibi Objact sinifini kullanarak tek bir sinif ile bu islemi daha sade bir hale getirdik ama bu yonteminde bazi kotu yanlari misal icin asagidaki ornege bakinca analasilacakki bu sekilde sorinlarada sebeb oluyor biz bir programci olarak kullanicinin yapabilecegi tum hatalari goz onunde bulundurmaliyiz ve asagidaki uygulamayi inceleyince gorecegizki bu ilk yontemde pek kullanisli degil ve bundan dolayi java generic'ler bizim kullanimimiza sunmustur. 






//Console Output 
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at adim3.DataMain3.main(DataMain3.java:16)
Java Result: 1



Dorduncu adim 
Simdidde bu uygulamayi generic'leri kullanarak yapalim ve generic'lerin gucunui gorelim








 
//Console Output
SONUC : 5





//Console Output
SONUC : Merhaba Dunya 
 Besinci adim 
Simdide generikleri parametre olarak nasil kullanabiliriz onunla ilgli bir uygulama







 
 //Console Output
T : java.lang.Integer
K : java.lang.String
 


Altinci Adim
Simdide generiler hakinda degisik kullanimlar gorelim






//Console Output
Abdulkadir
Ertugrul
Rasim
Nazim


 Yedinci Adim






//Console Ouput

T : java.lang.Integer
K : java.lang.Integer



//Console Ouput

T : java.lang.Integer
K : java.lang.Double

//Console Ouput

   T : java.lang.Integer
K : java.lang.Long
 


//Console Output 
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code
at adim7.DataMain4.main(DataMain4.java:16)
Java Result: 1
 


Sekizinci Adim 







//Console Output

T : java.lang.String
K : adim8.Dog
-------------------------------------------
T : java.lang.String
K : adim8.Cat
 

Dokuzuncu Adim  



//Console Ouput

 





//Console Ouput

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code
at adim9.DataMain1.main(DataMain1.java:15)
Java Result: 1
 

 


//Console Ouput


 

Thursday, September 30, 2010

java.util.StringTokenizer

Java nın 3000 e yakın hazır sınıfından bir tanesi de StringTokenizer sınıfıdır. Bugün StringTokenizer sınıfının kullanımı ve bu sınıfa ait metodların ne işe yaradığını anlatmaya çalışacağım. StringTokenizer sınıfı herhangi bir metni belirlediğimiz herhangi bir kritere veya kriterlere göre parçalamak (parse etmek ,parsing) için kullanılır. Eğer herhangi bir kriter koymazsak bu durumda default olarak boşluk karakterine göre parçalama işlemi gerçekleştirilir ki bu işleme splitting denir.Parçalama işleminden sonra oluşan her bir parçaya Token denir.
Programming is Practise felsefesinden yola çıkarak bu sınıfın kullanımını kolayca anlayabileceğimiz basit bir program yazarak işe başlayalım.01 import java.util.StringTokenizer;

public class Practise { 
    public static void main(String[] args) {  
             String cumle1=”deniz gözlerinden alır sonsuzluğun haberini”;
             StringTokenizer st1 = new StringTokenizer(cumle1);
  
              while(st1.hasMoreTokens())
                   System.out.println(st1.nextToken());
               
               // 1.bölüm sonu
              String cumle2=”ben,sen,o,biz,,,siz”;
              StringTokenizer st2= new StringTokenizer(cumle2,”,”);
              while(st2.hasMoreTokens())
                     System.out.println(st2.nextToken());
         
             // 2.bölüm sonu
             String cumle3=”yıldızlara;uzanıp,hep-seni sordum?gece!yarılarında. ”
             String delims =”,;-!.”;
             StringTokenizer st3= new StringTokenizer(cumle3, delims);
             System.out.println(“\n Token sayısı=”+st3.countTokens());
 
            while (st3.hasMoreElements())
                   System.out.println(st3.nextToken());
            // 3.bölüm sonu
       }
  }


Programı bölüm bölüm inceleyecek olursak, ilk bölümde cumle1 stringini nasıl token lara ayırabileceğimizi görüyoruz.StringTokenizer tipinde bir st nesnesi oluşturuyoruz. Constructor parametre olarak sadece cumle1 stringini aldığından default olarak splitting işlemi yapacaktır yani boşluk karakterlerine göre token lara ayırma işlemi. Buna göre ilk bölümün çıktısı şu şekilde olmalıdır.

deniz
gözlerinden
alır
sonsuzluğun
haberini


İkinci bölümde, string içine bir kaç virgül ekleyerek oluşturduğumuz st2 nesnesinin yapıcısına cumle2 ve “,” stringlerini parametre olarak gönderiyoruz. Yapıcıya 2.parametre olarak gönderilen bu karaktere sınırlayıcı karakter (delimiter) adı verilir. Bu durumda cumle2 stringi “,” karakterinin görüldüğü her yerde token lara ayrılır. Çıktı şu şekilde olmalıdır.

ben
sen
o
biz
siz


Üçüncü bölümde, birden çok delimiter kullanılmak istenmiş ve bunlar karakter dizisi şeklinde bildirilmiştir.
StringTokenizer st3= new StringTokenizer(cumle3, delims); -kod satırının anlamı cumle3 stringini delims içindeki karakterlere göre token lara parçala- manasına gelmektedir.StringTokenizer oluşturduğu token ları bir dizi olarak değil ancak sırayla erişilebilecek bir enumaration type olarak döndürür. 3.bölümün çıktısı da aşağıdaki gibi olur.

Token sayısı=6
yıldızlara
uzanıp
hep
seni sordum?gece
yarılarında


Dikat edilirse, delims içinde boşluk karakteri ve “?” bulunmadığından dolayı
’seni sordum?gece’ tokenlara ayrılmamıştır.

hasMoreTokens(); boolean değer döndüren bir metoddur sırada token olup olmadığını kontrol eder
nextToken(); sıradaki token i döndürür
countTokens(); o anda kalan token sayısını verir.

Daha ayrıntılı bilgiler;
java-sun.com

Bu yazi asagidaki bloktan kopyalanmistir Levent Ozkan Hocamin elerine saglik 
http://www.leventozkan.com/?p=6

java.util.Scanner and java.util.Formatter

java.util.Scanner

Bilindiği gibi Scanner, bir veri kaynağından alınan verileri okumak için kullanılan oldukça gelişmiş bir Java sınıfıdır. Scanner, konsol üzerinden kullanıcıdan veri almanın yanında, herhangi bir dosya ile de çalışabilir. Sonuçta konsol ve dosya da birer veri kaynağıdır. Yapmamız gereken tek şey, Scanner nesnesini oluştururken dosya sistemi ile çalışacağımızı belirten uygun yapılandırıcıya (constructor) uygun nesneleri geçirmektir.

Scanner input = new Scanner(System.in);

Scanner input = new Scanner(new BufferedReader(new FileReader("c:\\e-mail.txt"))); 

java.util.Formatter 

Formatter sınıfı da, Scanner gibi benzer işlevler için tasarlanmıştır. Uygulama içerisindeki biçimlendirilmiş bir veriyi herhangi bir veri kaynağına yazdırmak için Formatter sınıfı kullanılabilir. Yine Formatter nesnesini oluştururken, hedef kaynağı bir dosya ile ilişkilendiren Java nesnesini parametre olarak geçirerek, dosya yazma işlemini tamamlayabiliriz.

Formatter output = new Formatter(new BufferedWriter(new FileWriter("c:\\e-mail.txt")));   

Simdi tanimi yaptigimiz bu iki sinif ile ilgili bir uygulama yapalim Asagidaki uygulamayi isterseniz platformda derleyip veriyi platformun consol'undanda ekleyebilirsiniz istersenizde cmd ile derlyip cmd consolu ilede ekleyebilirsiniz 

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Formatter;
import java.util.Scanner;

public class ScannerAndFormatterDemo {
       public static void main(String args[]){
            try {
// Consol'dan veri girmek icin Scanner sinfindan faydalanarak asagidaki islemleri yaptik
                    StringBuffer veri = new StringBuffer();
                    Scanner oku = new Scanner(System.in);
                    System.out.println("-------- Ogrenci Kaydi ---------");
                    System.out.println();
                    System.out.print("Isim : ");
                    veri.append(oku.next());
                    System.out.print("Soyad : ");
                    veri.append("\n" + oku.next());
                    System.out.print("Yas : ");
                    veri.append("\n" + oku.nextInt());
                    System.out.print("Bolum : ");
                    veri.append("\n" + oku.next());
                    System.out.print("Telefon : ");
                    veri.append("\n" + oku.next());
                    System.out.print("E-mail : ");
                    veri.append("\n" + oku.next());
// Yukarda Konsola girilen veriler su sekilde istenilen yere yazilmali
                    File yer = new File("c:\\OgrenciKaydi.txt");
                    Formatter yaz = new Formatter(new BufferedWriter(new FileWriter(yer, true)));
                    yaz.format("%s%n" , veri);
                    yaz.close();
// Yukarida Scanner sinifini kullanarak consola girilen veriyi okuduk simdi ise OgrenciKaydi.txt okuyalim
                   Scanner txtOku = new Scanner(yer);
                   while(txtOku.hasNext()){
                            System.out.println(txtOku.nextLine());
                   }
           } catch (Exception ex) {
                   ex.printStackTrace();
           }
     }
}



Bu konuyu yazarken tanilari Asagidaki siteden aldim Bu blogtaki yaziyida okumanizi oneririm
http://www.javablog.org/54-java-scanner-ve-formatter-siniflari-ile-dosya-islemleri