Fitur baru apa di java 7 yang akan diimplementasikan? Dan apa yang mereka lakukan sekarang?
Jawaban:
Ini adalah ringkasan fitur baru Java 7 dari halaman fitur OpenJDK 7 :
vm JSR 292: Dukungan untuk bahasa yang diketik secara dinamis (InvokeDynamic) Pemeriksaan file kelas yang ketat lang JSR 334: Peningkatan bahasa kecil (Project Coin) core Upgrade arsitektur class-loader Metode untuk menutup URLClassLoader Pembaruan konkurensi dan koleksi (jsr166y) i18n Unicode 6.0 Peningkatan lokal Pisahkan lokal pengguna dan lokal antarmuka pengguna ionet JSR 203: Lebih banyak I / O API baru untuk platform Java (NIO.2) Penyedia sistem file NIO.2 untuk arsip zip / jar SCTP (Protokol Transmisi Kontrol Aliran) SDP (Sockets Direct Protocol) Gunakan tumpukan Windows Vista IPv6 TLS 1.2 sec Kriptografi kurva eliptik (ECC) jdbc JDBC 4.1.0 pipeline klien XRender untuk Java 2D Buat API platform baru untuk fitur grafis 6u10 Tampilan dan nuansa Nimbus untuk Swing Mengayunkan komponen JLayer Synthesizer suara Gervill [BARU] web Perbarui tumpukan XML mgmt Enhanced MBeans [DIPERBARUI]
ini:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
menjadi:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
Anda dapat mendeklarasikan lebih dari satu sumber daya untuk ditutup:
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>>();
menjadi:
Map<String, List<String>> anagrams = new HashMap<>();
ini:
} catch (FirstException ex) {
logger.error(ex);
throw ex;
} catch (SecondException ex) {
logger.error(ex);
throw ex;
}
menjadi:
} catch (FirstException | SecondException ex) {
logger.error(ex);
throw ex;
}
ini:
@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
menjadi:
@SafeVarargs
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
Objects
kelas baru , dengan metode statis untuk menghindari keharusan memeriksa referensi null. Contoh: if (obj != null && obj.equals(anotherObj))
menjadiif (Objects.equals(obj, anotherObj))
Hiasi Komponen dengan JLayer Class:
Kelas JLayer adalah dekorator yang fleksibel dan kuat untuk komponen Ayunan. Kelas JLayer di Java SE 7 memiliki semangat yang mirip dengan proyek proyek JxLayer di java.net. Kelas JLayer awalnya didasarkan pada proyek JXLayer, tetapi API-nya berkembang secara terpisah.
Pernyataan string dalam switch :
Di JDK 7, kita bisa menggunakan objek String dalam ekspresi pernyataan switch. Kompiler Java menghasilkan bytecode yang umumnya lebih efisien dari pernyataan switch yang menggunakan objek String daripada dari pernyataan if-then-else yang dirantai.
Ketik Inferensi untuk Instans Generik:
Kita bisa mengganti argumen tipe yang diperlukan untuk memanggil konstruktor kelas generik dengan seperangkat parameter tipe kosong (<>) selama kompilator bisa menyimpulkan argumen tipe dari konteks. Sepasang tanda kurung sudut ini secara informal disebut berlian. Java SE 7 mendukung inferensi tipe terbatas untuk pembuatan instance generik; Anda hanya dapat menggunakan inferensi tipe jika tipe parameter dari konstruktor jelas dari konteksnya. Misalnya, contoh berikut tidak dapat dikompilasi:
List<String> l = new ArrayList<>();
l.add("A");
l.addAll(new ArrayList<>());
Sebagai perbandingan, contoh berikut mengkompilasi:
List<? extends String> list2 = new ArrayList<>();
l.addAll(list2);
Penangkapan Beberapa Jenis Pengecualian dan Pelacakan Ulang Pengecualian dengan Pemeriksaan Jenis yang Ditingkatkan:
Di Java SE 7 dan yang lebih baru, satu blok tangkapan dapat menangani lebih dari satu jenis pengecualian. Fitur ini dapat mengurangi duplikasi kode. Pertimbangkan kode berikut, yang berisi kode duplikat di setiap blok tangkapan:
catch (IOException e) {
logger.log(e);
throw e;
}
catch (SQLException e) {
logger.log(e);
throw e;
}
Dalam rilis sebelum Java SE 7, sulit untuk membuat metode umum untuk menghilangkan kode duplikat karena variabel e memiliki tipe yang berbeda. Contoh berikut, yang berlaku di Java SE 7 dan yang lebih baru, menghilangkan kode duplikat:
catch (IOException|SQLException e) {
logger.log(e);
throw e;
}
Klausa catch menentukan jenis pengecualian yang dapat ditangani blok, dan setiap jenis pengecualian dipisahkan dengan bilah vertikal (|).
Paket java.nio.file
The java.nio.file
paket dan paket terkait, java.nio.file.attribute, memberikan dukungan yang komprehensif untuk file I / O dan untuk mengakses sistem file. Penyedia sistem file zip juga tersedia di JDK 7.
Peningkatan Bahasa Pemrograman Java @ Java7
Simple, Object-Oriented, Portable, Platform independent, Secured...
Selain apa yang dikatakan John Skeet, berikut ini gambaran umum proyek Java 7 . Ini termasuk daftar dan deskripsi fitur.
Catatan: JDK 7 dirilis pada 28 Juli 2011, jadi Anda sekarang harus pergi ke situs resmi java SE .
Perubahan bahasa :
-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator
Perubahan perpustakaan :
-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades
Perubahan platform :
-support for dynamic languages
Di bawah ini adalah tautan yang menjelaskan fitur-fitur yang baru ditambahkan pada JAVA 7, penjelasannya sangat jelas dengan kemungkinan contoh kecil untuk setiap fitur:
Menggunakan operator Diamond (<>) untuk pembuatan instance generik
Map<String, List<Trade>> trades = new TreeMap <> ();
Menggunakan string dalam pernyataan sakelar
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Garis bawah dalam literal numerik
int val 12_15; telepon panjangNo = 01917_999_720L;
Menggunakan pernyataan catch tunggal untuk melempar beberapa pengecualian dengan menggunakan “|” operator
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Tidak perlu menutup () sumber daya karena Java 7 menyediakan pernyataan coba-dengan-sumber daya
try(FileOutputStream fos = new FileOutputStream("movies.txt");
DataOutputStream dos = new DataOutputStream(fos)) {
dos.writeUTF("Java 7 Block Buster");
} catch(IOException e) {
// log the exception
}
literal biner dengan awalan "0b" atau "0B"
Daftar berikut berisi link ke halaman penyempurnaan di Java SE 7.
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