Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

0
Java 8 ve yenilikleri nelerdir?

Açık 1 Cevaplar 35 Gösterim Java
Her java versiyonuyla kendini güçlendiren Java , java 8 ile birlikte ne gibi yenilikler gelmişti?

Hangileri en sık kullanılyor şuan piyasada, kullananlar var mı aranızda?
1Yorumlar
(4.8k puan)
Bunun cevabını aldıktan sonra 9-10-11-12-13-14 ve nihayet 15 deki yenilikleri de sorsan güzel olur. Bence ayrı ayrı sorularla sorabilirsin.

1 cevap

0

Java 8 ile beraber bir sürü özellik geldi. Geliştiricinin hayatını çok etkileyen özelliklerden birkaçını seninle paylaşayım

  • Iterator nesnesi kullanımı kolaylaştırılması için Iterable arayüzünü gerçekleştiren sınıflara .foreach metodu geldi.
    List<Integer> myList = new ArrayList<Integer>();
    for(int i=0; i<10; i++) myList.add(i);
     
    // Eskiden böyle gezilebilirken
    Iterator<Integer> it = myList.iterator();
    while(it.hasNext()){
      Integer i = it.next();
      System.out.println("Iterator Value::"+i);
    }
    		
    // artık forEach kullanılabiliyor.
    myList.forEach(new Consumer<Integer>() {
      public void accept(Integer t) {
      System.out.println("forEach anonymous class Value::"+t);
    }
    });

     

  •  interface (arayüz) geliştirirken metodların gövdesi olmadığını biliyoruz. Java 8 ile beraber artık metodların gövdeleri olabiliyor.
    default void forEach(Consumer<? super T> action) {
      Objects.requireNonNull(action);
      for (T t : this) {
        action.accept(t);
      }
    }

    Bir sınıf iki tane interface gerçekleştiriyorsa ve ikisinde de gövdesi olan aynı imzada bir metod bulunuyorsa, sınıfın bu metodu kendisi gerçekleştirmesi gerekiyor. C++ kullanırken bu tarz bir yaklaşım diamond problem diye bir soruna yol açıyordu. Keza burada da açıyor. Derleyici bu problem varsa hata fırlatacak şekilde düzenlenmiş.
  • En önemli özellikler lambda expression konusu. Başka dillerde olan ve programı yazmayı kolaylaştıran lambda yapılar buraya da geldi. Hemen birkaç kısa örnek.
    // Eski kod
    Runnable r = new Runnable(){
      @Override
      public void run() {
        System.out.println("My Runnable");
      }};
    
    // Yeni kod (lambda ile)
    Runnable  r = () -> System.out.println("My Runnable");
    

     

  • Stream API geldi. Artık collection sınıfları üzerinde işlemler yaparken .stream() altındaki metodlardan faydalanılabilir. Bayağı kod tasarrufu yaptırıyor. Az kod çok iş oluyor.
  • DateTime API geliştirmeleri
  • Collections geliştirmeleri
  • Concurrency geliştirmeleri
  • File API geliştirmeleri
(4.8k puan)