ฟีเจอร์ใหม่ใน java 7 กำลังจะถูกนำมาใช้? และตอนนี้พวกเขากำลังทำอะไรอยู่?
ฟีเจอร์ใหม่ใน java 7 กำลังจะถูกนำมาใช้? และตอนนี้พวกเขากำลังทำอะไรอยู่?
คำตอบ:
นี่คือสรุปคุณสมบัติใหม่ของ Java 7 จากหน้าคุณสมบัติ OpenJDK 7 :
vm JSR 292: รองรับภาษาที่พิมพ์แบบไดนามิก (InvokeDynamic) การตรวจสอบไฟล์คลาสอย่างเข้มงวด lang JSR 334: การปรับปรุงภาษาขนาดเล็ก (Project Coin) สถาปัตยกรรมตัวโหลดคลาสอัพเกรดหลัก วิธีปิด URLClassLoader การอัปเดตพร้อมกันและคอลเลกชัน (jsr166y) i18n Unicode 6.0 การปรับปรุงสถานที่ แยกตำแหน่งที่ตั้งของผู้ใช้และโลแคลส่วนติดต่อผู้ใช้ ionet JSR 203: I / O API ใหม่เพิ่มเติมสำหรับแพลตฟอร์ม Java (NIO.2) ผู้ให้บริการระบบไฟล์ NIO.2 สำหรับไฟล์เก็บถาวร zip / jar SCTP (โปรโตคอลการควบคุมการส่งกระแสข้อมูล) SDP (Sockets Direct Protocol) ใช้สแต็ก Windows Vista IPv6 TLS 1.2 วินาที Elliptic-curve cryptography (ECC) jdbc JDBC 4.1 ไปป์ไลน์ไคลเอนต์ XRender สำหรับ Java 2D สร้างแพลตฟอร์ม API ใหม่สำหรับคุณสมบัติกราฟิก 6u10 รูปลักษณ์และความรู้สึกของ Nimbus สำหรับ Swing ส่วนประกอบ Swing JLayer เครื่องสังเคราะห์เสียง Gervill [ใหม่] เว็บอัปเดตกอง XML mgmt Enhanced MBeans [อัพเดท]
นี้:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
กลายเป็น:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
คุณสามารถประกาศปิดทรัพยากรได้มากกว่าหนึ่งรายการ:
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>>();
กลายเป็น:
Map<String, List<String>> anagrams = new HashMap<>();
นี้:
} catch (FirstException ex) {
logger.error(ex);
throw ex;
} catch (SecondException ex) {
logger.error(ex);
throw ex;
}
กลายเป็น:
} catch (FirstException | SecondException ex) {
logger.error(ex);
throw ex;
}
นี้:
@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
กลายเป็น:
@SafeVarargs
public static void printAll(List<String>... lists){
for(List<String> list : lists){
System.out.println(list);
}
}
Objects
คลาสใหม่ที่มีวิธีการคงที่เพื่อหลีกเลี่ยงการตรวจสอบการอ้างอิงว่าง ตัวอย่าง: if (obj != null && obj.equals(anotherObj))
กลายเป็นif (Objects.equals(obj, anotherObj))
ตกแต่งส่วนประกอบด้วยคลาส JLayer:
คลาส JLayer เป็นมัณฑนากรที่ยืดหยุ่นและทรงพลังสำหรับส่วนประกอบ Swing คลาส JLayer ใน Java SE 7 นั้นมีความคล้ายคลึงกับโครงการโปรเจ็กต์ JxLayer ที่ java.net คลาส JLayer นั้นเริ่มต้นจากโครงการ JXLayer แต่ API ของมันพัฒนาแยกกัน
สตริงในคำสั่งสวิตช์ :
ใน JDK 7 เราสามารถใช้อ็อบเจกต์ String ในนิพจน์ของคำสั่ง switch คอมไพเลอร์ Java สร้าง bytecode ที่มีประสิทธิภาพมากขึ้นโดยทั่วไปจากคำสั่ง switch ที่ใช้อ็อบเจ็กต์ String มากกว่าจากคำสั่ง chained if-then-else
ประเภทการอนุมานสำหรับอินสแตนซ์ทั่วไป:
เราสามารถแทนที่อาร์กิวเมนต์ประเภทที่ต้องการเพื่อเรียกใช้ตัวสร้างของคลาสทั่วไปด้วยชุดพารามิเตอร์ชนิดว่าง (<>) ตราบใดที่คอมไพลเลอร์สามารถอนุมานอาร์กิวเมนต์ประเภทจากบริบทได้ คู่ของวงเล็บเหลี่ยมนี้เรียกอย่างไม่เป็นทางการว่าเพชร Java SE 7 รองรับการอนุมานแบบ จำกัด สำหรับการสร้างอินสแตนซ์ทั่วไป คุณสามารถใช้การอนุมานประเภทได้หากประเภทที่กำหนดพารามิเตอร์ของตัวสร้างชัดเจนจากบริบท ตัวอย่างเช่นตัวอย่างต่อไปนี้ไม่รวบรวม:
List<String> l = new ArrayList<>();
l.add("A");
l.addAll(new ArrayList<>());
ในการเปรียบเทียบตัวอย่างต่อไปนี้คอมไพล์:
List<? extends String> list2 = new ArrayList<>();
l.addAll(list2);
การจับข้อยกเว้นหลายประเภทและการเปลี่ยนข้อยกเว้นด้วยการตรวจสอบประเภทที่ปรับปรุงใหม่:
ใน Java SE 7 และใหม่กว่าบล็อกจับเดียวสามารถจัดการข้อยกเว้นได้มากกว่าหนึ่งประเภท คุณสมบัตินี้สามารถลดความซ้ำซ้อนของรหัส พิจารณารหัสต่อไปนี้ซึ่งมีรหัสซ้ำกันในแต่ละบล็อกจับ:
catch (IOException e) {
logger.log(e);
throw e;
}
catch (SQLException e) {
logger.log(e);
throw e;
}
ในรีลีสก่อน Java SE 7 เป็นการยากที่จะสร้างเมธอดทั่วไปในการกำจัดโค้ดที่ซ้ำกันเนื่องจากตัวแปร e มีประเภทที่แตกต่างกัน ตัวอย่างต่อไปนี้ซึ่งใช้ได้ใน Java SE 7 และใหม่กว่ากำจัดรหัสที่ซ้ำกัน:
catch (IOException|SQLException e) {
logger.log(e);
throw e;
}
ประโยคจับจะระบุประเภทของข้อยกเว้นที่บล็อกสามารถจัดการได้และข้อยกเว้นแต่ละประเภทจะถูกคั่นด้วยแถบแนวตั้ง (|)
แพ็กเกจ java.nio.file
java.nio.file
แพคเกจและแพคเกจที่เกี่ยวข้องกัน java.nio.file.attribute ให้การสนับสนุนที่ครอบคลุมสำหรับไฟล์ I / O และการเข้าถึงระบบไฟล์ ผู้ให้บริการระบบไฟล์ zip ยังมีอยู่ใน JDK 7
การปรับปรุงภาษาการเขียนโปรแกรม Java @ Java7
ข้อมูลอ้างอิงอย่างเป็นทางการการอ้างอิง
อย่างเป็นทางการพร้อมการอ้างอิง java8
wiki
Simple, Object-Oriented, Portable, Platform independent, Secured...
การเปลี่ยนแปลงภาษา :
-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator
การเปลี่ยนแปลงห้องสมุด :
-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades
การเปลี่ยนแปลงแพลตฟอร์ม :
-support for dynamic languages
ด้านล่างนี้เป็นลิงค์ที่อธิบายคุณสมบัติที่เพิ่มเข้ามาใหม่ของ JAVA 7 คำอธิบายนั้นชัดเจนพร้อมตัวอย่างเล็ก ๆ ที่เป็นไปได้สำหรับแต่ละคุณสมบัติ:
การใช้ตัวดำเนินการ Diamond (<>) สำหรับการสร้างอินสแตนซ์ทั่วไป
Map<String, List<Trade>> trades = new TreeMap <> ();
การใช้สตริงในคำสั่งสวิตช์
String status= “something”;
switch(statue){
case1:
case2:
default:
}
ขีดเส้นใต้ตัวอักษรตัวเลข
int val 12_15; โทรศัพท์ยาว No = 01917_999_720L;
การใช้คำสั่ง catch เพียงครั้งเดียวสำหรับการทิ้งข้อยกเว้นหลายรายการโดยใช้“ |” ตัวดำเนินการ
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
ไม่จำเป็นต้องปิด () รีซอร์สเนื่องจาก Java 7 มีคำสั่ง try-with-resources
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” หรือ“ 0B”
ฉันคิดว่า ForkJoinPoolและการปรับปรุงที่เกี่ยวข้องกับ Executor Framework เป็นส่วนเสริมที่สำคัญใน Java 7
รายการต่อไปนี้มีลิงก์ไปยังเพจการปรับปรุงใน 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