yenilikleri ve özellikleri

Slides:



Advertisements
Benzer bir sunumlar
Java Hakkında Java Nedir? Java’nın Tarihi Java’nın Avantajları
Advertisements

.NET FRAMEWORK -MASAÜSTÜ VE SUNUCU YAZILIMLARI
MS OFFICE Access 2013.
SGB.NET’İN TEKNİK ALTYAPISI
Konu: Windows Sistem Araçları
Yazılım Geliştirme ve Java
Java-Veri Tipleri- Operatorler
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
WEB SERVİCE İDRİS YÜRÜK MAHMUT KAYA.
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar)
.NET FRAMEWORK.
Tuğba DEMİREL
İnternet Programcılığı
İSİM UZAYLARI.
Programlama-II (Java ile Bilgisayar Programlama)
ÖMÜR BİLGİLİ
Bölüm 6 – Metodlar ve Parametreler
İSİM UZAYLARI (Name Space)
FRAMEWORK.
Javascript Oğuz İNAL.
Burcu Musaoğlu Data Sistem A.Ş..
Proje yönetiminde başarının yeni formülü. Daha başarılı projeler Daha ekonomik çözümler Daha özelleşmiş hizmetler için… Neden ?
Metodlar ve Parametreler
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Fork and Join Framework
NESNEYE YÖNELİK PROGRAMLAMA
İSİM UZAYLARI (NAMESPACE).
BPR152 ALGORİTMA VE PROGRAMLAMA - II
DELEGATE OOP-UYG.
Nesneye Dayalı Programlama
İnternet Programcılığı II
İSİM UZAYLARI (NAMESPACE)
Bilgisayar Programlama
Windows Server 2008’e Genel Bakış Microsoft Windows Server 2008, bilgi teknolojileri (BT) uzmanlarının altyapıları üzerindeki kontrollerini maksimum seviyeye.
Net Class Framework ’ ün en üst yapısına İsim Uzayı denir. İsim uzayları ; pascal programlama dilinde 1990 ve hatta öncesinden beri varolmuş, C’de yer.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
E-OKUL HATALARI VE ÇÖZÜMLERİ
© Haluk Bingöl v2.23 Java Programlama Dili - 01 Tek Class ile Programlama Dr. Haluk Bingöl BÜ - CmpE BU-SWE.
APPLET KAVRAMI ve GRAFİK UYGULAMALARI
C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme
BİT’ini Kullanarak Bilgiye Ulaşma ve Biçimlendirme
JAVA’DA DÖNGÜLER.
PHP.
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
Java GUI Programming.
İKMAP İnternet 1 Ders Notu
HAZIRLAYAN:SEMİH KÜRTÜNCÜ
Microsoft Office Access
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
AÇIK KAYNAK İŞLETİM SİSTEMİ
ÇOK KATMANLI MİMARİLER. Katman: Ortak işi yapan kodların bir yerde toplanması Örneğin hemen hemen her projemizde veri tabanı kullanırız, bunun için veritabanı.
Mobil Uygulama Geliştirme
Modül 1: Giriş. Genel Bakış Temel.NET kavramları Geliştirme ortamında gezinti Bir C# projesi oluştur Use Visual Studio.NET Veriye eriş Hata ayıkla ve.
BSM447 – MOBİL UYGULAMA GELİŞTİRME Öğr. Gör. Nevzat TAŞBAŞI 3. Hafta.
Sayfa Ayarlari Projelerimizde uzerinde yogunlasacagimiz dosyalar Java ve XML dosylari olacaktir.
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
C Programlama Dili Bilgisayar Mühendisliği.
PHP On Windows Bir PHP Sitesinin IIS 7 Üzerinde Yayınlaması
SONLU ELEMANLAR YÖNTEMİ
İNTERNET PROGRAMCILIĞI 2
Bilgisayar Bilimi Problem Çözme Süreci-2.
Bilgisayar Mühendisliğine Giriş
Web Servisi Aracılığıyla Android Cihazlardan Sıcaklık Kontrolü
WİNDOWS SÜRÜMLERİ ARASINDAKİ FARKLILIKLAR
Dünya Üzerine Yayılmış Çok-Kullanıcılı Çevrim-İçi Eğitsel
İOS PLATFORMUNDA MOBİL TRAFİK CEZA BİLDİRİM UYGULAMASI
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
GARBAGE COLLECTOR (  ÇÖP TOPLAYICI ).
Sunum transkripti:

yenilikleri ve özellikleri Java 7 & java 8 yenilikleri ve özellikleri Melih hilmi uludağ 22.07.2014

Java SE 6 çıkış tarihi 11 Aralık 2006 Java SE 6 çıkış tarihi 11 Aralık 2006. Yaklaşık 4,5 yıl farkla Java SE 7 yayınlandı. Bu süreçte Java SE 6 nın 26 kadar güncellemesi verilse de, Java tutkunları JDK 7 için sabırsızlanıyorlardı.

Java 7 ile gelen yenilikler Genel olarak, Performans güçlendirilmiş, kararlılık ve güvenirlilik sağlanmış. Daha zengin internet uygulamaları için Java Eklentisine yönelik iyileştirmeler yapılmış. Java kodu yazma ve optimize etme üzerine dile yenilikler ve iyileştirmeler getirilmiş. Java dışı dilleri daha etkin desteklemek için Java Virtual Machine iyileştirmeleri sağlanmıştır.

BÖL VE YÖNET/KATIL JAVA 7’ nin en iyi yanı, Problem t1 t2 t3 t4 …. JAVA 7’ nin en iyi yanı, Problemi daha akıllı bir biçimde alt problemlere parçalayacak ve bu alt problemlerin çözümüne götüren iş parçaları arasında düşük eş zamanlama (synchronization) maliyeti olan yapılara ihtiyacımız var. Nihayet Java 7 Böl/Katıl çatısı (Fork/Join Framework) olarak adlandırılan bir çözüm sunarak çok çekirdekli sistemlerde uygulama geliştirmeyi nispeten kolaylaştırdı.

ÖNE ÇIKAN ÖZELLİKLER

Değişkenleri Binary olarak tanımlayabiliyoruz. İlkel tiplerden tam sayıların değerlerini tutabildiğimiz byte, short, int ve long tipleri artık binary şekilde tanımlayabiliyoruz. Yani sayıların başlarına “0b” ya da “0B” yazabiliyoruz. B’nin burada küçük büyük harf olması herhangi bir şeyi değiştirmiyor.

Sayısal değişkenler arasına alt çizgi konulabiliyor. Sayısal tipleri artık basamaklar arasına alt çizgi yazarak tanımlayabiliyoruz. Yalnız ondalıklı sayılarda noktadan hemen önce ya da sonra, long tiplerde de ‘L’ harfinden önce alt çizgi kullanamıyoruz. Bunun yanında sayısal değerin en başına ya da en sonuna da alt çizgi koyamıyoruz. Alt çizgi kullanımı bize okunurluk sağlıyor. Sayısal değişkenler arasına alt çizgi konulabiliyor.

6.0 Switch kullanımında artık String türe izin veriyor. Java’nın sayılı eksikliklerinden görülen bu durum giderilmiş. Artık String değişkenleri switch komutu ile kıyaslayabiliyoruz. 6.0

Generic tiplerde kullanım kolaylığı. Generic tipler kullanırken yazdığımız <> işaretleri arasındaki objeler, yaratılan instance’larda da yine aynı şekilde yazılıyordu. Bu da sadece tanımda bile bir sürü karmaşaya yol açıyordu. Java 7 ile beraber new ile yarattığımız instance’larda <> açıp kapatmak yeterli olacak.

Varargs’ ta (parametre sayısı belli olmayan metot) iyileştirmeler var. Varargs kullanırken parametre sayısı belli olmayan değişkenleri metot içerisinde dizi gibi kullanabiliyorduk. Yalnız çalışma anında nesnelerin birbirlerine cast edilememesi (ClassCastException) gibi hatalarla karşılaşıyorduk. Artık derleyici gelişmiş uyarı ve hata mesajları veriyor. 

MULTI-CATCH ile hata yakalama daha kolay hale geldi. Bilindiği üzere Try-Catch ile Hata yakalamada birden fazla hatayı Catch de karşılamak için hep yeniden blok açılırdı. Artık « I » Operatörü ile birden fazla hata nesnesini tek seferde yazmak mümkün hale geldi. java7 öncesi; try {…………} catch (NumberFormatException nfe) {…………} catch (XException xe) {…………} . java7'de ise; catch (NumberFormatException nfe | XException xe | …) {…………}

DİĞER ÖZELLİKLER

Graphics2D Graphics Graphics2D Graphics2D Graphics java.lang.Object java.awt.Graphics java.awt.Graphics2D Graphics java.lang.Object java.awt.Graphics Graphics Graphics2D Graphics2D iki boyutlu bir grafik, metin ve görüntüleme yetenekleri ile ilgili 2D Java API parçasıdır. Eski Graphics sınıfının aksine, Graphics2D koordinat dönüşümlerini destekler. Ayrıca geometri, renk ve metin mizanpajı üzerinde daha iyi kontrol sağlar.

Garbage-First Collector vs Garbage Collector yapısı Garbage-First Collector yapısı Garbage-First Collector JDK7 nin 4.versiyonunda dahil olmuştur. GC1 in çoklu işlemcili bilgisayarlar (sunucu bilgisayar) için tasarlandığını söylemek gerekir. GC ye göre yetenekleri ve performansı arttırılmış yapıya sahiptir. Serial GC aynı anda tek thread(iplik) çalışabilir, aynı anda birden fazla thread çalışan GC sistemine ise Parallel GC adı verilmektedir . GC1 i GC den ayıran en belirleyici özellik Seri ve Paralel çalışma biçiminin daha başarılı olmasıdır.

JDK 7u4 ile birlikte G1 (Garbage First) olarak adlandırılan yeni bir çöp toplayıcısı geldi. Uzun dönemde, G1’in Java platformunun tek çöp toplayıcısı olması hedeflenmektedir. JSM’nin en zayıf halkası çöp toplayıcıdır. Çöp toplama sırasında tüm uygulamanın iş parçalarının durdurulduğu, "tüm dünyanın durduğu" (stop-the-world) bir evre vardır. Bu evre boyunca uygulama hiçbir iş yapmaz. Ne yazık ki çöp toplayıcı algoritmaları Heap boyutuna göre ölçeklenebilir değildir. Heap boyutu arttıkça bu süre de hızla artmaktadır. Örneğin 64GB heap boyutu olan bir JSM’de bu süre bir dakikayı aşabilir. G1 bu süre için bir sınır tanımlamamıza olanak sağlıyor.

Modularity (Modulerlik) Paket yapısında yenilik sağlanmış. Bu yapı jar yapısını daha düzgün hale getirdi. Versiyon desteğini, aktif erişimi(reflective), dağıtım formatını(Java Module) bize sağlayacak. Java Kernel (Java Çekirdeği) Dinamik yükleme modülü getirildi. Bu sayede Sistemin başlama süresi kısaltıldı.

Date/Time API Otamatik Get() ve Set() methodları oluşturulacak. Not: Joda Time Library harici olarak indirilip sisteme ekleniyor. Problemler çözüldü. İyileştirmeler yapıldı. Joda Time Library e geçildi. Joda Time Library: dayOfYear, hourOfDay gibi basit sahalar ile önemli tarihsel bilgileri hızlıca elde etmemizi sağlarken sunduğu hizmet sınıfları ile karmaşık tarih işlemlerini kolayca yapabilmemize olanak verir. Yaygın olarak kullanılan kitaplık şu an için (sürüm 2.0) 8 takvim sistemini desteklemektedir.

Swing Desktop uygulamaları için kullanılan swing kütüphanesi yenilenmiş. Swing kütüphanesi kullanarak daha görsel ve göze hoş gelen uygulamalar yazılabilecek. Bean binding özelliği iyileştirilmiş.

Annatation Type (AT)=>@ Hatırlatma: Java  Uzantıları .xml ya da .properties olan bu dosyalarda tutulan veriler isim ve isme karşılık gelen değerler şeklinde tutulurlardı. Projelerimizde ayar yapacağımız zaman bu dosyaları gömerdik sisteme. Java 5.0 ile birlikte dile eklenen Annotation kavramı ile artık ayar dosyalarından kurtulduk. Not:  Annotation değişkenleri olarak sadece primitive tipleri, String veEnum tipleri ve tek boyutlu dizileri kullanabiliyoruz. Dizi elemanlarının tipleri de yine sadece ilkel tip, String ya da enum olabiliyor

Java 7 de ise, Annotation desteği genişliyor. Tür tanımlamada, ifadelerde ve diğer birçok elementde annotation daha çok kullanılacak. Derleyici ve statik analiz araçları için kodu çalışma zamanında doğrulayacak annotationlar yazmaya olanak vericek.

Sonuç olarak, JDK 7 ile sadece Java diline eklemeler yapılmamış Sonuç olarak, JDK 7 ile sadece Java diline eklemeler yapılmamış. Java virtual machine(JVM) de bir oldukça iyileştirilmeler yapılmış. Örneğin hello world yazıp çalıştırdığımızda println çıktısını daha çabuk görebileceğiz. Çünkü Javanın çekirdeğindeki sınıf yükleme(class loader) kısmı oldukça iyileştirilmiş. Java dilinin yetenekleri arttırılmış ve JVM; pyhthon, matlab vs. gibi dinamik dilleri destekler hale geldi. JDK 7 de gelmesi planlanan bir çok özellik JDK 8 e aktarıldı.

Java 8 ile gelen yenilikler Genel olarak, Lamda İfadeleri ve Sanal Genişletme Yöntemleri Java SE 8'in öne çıkan özelliği, Lamda ifadelerinin uygulanması ve Java programlama dili ve platformunu destekleyen yönleridir. Tarih ve Saat API'si Bu yeni API, geliştiricilerin tarih ve saati daha doğal, net ve anlaşılması kolay şekilde ele almasına izin vermektedir. Nashhorn JavaScript Motoru JavaScript motorunun hafif ve yüksek performanslı yeni bir uygulaması JDK'ya entegre edilmiştir ve mevcut API'ler yoluyla Java uygulamaları tarafından kullanılabilir. İyileştirilmiş Güvenlik Çağırana duyarlı yöntemlerinin mevcut elle yönetilen listesini, bu gibi yöntemleri doğru şekilde tanımlayan bir mekanizmayla değiştirir ve çağıranlarının hatasız şekilde keşfedilmesini sağlar.

WIN_XP ! Windows 8 ‘i , Windows7 ve Vista dan ayıran küçük fark: Metro Kullanıcı Arabirimi. Yani, Microsoft, Başlat ekranındaki eklentileri desteklemediğinden, Java Başlat ekranında çalışmayacaktır. Java'yı çalıştırmak için Masaüstü ekranına geçmeniz gerekir. 

 Java 8 ile birlikte gelen Lambda ifadeleri ise fonksiyonel programlama yapmamıza olanak sağlıyor. Lambda ifadeleri sayesinde fonksiyonlar artık dilin birinci sınıf vatandaşı olarak işlem görecek. Fonksiyon tipinden bir değişken tanımlayabilecek ve fonksiyona parametre olarak başka bir fonksiyonu geçirebileceğiz.

Lambda Expressions Buradaki temel amaç, bir metoda bir obje yerine daha fazlasını vermek… Şimdiye kadar J8 öncesinde, callback classları yazarak bu tip işlemleri yönetiyorduk. Bu da gereksiz yere uzun kodlar yazma gerekliliğini beraberinde getiriyordu. J8 deki Labmda sayesinde, 5,6 satırda yazdığımız kodları tek bir satırda yazabileceğiz. Bir örnek üzerinden açıklayım,

  Üstelik Java 8 ile gelen yeniliklerin bir kısmından kodda basit değişiklikler yaparak yararlanmak mümkün olacaktır. Örneğin, Java 8'de Arrays yardımcı sınıfına, diziler üzerinde paralel sıralama yapmamızı sağlayan parallelSort() metodu eklenmiştir. Bu yeteneği kullanmak için tek yapmamız gereken,Arrays.sort() çağrısını Arrays.parallelSort() çağrısı ile değiştirmektir. Paralel sıralamada Java 7 ile gelen Böl/Katıl çatısı kullanılmıştır. Java 8 ile birlikte sadece diziler üzerinde değil Collection API içinde yer alan kaplar üzerinde de paralel işler çalıştırmak mümkün olabilmektedir.

Java 7 ile birlikte çok uzun bir süre sonra Java Sanal Makinası (JSM) yeni bir bytecode ile tanıştı: invokedynamic. Her ne kadar yeni bir komutla tanışmış olsak da henüz Java 7'de derlendiğinde invokedynamic kodu ürettirecek herhangi bir Java ifadesi bulunmuyor. Java 8'de ise fonksiyonel programlama ve arayüz metot eklentileri (=Method Extensions) içeren kodlar derlendiklerinde invokedynamic kodu içerebilecek

invokedynamic ve JSM’nin yapısındaki yenilikler Java programlama dili dışındaki dillerin, JSM üzerinde yüksek başarımla çalışmasına olanak sağlamaktadır. Java platformu çok dilli bir platforma doğru evriliyor. Bunun ilk uygulaması Java 8 ile birlikte gelen yeni Javascript motoru Nashorn olacaktır. Platformdaki bu yenilikler sayesinde Javascript kodlarının çok hızlı çalıştığına tanık olacaksınız. Java 7 bunun altyapısını oluşturdu. Java 8 ise ilk uygulamasını bize sunuyor.

Java 8’de çöp toplama ile ilgili dikkate değer tek gelişme Kalıcı Alan (=Perm(anent)Gen(eration)) olarak adlandırılan alanın genel Heap alanına eklemlenmesidir. Özellikle web uygulamalarında sık yapılan güncellemelerden kaynaklanan bu alanının dolmasına nedeni ile aldığımız taşma hatası ile şimdi daha seyrek karşılaşmak mümkün oldu.

Sonuç olarak, Java platformu aynı. Net platformu gibi modüler değildir Sonuç olarak, Java platformu aynı .Net platformu gibi modüler değildir. Bir projede kullandığımız iki ayrı kütüphanenin, ortak bir kütüphanenin farklı sürümlerini kullanması durumunda, yürütme zamanında sınıf yükleyici ilk önce hangi sınıfı yüklemiş ise o sınıf kullanılacaktır. Sınıf yükleyici aynı sınıfın farklı sürümlerini yüklemesi ve yönetmesi mümkün değildir.Bu problemi farklı yöntemlerle çözmek mümkün olsa da projeye geliştirme açısından zorluk katıyor.Uzun süredir beklediğimiz modülerlik çözümü, Jigsaw projesi ile platforma kazandırılması amaçlansa da Java 8’e yetiştirilemeyeceği anlaşıldığı için çıkartılmıştı. Java 9’da bu problemin çözülmesini umuyoruz.

Beni dinlediğiniz için Teşekkür Ederim. Melih Hilmi ULUDAĞ Kaynaklar: http://www.java.com/tr/download/faq/release_changes.xml http://docs.oracle.com/javase/7/docs/ http://www.eclipse.org/jdt/ui/r3_8/Java7news/whats-new-java-7.html https://www.linkedin.com/today/post/article/20140409042429-11833655-java-8-ile-gelen-yenilikler http://emreesirik.com/java-java-7-cikiyor-java-7-yeni-ozellikler.html