merhaba arkadaşlar şuan elimde java7 kitabı var. bu kitaba çalışarak java7'yi öğrenirsem sonradan java8'e geçtiğimde java8'i öğrenmede büyük zorluk yaşarmıyım ? Elimde java7 nin kitabı olduğu için ilk java7 öğrenmek sonrada java8'e geçip onu öğrenmek istiyorum. aralarında büyük farklar varmı ? varsa neler söylermisiniz.
Not: Konuyu yanlış yerde açtığım için 2. cisini burada açtım.
java lambda expressions diye aratirsan sorunun cevabini bulacaksin edit: zaten sifirdan ogreneceksen bu farklar senin genel anlamda bir isine yaramayacak. ilk sorunun cevabi hayir zorluk yasamazsin. kullanacagin seylerin 99% ayni olacak zaten.
SS'te 8'in 7'ye göre farkı görülüyor. Her ikisi de aynı çıktıyı veriyor fakat 7'de uzun satırlar şeklinde ifade edilen işlemler, 8'de çok kısa ve açık şekilde ifade edilebiliyor, görüldüğü gibi. Temel Ruby biliyorsan, Java 8'deki bu gelişme çok daha anlaşılır gelecektir cunku Ruby de bu tür fonksiyonel programlama ifadeleri cok yaygın kullanılıyor. henüz çıkmadı fakat Java 9'da da kabuk/shell özelliği gelecek, Java programlarını kabukta denemek mümkün olacağı için java geliştirme cok daha hızlı ve verimli olacak.
9'da shell özelliği gelecek fakat 9 henüz yayınlanmadığı için Oracle'ın resmi download sayfasından indirip deneyemiyoruz. Nightly build, beta release vs. gibi sayfası varsa oradan denenebilir belki fakat sonuçta shell özelliği Java'ya 2004'te Groovy ile çoktan gelmişti o yüzden denemek için cok acele de etmiyorum. Groovy demişken Groovy Shell'den birkaç örnek:
SS'te 8'in 7'ye göre farkı görülüyor. Her ikisi de aynı çıktıyı veriyor fakat 7'de uzun satırlar şeklinde ifade edilen işlemler, 8'de çok kısa ve açık şekilde ifade edilebiliyor, görüldüğü gibi. Temel Ruby biliyorsan, Java 8'deki bu gelişme çok daha anlaşılır gelecektir cunku Ruby de bu tür fonksiyonel programlama ifadeleri cok yaygın kullanılıyor. henüz çıkmadı fakat Java 9'da da kabuk/shell özelliği gelecek, Java programlarını kabukta denemek mümkün olacağı için java geliştirme cok daha hızlı ve verimli olacak.
Bir adım daha kısaltma yapılabilir. Java 8 metodu olan forEach, her bir iterasyonda uygulanacak fonksiyonun sadece ismini de parametre olarak kabul ediyor. SS'te görülen System.out::println kısmı. 'System.out' normal bir sınıf (System) ve değişken (out) belirttiği için klasik Java notasyonu ile yazılıyor fakat println isim olarak verileceği için :: ile yazılıyor. Bundan daha kısa da olabilirdi o da List<String> ile tanımlamadan, Javanın Arrays.asList("Ali","Veli","Mert") ifadesinin zaten bir String listesi olduğunu tahmin etmesi ile olabilirdi fakat bu Java'nın iyice Ruby gibi dinamik bir dil olması anlamına gelirdi, Java öyle olamayacağı için onu yapamayız, yani en kısa hali böyle olsa gerek:
Not: Konuyu yanlış yerde açtığım için 2. cisini burada açtım.