Java 7'deki hangi yeni özellikler uygulanacak? Ve şimdi ne yapıyorlar?
Yanıtlar:
Bu, OpenJDK 7 özellikleri sayfasından Java 7'nin yeni özelliklerinin özetidir :
vm JSR 292: Dinamik olarak yazılmış diller için destek (InvokeDynamic)
Katı sınıf dosyası denetimi
lang JSR 334: Küçük dil geliştirmeleri (Project Coin)
core Upgrade sınıfı yükleyici mimarisi
URLClassLoader'ı kapatma yöntemi
Eşzamanlılık ve koleksiyon güncellemeleri (jsr166y)
i18n Unicode 6.0
Yerel iyileştirme
Ayrı kullanıcı yerel ayarı ve kullanıcı arayüzü yerel ayarı
ionet JSR 203: Java platformu (NIO.2) için daha yeni G / Ç API'leri
Zip / jar arşivleri için NIO.2 dosya sistemi sağlayıcısı
SCTP (Akış Kontrol İletim Protokolü)
SDP (Soketler Doğrudan Protokolü)
Windows Vista IPv6 yığınını kullanın
TLS 1.2
sn Eliptik eğri şifreleme (ECC)
jdbc JDBC 4.1
Java 2D için istemci XRender ardışık düzeni
6u10 grafik özellikleri için yeni platform API'leri oluşturun
Swing için Nimbus görünümü ve hissi
Swing JLayer bileşeni
Gervill ses sentezleyici [YENİ]
web XML yığınını güncelleyin
mgmt Geliştirilmiş MBean'ler [GÜNCELLENMİŞ]
bu:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
şu hale gelir:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
Kapatmak için birden fazla kaynak bildirebilirsiniz:
try (
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest))
{
// code
}
int one_million = 1_000_000;
String s = ...
switch(s) {
case "quux":
processQuux(s);
// fall-through
case "foo":
case "bar":
processFooOrBar(s);
break;
case "baz":
processBaz(s);
// fall-through
default:
processDefault(s);
break;
}
int binary = 0b1001_1001;
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
şu hale gelir:
Map<String, List<String>> anagrams = new HashMap<>();
bu:
} catch (FirstException ex) {
logger.error(ex);
throw ex;
} catch (SecondException ex) {
logger.error(ex);
throw ex;
}
şu hale gelir:
} catch (FirstException | SecondException ex) {
logger.error(ex);
throw ex;
}
bu:
@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
şu hale gelir:
@SafeVarargs
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
Objectsboş referansları kontrol etmek zorunda kalmamak için statik yöntemler içeren yeni bir sınıf vardır . Örnek: if (obj != null && obj.equals(anotherObj))olurif (Objects.equals(obj, anotherObj))
Bileşenleri JLayer Sınıfı ile Süsleyin:
JLayer sınıfı, Swing bileşenleri için esnek ve güçlü bir dekoratördür. Java SE 7'deki JLayer sınıfı, özünde java.net'teki JxLayer proje projesine benzer. JLayer sınıfı başlangıçta JXLayer projesine dayanıyordu, ancak API'si ayrı olarak gelişti.
Switch Deyimindeki dizeler :
JDK 7'de, bir switch ifadesinin ifadesinde bir String nesnesi kullanabiliriz. Java derleyici, String nesnelerini kullanan switch ifadelerinden zincirleme if-then-else ifadelerinden daha verimli bayt kodu üretir.
Genel Örnek için Tür Çıkarımı:
Derleyici bağlamdan tür bağımsız değişkenlerini çıkarabildiği sürece, genel bir sınıfın yapıcısını boş bir tür parametreleri kümesiyle (<>) çağırmak için gereken tür bağımsız değişkenlerini değiştirebiliriz. Bu çift açılı ayraç gayri resmi olarak elmas olarak adlandırılır. Java SE 7, genel örnek oluşturma için sınırlı tür çıkarımını destekler; tür çıkarımını yalnızca yapıcının parametreli türü bağlamdan açıksa kullanabilirsiniz. Örneğin, aşağıdaki örnek derlemez:
List<String> l = new ArrayList<>();
l.add("A");
l.addAll(new ArrayList<>());
Buna karşılık, aşağıdaki örnek derlenir:
List<? extends String> list2 = new ArrayList<>();
l.addAll(list2);
Geliştirilmiş Tür Denetimi ile Birden Fazla İstisna Türünü Yakalama ve İstisnaları Yeniden Atma:
Java SE 7 ve sonraki sürümlerde, tek bir yakalama bloğu birden fazla istisna türünü işleyebilir. Bu özellik, kod kopyalamasını azaltabilir. Yakalama bloklarının her birinde yinelenen kod içeren aşağıdaki kodu göz önünde bulundurun:
catch (IOException e) {
logger.log(e);
throw e;
}
catch (SQLException e) {
logger.log(e);
throw e;
}
Java SE 7'den önceki sürümlerde, e değişkeninin farklı türleri olduğundan, yinelenen kodu ortadan kaldırmak için ortak bir yöntem oluşturmak zordur. Java SE 7 ve sonraki sürümlerde geçerli olan aşağıdaki örnek, yinelenen kodu ortadan kaldırır:
catch (IOException|SQLException e) {
logger.log(e);
throw e;
}
Catch cümlesi, bloğun işleyebileceği istisna türlerini belirtir ve her istisna türü bir dikey çubukla (|) ayrılır.
Java.nio.file paketi
java.nio.filePaket ve ilgili paket, java.nio.file.attribute, dosya I / O için ve dosya sistemi erişim için kapsamlı destek sağlar. Bir zip dosya sistemi sağlayıcısı da JDK 7'de mevcuttur.
Java Programlama Dili Geliştirmeleri @ Java7
Simple, Object-Oriented, Portable, Platform independent, Secured...
John Skeet'in söylediklerine ek olarak , Java 7 projesine genel bir bakışı burada bulabilirsiniz . Özelliklerin bir listesini ve açıklamasını içerir.
Not: JDK 7, 28 Temmuz 2011'de piyasaya sürüldü, bu nedenle şimdi resmi java SE sitesine gitmelisiniz .
Dil değişiklikleri :
-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator
Kitaplık değişiklikleri :
-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades
Platform değişiklikleri :
-support for dynamic languages
Aşağıda JAVA 7'nin yeni eklenen özelliklerini açıklayan bağlantı verilmiştir, açıklama her özellik için olası küçük örneklerle çok nettir:
Genel örnek oluşturma için Diamond (<>) operatörünü kullanma
Map<String, List<Trade>> trades = new TreeMap <> ();
Anahtar deyimlerinde dizeleri kullanma
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Sayısal değişmez değerlerde alt çizgi
int değer 12_15; uzun telefonNo = 01917_999_720L;
"|" Kullanarak birden çok istisna atmak için tek catch deyimi kullanma Şebeke
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Kaynakları kapatmaya () gerek yok çünkü Java 7, kaynakları dene deyimi sağlıyor
try(FileOutputStream fos = new FileOutputStream("movies.txt");
DataOutputStream dos = new DataOutputStream(fos)) {
dos.writeUTF("Java 7 Block Buster");
} catch(IOException e) {
// log the exception
}
"0b" veya "0B" önekine sahip ikili değişmezler
Aşağıdaki liste, Java SE 7'deki geliştirme sayfalarına bağlantılar içerir.
Swing
IO and New IO
Networking
Security
Concurrency Utilities
Rich Internet Applications (RIA)/Deployment
Requesting and Customizing Applet Decoration in Dragg able Applets
Embedding JNLP File in Applet Tag
Deploying without Codebase
Handling Applet Initialization Status with Event Handlers
Java 2D
Java XML – JAXP, JAXB, and JAX-WS
Internationalization
java.lang Package
Multithreaded Custom Class Loaders in Java SE 7
Java Programming Language
Binary Literals
Strings in switch Statements
The try-with-resources Statement
Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking
Underscores in Numeric Literals
Type Inference for Generic Instance Creation
Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods
Java Virtual Machine (JVM)
Java Virtual Machine Support for Non-Java Languages
Garbage-First Collector
Java HotSpot Virtual Machine Performance Enhancements
JDBC