Nói chung, có một số thay đổi khá rộng để làm cho mọi thứ dễ dàng hơn với lập trình viên. Người quản lý của bạn có thể không quan tâm quá nhiều đến những điều như vậy, nhưng khiến các lập trình viên mất ít thời gian hơn để suy nghĩ về mã soạn sẵn, và do đó có nhiều thời gian hơn để suy nghĩ về mục tiêu thực tế của những gì họ đang thực hiện, nên tăng hiệu quả, giảm lỗi, v.v., đó có thể là một cuộc tranh luận rất mạnh mẽ Oracle có một danh sách các thay đổi khá rộng rãi , nhưng nó khá dài, vì vậy tôi sẽ tóm tắt càng nhiều càng tốt.
Các tính năng ngôn ngữ bao gồm:
- Ít nồi hơi trên Generics. Mã
Map<String, String> myMap = new HashMap<String, String>();
có thể được giảm xuống Map<String, String> myMap = new HashMap<>()
. Trình biên dịch có thể suy ra các loại Chung cần thiết ở phía bên phải từ bên trái, do đó mã của bạn sẽ ngắn hơn một chút và nhanh hơn để đọc.
- Các chuỗi làm việc trong các câu lệnh chuyển đổi bây giờ , sử dụng ngữ nghĩa của
.equals()
phương thức thay vì ==
.
- Quản lý tài nguyên tự động bằng cách sử dụng thử với tài nguyên. Điều này làm cho mã sạch hơn, nhưng cũng có một lợi thế so với mã thử / cuối cùng dựa trên kiểu cũ. Nếu một ngoại lệ được đưa ra trong câu lệnh thử và sau đó một trường hợp khác được ném trong khi đóng, mã sử dụng câu lệnh thử / cuối cùng truyền thống sẽ hoàn toàn mất đi ngoại lệ ban đầu và chỉ bỏ qua câu lệnh được ném trong khối cuối cùng. Trong câu lệnh try-with-resource, bộ thực thi sẽ loại bỏ ngoại lệ mà các lệnh gọi close () đã ném và đánh bóng ngoại lệ ban đầu lên ngăn xếp, theo giả định rằng ngoại lệ ban đầu này là ngoại lệ gây ra tất cả các vấn đề trong lần đầu tiên địa điểm. Ngoài ra, thay vì từ bỏ ngoại lệ khác cho trình thu gom rác, việc triệt tiêu này cho phép các ngoại lệ ném gần được lấy ra bằng cách sử dụng
Throwable.getSuppressed
.
- Chữ số có thể được làm cho dễ đọc hơn. Tất cả các chữ số đều cho phép gạch dưới , vì vậy những thứ như
int n = 1000000000
có thể được làm thành dễ đọc hơn nhiều int n = 1_000_000_000
, dễ dàng phân tích thành một tỷ và khó nhập sai hơn mà không nhận thấy. Ngoài ra, chữ nhị phân được cho phép ở dạng 0b10110101
, làm cho mã hoạt động với các trường bit dễ đọc hơn một chút.
- Xử lý nhiều loại ngoại lệ trong cùng một câu lệnh bắt có thể được thực hiện, giảm mã trùng lặp và có khả năng giúp tái cấu trúc dễ dàng hơn sau này.
Mỗi một trong những thay đổi này là điều mà người quản lý của bạn có thể không quan tâm trực tiếp, nhưng chúng giúp việc viết mã chính xác dễ dàng hơn một chút mà không cần nhiều nỗ lực và suy nghĩ, giải phóng tâm trí của bạn để tập trung hơn một chút vào logic thực tế mà bạn đang cố gắng để thực hiện và họ cũng làm cho việc đọc mã sau này dễ dàng hơn một chút, giúp việc gỡ lỗi nhanh hơn một chút.
Về phía API, một số cập nhật API cũng đã xảy ra:
- Bảo mật , một số phương thức mã hóa đã được thêm / không dùng nữa, vì tiền điện tử di chuyển về phía trước.
- Tệp IO đã được thay đổi, ( tuy nhiên, đây có thể là một liên kết tốt hơn ) thêm một số trừu tượng tốt hơn ở một số nơi. Tôi đã không đích thân lao vào công cụ IO mới, nhưng có vẻ như một cuộc đại tu rất hữu ích, giúp làm việc với hệ thống tập tin dễ dàng hơn mà không quá đau đớn.
- Hỗ trợ Unicode lên đến Unicode 6.0, cùng với một số cải tiến quốc tế hóa khác.
- Java2D , mà bạn đã đề cập trong câu hỏi của mình, đã được cải thiện. Hỗ trợ phông chữ Linux tốt hơn, kết xuất X11 tốt hơn trên các máy hiện đại và xử lý các tập lệnh Tây Tạng.