logo

תכונות Java 8

אורקל הוציאה גרסה חדשה של Java כ-Java 8 ב-18 במרץ 2014. זו הייתה מהדורה מהפכנית של פלטפורמת Java לפיתוח תוכנה. הוא כולל שדרוגים שונים לתכנות Java, JVM, כלים וספריות.

שיפורים בשפת התכנות Java 8

Java 8 מספק את התכונות הבאות עבור תכנות Java:

  • ביטויי למדה,
  • הפניות לשיטות,
  • ממשקים פונקציונליים,
  • Stream API,
  • שיטות ברירת מחדל,
  • Base64 קידוד פענוח,
  • שיטות סטטיות בממשק,
  • שיעור אופציונלי,
  • כיתת אספנים,
  • שיטת ForEach(),
  • מנוע JavaScript של קרנף,
  • מיון מערך מקביל,
  • הקלד וחזרה על הערות,
  • שיפורי IO,
  • שיפורים במקביל,
  • שיפורי JDBC וכו'.

ביטויי למדה

ביטוי למבדה עוזר לנו לכתוב את הקוד שלנו בסגנון פונקציונלי. הוא מספק דרך ברורה ותמציתית ליישם ממשק SAM (Single Abstract Method) באמצעות ביטוי. זה מאוד שימושי בספריית אוסף שבה הוא עוזר לבצע איטרציה, סינון וחילוץ נתונים.

למידע נוסף ודוגמאות: לחץ כאן


הפניות לשיטות

ההפניה לשיטת Java 8 משמשת להפניה לשיטת ממשק פונקציונלי. זוהי צורה קומפקטית וקלה של ביטוי למבדה. בכל פעם שאתה משתמש בביטוי למבדה רק להפניה לשיטה, אתה יכול להחליף את ביטוי למבדה שלך בהפניה לשיטה.

למידע נוסף ודוגמאות: לחץ כאן


ממשק פונקציונלי

ממשק המכיל רק שיטה מופשטת אחת ידוע כממשק פונקציונלי. זה יכול להיות כל מספר של שיטות ברירת מחדל וסטטיות. זה יכול גם להכריז על שיטות של מחלקת אובייקט.

ממשקים פונקציונליים ידועים גם כ-Single Abstract Method Interfaces (ממשקי SAM).

למידע נוסף ודוגמאות: לחץ כאן


אופציונאלי

Java הציגה מחלקה חדשה אופציונלית ב-Java 8. זהו מחלקה סופית ציבורית המשמשת להתמודדות עם NullPointerException ביישום Java. אנחנו חייבים לייבא java.util חבילה לשימוש בכיתה זו. הוא מספק שיטות לבדיקת נוכחות ערך עבור משתנה מסוים.

למידע נוסף ודוגמאות: לחץ כאן


לכל אחד

Java מספקת שיטה חדשה forEach() לחזרת האלמנטים. הוא מוגדר בממשקי Iterable ו-Stream.

זוהי שיטת ברירת מחדל המוגדרת בממשק Iterable. מחלקות אוסף המרחיבות את ממשק Iterable יכולות להשתמש בשיטה forEach() כדי לבצע איטרציה של אלמנטים.

שיטה זו לוקחת פרמטר בודד שהוא ממשק פונקציונלי. אז אתה יכול להעביר את ביטוי למבדה כטיעון.

למידע נוסף ודוגמאות: לחץ כאן


API של תאריך/שעה

Java הציגה ממשק API חדש לתאריך ושעה מאז Java 8. חבילת java.time מכילה מחלקות תאריך ושעה של Java 8.

למידע נוסף ודוגמאות: לחץ כאן


שיטות ברירת מחדל

Java מספקת מתקן ליצירת שיטות ברירת מחדל בתוך הממשק. שיטות המוגדרות בתוך הממשק ומתויגות עם מילת מפתח ברירת מחדל ידועות כשיטות ברירת מחדל. שיטות אלו אינן שיטות מופשטות ויכולות להיות להן גוף השיטה.

למידע נוסף ודוגמאות: לחץ כאן


מנוע JavaScript של קרנף

Nashorn הוא מנוע JavaScript. הוא משמש לביצוע קוד JavaScript באופן דינמי ב-JVM (Java Virtual Machine). Java מספקת כלי שורת פקודה וכו המשמש לביצוע קוד JavaScript.

אתה יכול להפעיל קוד JavaScript בשתי דרכים:

  1. שימוש בכלי שורת הפקודה jjs, ו
  2. על ידי הטמעה בקוד המקור של Java.

למידע נוסף ודוגמאות: לחץ כאן


StringJoiner

Java הוסיפה מחלקה סופית חדשה StringJoiner בחבילת java.util. הוא משמש לבניית רצף של תווים המופרדים באמצעות תוחם. כעת, אתה יכול ליצור מחרוזת על ידי העברת מפרידים כמו פסיק(,), מקף(-) וכו'.

צומת רשימת java

למידע נוסף ודוגמאות: לחץ כאן


אספנים

אספנים הוא מחלקה אחרונה שמרחיבה את מחלקת האובייקט. הוא מספק פעולות צמצום, כגון צבירת אלמנטים לאוספים, סיכום אלמנטים לפי קריטריונים שונים וכו'.

למידע נוסף ודוגמאות: לחץ כאן


Stream API

חבילת Java 8 java.util.stream מורכבת ממחלקות, ממשקים ו-enum כדי לאפשר פעולות בסגנון פונקציונלי על האלמנטים. הוא מבצע חישוב עצל. אז, זה מבצע רק כאשר זה דורש.

למידע נוסף ודוגמאות: לחץ כאן


מסנן זרם

זרם Java מספק מסנן שיטה () לסינון רכיבי זרם על בסיס פרדיקט נתון. נניח שאתה רוצה לקבל רק אלמנטים אחידים מהרשימה שלך, אתה יכול לעשות זאת בקלות בעזרת שיטת filter().

שיטה זו לוקחת פרידיקט כארגומנט ומחזירה זרם של אלמנטים שנוצרו.

למידע נוסף ודוגמאות: לחץ כאן


קידוד ופענוח Java Base64

Java מספקת מחלקה Base64 להתמודדות עם הצפנה ופענוח. עליך לייבא את המחלקה java.util.Base64 לקובץ המקור שלך כדי להשתמש בשיטות שלה.

מחלקה זו מספקת שלושה מקודדים ומפענחים שונים להצפנת מידע בכל רמה.

למידע נוסף ודוגמאות: לחץ כאן


Java Parallel Array Sorting

Java מספקת תכונה נוספת חדשה במחלקה Arrays המשמשת למיון רכיבי מערך במקביל. שיטת parallelSort() נוספה למחלקה java.util.Arrays שמשתמשת במאגר המקביליות המשותף JSR 166 Fork/Join כדי לספק מיון של מערכים. זו שיטה עמוסה מדי.

למידע נוסף ודוגמאות: לחץ כאן


שיפורי אבטחה של Java 8

1) ספק Java Secure Socket Extension(JSSE) מאפשר את הפרוטוקולים Transport Layer Security (TLS) 1.1 ו-TLS 1.2 כברירת מחדל בצד הלקוח.

2) נוספה שיטה משופרת AccessController.doPrivileged המאפשרת לקוד לתבוע תת-קבוצת הרשאות שלו, מבלי למנוע את המעבר המלא של המחסנית כדי לבדוק הרשאות אחרות.

3) אלגוריתמים של תקן הצפנה מתקדם (AES) והצפנה מבוססת סיסמה (PBE), כגון PBEWithSHA256AndAES_128 ו-PBEWithSHA512AndAES_256 נוספו לספק SunJCE.

4) Java Secure Socket Extension (SunJSSE) הפעילה את הרחבת Server Name Indication (SNI) עבור יישומי לקוח כברירת מחדל ב-JDK 7 ו-JDK 8 תומך בסיומת SNI עבור יישומי שרת. סיומת SNI היא תכונה שמרחיבה את פרוטוקולי SSL/TLS כדי לציין לאיזה שם שרת הלקוח מנסה להתחבר במהלך לחיצת היד.

5) ה-SunJSSE משופר כדי לתמוך בהצפנה מאומתת עם אלגוריתמים של נתונים משויכים (AEAD). ספק Java Cryptography Extension (SunJCE) משופר כדי לתמוך ביישום צופן AES/GCM/NoPadding וכן בפרמטרים של אלגוריתם Galois/Counter Mode (GCM).

6) דגל פקודה חדש -importpassword מתווסף לכלי השירות keytool. הוא משמש כדי לקבל סיסמה ולשמור אותה בצורה מאובטחת כמפתח סודי. מחלקות כגון java.security.DomainLoadStoreParameter ו-java.security.PKCS12Attribute מתווספות כדי לתמוך בסוג מאגר המפתחות של DKS.

7) ב-JDK 8, האלגוריתמים ההצפנה שופרו עם הגרסה SHA-224 של משפחת SHA-2 של יישומי תקציר הודעות.

8) תמיכה משופרת עבור NSA Suite B Cryptography הכוללת:

  • רישום OID עבור אלגוריתמי הצפנה של NSA Suite B
  • תמיכה ביצירת צמד מפתחות DSA של 2048 סיביות ואלגוריתמי חתימה נוספים עבור מפתחות DSA של 2048 סיביות כגון SHA224withDSA ו-SHA256withDSA.
  • הסרת הגבלת גודל המפתח מ-1024 ל-2048 עבור אלגוריתם דיפי-הלמן (DH).

9) מחלקה SecureRandom מספקת יצירת מספרים אקראיים חזקים מבחינה קריפטוגרפית המשמשת עבור מפתחות פרטיים או ציבוריים, צפנים והודעות חתומות. השיטה getInstanceStrong() הוצגה ב-JDK 8, המחזירה מופע של SecureRandom החזק ביותר. יש להשתמש בו כאשר אתה צריך ליצור מפתח RSA פרטי וציבורי. SecureRandom כולל את השינויים הבאים:

  • שני יישומים חדשים הוצגו עבור פלטפורמות UNIX, המספקות התנהגות חסימה ולא חסימה.

10) כלולה מחלקה חדשה של PKIXRevocationChecker אשר בודקת את מצב הביטול של אישורים באמצעות אלגוריתם PKIX. הוא תומך בבדיקת המאמץ הטוב ביותר, בדיקת תעודות ישות קצה ואפשרויות ספציפיות למנגנון.

11) תקני הקריפטוגרפיה של מפתחות ציבוריים 11 (PKCS) הורחבו לכלול תמיכות של 64 סיביות עבור Windows.

12) שני סוגי rcache חדשים מתווספים ל-Kerberos 5. Type none פירושו ללא rcache כלל, ו-type dfl פירושו rcache מבוסס קובץ בסגנון DFL. כמו כן, מפתח המשנה המבוקש של המקבל נתמך כעת. הם מוגדרים באמצעות מאפייני המערכת sun.security.krb5.rcache ו-sun.security.krb5.acceptor.subkey.

13) ב-JDK 8, מעבר פרוטוקול Kerberos 5 והאצלה מוגבלת נתמכים באותו תחום.

14) Java 8 השביתה הצפנה חלשה כברירת מחדל. סוגי ההצפנה של Kerberos 5 הקשורים ל-DES אינם נתמכים כברירת מחדל. ניתן להפעיל סוגי הצפנה אלו על ידי הוספת allow_weak_crypto=true בקובץ krb5.conf.

15) אתה יכול להגדיר את שם השרת ל- null כדי לציין שרת לא קשור. זה אומר שלקוח יכול לבקש את השירות באמצעות כל שם שרת. לאחר יצירת הקשר, השרת יכול לאחזר את השם כמאפיין של משא ומתן עם שם המפתח SASL.BOUND_SERVER_NAME.

16) גשר Java Native Interface (JNI) ל-Java Generic Security Service (JGSS) נתמך כעת ב-Mac OS X. ניתן להגדיר את מאפיין המערכת sun.security.jgss.native ל-true כדי להפעיל אותו.

17) מאפיין מערכת חדש, jdk.tls.ephemeralDHKeySize מוגדר להתאמה אישית של גדלי מפתחות DH ארעיים. גודל מפתח ה-DH המינימלי המקובל הוא 1024 סיביות, למעט חבילות צופן הניתנות לייצוא או מצב מדור קודם (jdk.tls.ephemeralDHKeySize=legacy).

18) ספק Java Secure Socket Extension (JSSE) מכבד את העדפת חבילת הצופן של הלקוח כברירת מחדל. עם זאת, ניתן לשנות את ההתנהגות כדי לכבד את העדפת חבילת הצופן של השרת על ידי קריאה ל-SSLParameters.setUseCipherSuitesOrder(true) דרך השרת.


שיפורים בכלי Java 8

1) מוצגת פקודת jjs, אשר מפעילה את מנוע Nashorn או במצב מעטפת אינטראקטיבי, או כדי לפרש קבצי סקריפט.

2) הפקודה java מסוגלת להפעיל יישומי JavaFX, בתנאי שהיישום JavaFX ארוז בצורה נכונה.

3) דף האיש של פקודת java (גם nroff וגם HTML) עובד מחדש לחלוטין. האפשרויות המתקדמות מחולקות כעת ל-Runtime, Compiler, Garbage Collection ו-Serviceability, בהתאם לאזור שהן משפיעות. כעת מתוארות מספר אפשרויות שחסרו בעבר. יש גם סעיף לאפשרויות שהוצאו משימוש או הוסרו מאז המהדורה הקודמת.

4) כלי שורת הפקודה החדש של jdeps מאפשר למפתח לנתח קבצי מחלקה כדי לקבוע תלות ברמת החבילה או ברמת המחלקה.

5) ניתן לגשת לפקודות אבחון מרחוק, שבעבר היו נגישות רק באופן מקומי באמצעות הכלי jcmd. גישה מרחוק ניתנת באמצעות הרחבות לניהול Java (JMX), כך שפקודות אבחון נחשפות לפלטפורמת MBean הרשומה לשרת MBean של הפלטפורמה. ה-MBean הוא ממשק com.sun.management.DiagnosticCommandMBean.

6) אפשרות חדשה -tsapolicyid כלולה בכלי jarsigner המאפשרת לבקש חותמת זמן חתומה מרשות חותמת זמן ולצרפו לקובץ JAR חתום.

7) כלולה שיטה חדשה java.lang.reflect.Executable.getParameters המאפשרת לך לגשת לשמות של הפרמטרים הפורמליים של כל שיטה או בנאי. עם זאת, קבצי .class אינם מאחסנים שמות פרמטרים פורמליים כברירת מחדל. כדי לאחסן שמות פרמטרים פורמליים בקובץ .class מסוים, ובכך לאפשר ל-Reflection API לאחזר שמות פרמטרים פורמליים, הידור את קובץ המקור עם אפשרות -parameters של מהדר javac.

8) כללי הסוג להשוואות בינאריות ב-Java Language Specification (JLS) סעיף 15.21 יאכפו כעת כהלכה על ידי javac.

9) במהדורה זו, הכלי apt וה-API המשויך לו הכלולים בחבילה com.sun.mirror הוסרו.

שיפורים ב-Javadoc

ב-Java SE 8, ה-API החדשים הבאים נוספו לכלי Javadoc.

  • DocTree API חדש מציג סורק המאפשר לך לעבור בקוד מקור שמיוצג על ידי עץ תחביר מופשט. זה מרחיב את ה-Compiler Tree API כדי לספק גישה מובנית לתוכן של הערות javadoc.
  • חבילת javax.tools מכילה מחלקות וממשקים המאפשרים לך להפעיל את הכלי Javadoc ישירות מאפליקציית Java, מבלי לבצע תהליך חדש.
  • הקטע 'סיכום שיטה' של התיעוד שנוצר של מחלקה או ממשק עבר מבנה מחדש. תיאורי השיטה בסעיף זה מקובצים לפי סוג. כברירת מחדל, כל השיטות רשומות. אתה יכול ללחוץ על כרטיסייה כדי להציג שיטות מסוג מסוים (סטטי, מופע, מופשט, קונקרטי או הוצא משימוש, אם הן קיימות במחלקה או בממשק).
  • לכלי javadoc יש כעת תמיכה בבדיקת התוכן של הערות javadoc עבור בעיות שעלולות להוביל לבעיות שונות, כגון HTML לא חוקי או בעיות נגישות, בקבצים שנוצרים על ידי javadoc. התכונה מופעלת כברירת מחדל, וניתן לשלוט בה גם על ידי האפשרות החדשה -Xdoclint.

Pack200 שיפורים

פורמט הקובץ של מחלקת Java עודכן בגלל JSR 292 שתומך בשפות מוקלדות דינמיות בפלטפורמת Java.

מנוע Pack200 עודכן כדי להבטיח שקבצי Java SE 8 יידחסו ביעילות. כעת, הוא יכול לזהות ערכי מאגר קבועים וקודי בתים חדשים שהוצגו על ידי JSR 292. כתוצאה מכך, קבצים דחוסים שנוצרו עם גרסה זו של הכלי pack200 לא יהיו תואמים לגרסאות ישנות יותר של הכלי unpack200.


שיפורים ב-Java 8 I/O

ב-Java 8, ישנם מספר שיפורים ל-java.nio.charset.Charset ולהטמעת charset מורחבת. הוא כולל את הדברים הבאים:

  • SelectorProvider חדש שעשוי לשפר את הביצועים או המדרגיות עבור השרת. /dev/poll SelectorProvider ממשיך להיות ברירת המחדל. כדי להשתמש במנגנון יציאת האירועים של Solaris, הפעל עם מאפיין המערכת java.nio.channels.spi.Selector מוגדר לערך sun.nio.ch.EventPortSelectorProvider.
  • גודל הקובץ /jre/lib/charsets.jar ירד.
  • הביצועים היו שיפור עבור הבנאי java.lang.String(byte[], ∗) ושיטת java.lang.String.getBytes() .

שיפורים ברשת Java 8

1) מחלקה חדשה java.net.URLPermission נוספה. הוא מייצג הרשאה לגישה למשאב המוגדר על ידי כתובת URL נתונה.

2) נוספה חבילה jdk.net המכילה אפשרויות שקע ספציפיות לפלטפורמה ומנגנון להגדרת אפשרויות אלו בכל סוגי השקעים הסטנדרטיים. אפשרויות השקע מוגדרות ב-jdk.net.ExtendedSocketOptions.

3) בכיתה HttpURLConnection, אם מותקן מנהל אבטחה, ואם נקראת שיטה שגורמת לניסיון לפתוח חיבור, על המתקשר להחזיק ב-'connect'SocketPermission לשילוב המארח/יציאה של כתובת אתר היעד או URLPermission שמתיר בקשה זו.

אם הפניה אוטומטית מופעלת, ובקשה זו מנותבת ליעד אחר, למתקשר חייבת להיות הרשאה להתחבר למארח/כתובת האתר המופנים מחדש.


שיפורים במקביל ב-Java 8

החבילה java.util.concurrent הוסיפה שני ממשקים חדשים וארבע מחלקות חדשות.

ממשקי Java.util.concurrent

מִמְשָׁק תיאור
ממשק סטטי ציבורי CompletableFuture.AsynchronousCompletionTask זהו ממשק סמן המשמש לזיהוי משימות אסינכרוניות המיוצרות בשיטות אסינכרוניות. זה עשוי להיות שימושי לניטור, איתור באגים ומעקב אחר פעילויות אסינכרוניות.
ממשק ציבורי CompletionStage זה יוצר שלב של חישוב אולי אסינכרוני, שמבצע פעולה או מחשב ערך כאשר השלמה אחרת מסתיים.

Java.util.Concurrent Classes

מעמד תיאור
מחלקה ציבורית CompletableFuture מרחיבה Object מיישמת Future, CompletionStage זהו aFuture שעשוי להסתיים במפורש, ועשוי לשמש כשלב השלמה, התומך בפונקציות ופעולות תלויות המופעלות עם השלמתו.
מחלקה סטטית ציבורית ConcurrentHashMap.KeySetView מרחיבה מיישומי אובייקט Set, סריאליזציה זוהי תצוגה של ConcurrentHashMap כסט של מפתחות, שבהן ניתן לאפשר תוספות באופן אופציונלי על ידי מיפוי לערך משותף.
מחלקה מופשטת ציבורית CountedCompleter מרחיבה את ForkJoinTask ForkJoinTask עם פעולת השלמה שבוצעה כשהיא מופעלת ואין פעולות ממתינות שנותרו.
מחלקה ציבורית CompletionException מרחיבה את RuntimeException הוא זורק חריג כאשר נתקלים בשגיאה או חריג אחר במהלך השלמת תוצאה או משימה.

שיטות חדשות במחלקה java.util.concurrent.ConcurrentHashMap

מחלקה ConcurrentHashMap מציגה מספר שיטות חדשות במהדורה האחרונה שלה. הוא כולל שיטות שונות של forEach (forEach, forEachKey, forEachValue ו-forEachEntry), שיטות חיפוש (search, searchKeys, searchValues ​​ו- searchEntries) ומספר רב של שיטות הפחתה (reduce, reduceToDouble, reduceToLong וכו'). שיטות שונות אחרות (mappingCount ו-newKeySet) נוספו גם כן.

שיעורים חדשים ב-java.util.concurrent.atomic

המהדורה האחרונה מציגה תמיכה ניתנת להרחבה, ניתנת לעדכון ומשתנה באמצעות סט קטן של מחלקות חדשות DoubleAccumulator, DoubleAdder, LongAccumulator ו-LongAdder. היא משתמשת באופן פנימי בטכניקות הפחתת מחלוקות המספקות שיפורי תפוקה עצומים בהשוואה למשתנים אטומיים.

מעמד תיאור
מחלקה ציבורית DoubleAccumulator מרחיב את מספר מיישמים להסדרה הוא משמש עבור משתנה אחד או יותר שיחד שומרים על ערך כפול פועל המעודכן באמצעות פונקציה שסופקה.
מחלקה ציבורית DoubleAdder מרחיבה את מספר מיישמים להסדרה הוא משמש עבור משתנה אחד או יותר שיחד שומרים על סכום כפול אפס בתחילה.
מחלקה ציבורית LongAccumulator מרחיב מספר מיישם סריאליזציה הוא משמש עבור משתנה אחד או יותר שיחד שומרים על ערך ריצה ארוך המעודכן באמצעות פונקציה שסופקה.
מחלקה ציבורית LongAdder מרחיבה מספר מיישמים ניתן להסדרה הוא משמש עבור משתנה אחד או יותר שיחד שומרים על סכום ארוך בהתחלה אפס.

שיטות חדשות ב-java.util.concurrent.ForkJoinPool Class

מחלקה זו הוסיפה שתי שיטות חדשות getCommonPoolParallelism() ו-commonPool(), המחזירות את רמת ההקבלה הממוקדת של המאגר המשותף, או מופע המאגר המשותף, בהתאמה.

שיטה תיאור
ציבורי סטטי ForkJoinPool commonPool() זה מחזיר את מופע המאגר המשותף.
Public static int getCommonPoolParallelism() הוא מחזיר את רמת ההקבלה הממוקדת של המאגר המשותף.

מחלקה חדשה java.util.concurrent.locks.StampedLock

נוסף מחלקה חדשה StampedLock המשמשת להוספת נעילה מבוססת יכולות עם שלושה מצבים לשליטה בגישה לקריאה/כתיבה (כתיבה, קריאה וקריאה אופטימית). מחלקה זו תומכת גם בשיטות המספקות המרות על תנאי בשלושת המצבים.

מעמד תיאור
מחלקה ציבורית StampedLock מרחיבה את מיישומי האובייקט Serializable מחלקה זו מייצגת נעילה מבוססת יכולות עם שלושה מצבים לשליטה בגישה לקריאה/כתיבה.

Java API לעיבוד XML (JAXP) 1.6 שיפורים

ב-Java 8, Java API נוסף עבור עיבוד XML (JAXP) 1.6. זה מחייב שימוש במתקן הטעינה של ספק השירות המוגדר על ידי java.util.ServiceLoader כדי לטעון שירותים מקובצי תצורת השירות.

הרציונל לכך הוא לאפשר מודולריזציה עתידית של פלטפורמת Java SE שבה ספקי שירות עשויים להיפרס באמצעים שאינם קבצי JAR ואולי ללא קבצי תצורת השירות.

str ל-int

שיפורים ב-Java Virtual Machine

האימות של הוראות מיוחדות של invoke הוחמר כך שניתן להפעיל רק שיטת אתחול מופע במחלקה הנוכחית או במחלקת העל הישירה שלה.


Java Mission Control 5.3 כלול ב-Java 8

Java Mission Control (JMC) היא מערכת מתקדמת של כלים המאפשרת ניתוח נתונים יעיל ומפורט ומספקת ניטור וניהול Java מתקדמים ולא פולשניים. JMC מספקת סעיפים לתחומי ניתוח נפוצים כגון ביצועי קוד, זיכרון והשהייה.

ערכות שפה של Babel ביפנית וסינית פשוטה נכללות כעת כברירת מחדל ב-Java Mission Control הכלולה ב-JDK 8.


שיפורים באינטרנציונליזציה של Java 8

1) שיפורים ביוניקוד

ה-JDK 8 כולל תמיכה ב-Unicode 6.2.0. הוא מכיל את התכונות הבאות.

  • 733 דמויות חדשות כולל שלט לירה טורקית.
  • 7 סקריפטים חדשים:
    • הירוגליפים מרואיטים
    • קורסיב מרואיטי
    • סורה סומפנג
    • צ'קמה
    • שראדה
    • טקרי
    • מיאו
  • 11 בלוקים חדשים: כולל 7 בלוקים עבור הסקריפטים החדשים המפורטים למעלה ו-4 בלוקים עבור הסקריפטים הקיימים הבאים:
  • ערבית מורחבת-A
  • מוסף סונדני
  • מפגש עם הרחבות Meek
  • סמלים אלפביתיים מתמטיים בערבית

אימוץ של Unicode CLDR Data ומאפיין המערכת של java.locale.providers

קונסורציום Unicode פרסם את פרויקט Common Locale Data Repository (CLDR) כדי 'לתמוך בשפות העולם, עם המאגר הסטנדרטי הגדול והרחב ביותר של נתונים מקומיים זמין'. ה-CLDR הופך לסטנדרט דה-פקטו לנתוני מקומיים. נתוני המקום המבוססים על XML של ה-CLDR שולבו במהדורת JDK 8, אולם היא מושבתת כברירת מחדל.

ישנם ארבעה מקורות נפרדים לנתוני מקומיים:

  • CLDR מייצג את נתוני המקום המסופקים על ידי פרויקט Unicode CLDR.
  • HOST מייצג את ההתאמה האישית של המשתמש הנוכחי של הגדרות מערכת ההפעלה הבסיסית. זה עובד רק עם אזור ברירת המחדל של המשתמש, וההגדרות הניתנות להתאמה אישית עשויות להשתנות בהתאם למערכת ההפעלה, אבל בעיקר נתמכים פורמטים של תאריך, שעה, מספר ומטבע.
  • SPI מייצג את השירותים הרגישים לאזור המיושמים בספקי SPI המותקנים.
  • JRE מייצג את נתוני המקום התואמים את המהדורות הקודמות של JRE.

כדי לבחור את מקור הנתונים המקומי הרצוי, השתמש במאפיין המערכת java.locale.providers. רישום מקורות הנתונים בסדר המועדף. לדוגמה: java.locale.providers=HOST,SPI,CLDR,JRE התנהגות ברירת המחדל שווה להגדרה הבאה: java.locale.providers=JRE,SPI


Java 8 ממשקי API חדשים של לוח שנה ואזור

ה-JDK 8 כולל שתי מחלקות חדשות, מספר שיטות חדשות וערך החזרה חדש עבור שיטה סטטית קיימת.

שני מחלקות מופשטות חדשות לספקי שירותים מתווספות לחבילת java.util.spi.

מעמד תיאור
מחלקה תקציר ציבורית CalendarDataProvider מרחיבה את LocaleServiceProvider זהו מחלקה מופשטת לספקי שירותים המספקים פרמטרים של לוח שנה תלויי מיקום.
מחלקה תקציר ציבורית CalendarNameProvider מרחיבה את LocaleServiceProvider זהו מחלקה מופשטת לספקי שירותים המספקים ייצוגי מחרוזת (שמות תצוגה) מקומיים של ערכי שדות לוח שנה.

שיטה סטטית מסוגלת כעת לזהות את Locale.UNICODE_LOCALE_EXTENSION עבור מערכת המספור.

שיטה תיאור
public static final DecimalFormatSymbols getInstance(Locale locale) הוא משמש כדי לקבל את המופע DecimalFormatSymbols עבור המקום שצוין. שיטה זו מספקת גישה למופעי DecimalFormatSymbols עבור מקומות הנתמכים על ידי זמן הריצה של Java עצמו וכן עבור אלה הנתמכים על ידי יישומי DecimalFormatSymbolsProvider מותקנים. זה זורק את NullPointerException אם המקום הוא null.

נוספו שיטות חדשות ב-API של לוח שנה:

שיטה תיאור
בוליאני ציבורי isSupportedLocale(locale locale) זה מחזיר כראוי אם המקום הנתון נתמך על ידי ספק שירותי המקום הזה. המקום הנתון עשוי להכיל הרחבות שיש לקחת בחשבון לקביעת התמיכה. הוא מוגדר במחלקה java.util.spi.LocaleServiceProvider
מחרוזת ציבורית getCalendarType() זה מחזיר את סוג לוח השנה של לוח השנה הזה. סוגי לוח שנה מוגדרים על ידי מפרט Unicode Locale Data Markup Language (LDML). הוא מוגדר במחלקה java.util.Calendar.

מפרטי סגנון חדשים מתווספים עבור השיטות Calendar.getDisplayName ו-Calendar.getDisplayNames כדי לקבוע את הפורמט של שם לוח השנה.


מפרט תיאור
ציבורי סטטי סופי int SHORT_FORMAT זהו מפרט סגנון עבור getDisplayName ו-getDisplayNames המציין שם קצר המשמש לפורמט.
גמר סטטי ציבורי אינט LONG_FORMAT זהו מפרט סגנון עבור getDisplayName ו-getDisplayNames המציין שם ארוך המשמש לפורמט.
סופי סטטי ציבורי int SHORT_STANDALONE זהו מפרט סגנון עבור getDisplayName ו-getDisplayNames המציין שם קצר בשימוש עצמאי, כגון קיצור חודש ככותרות לוח שנה.
גמר סטטי ציבורי אינט LONG_STANDALONE זהו מפרט סגנון עבור getDisplayName ו-getDisplayNames המציין שם ארוך בשימוש עצמאי, כגון שם חודש ככותרות לוח שנה.

שתי שיטות Locale חדשות להתמודדות עם הרחבות (אופציונליות) של מקומי.

שיטה תיאור
hasExtensions() בוליאני ציבורי זה מחזיר אמת אם למיקום הזה יש הרחבות כלשהן.
public Locale stripExtensions() הוא מחזיר עותק של המקום הזה ללא הרחבות. אם למקום הזה אין הרחבות, המקום הזה מוחזר בעצמו.

שתי שיטות חדשות Locale.filter מחזירות רשימה של מופעי Locale התואמים את הקריטריונים שצוינו, כפי שהוגדרו ב-RFC 4647:

שיטה תיאור
מסנן רשימה סטטי ציבורי (List priorityList, מקומות אוסף) הוא מחזיר רשימה של מופעי Locale תואמים באמצעות מנגנון הסינון המוגדר ב-RFC 4647. זה שווה ערך ל-filter(List, Collection, FilteringMode) כאשר המצב הוא Locale.FilteringMode.AUTOSELECT_FILTERING.
מסנן רשימה סטטי ציבורי (List priorityList, אזורי אוסף, מצב Locale.FilteringMode) הוא מחזיר רשימה של מופעי Locale תואמים באמצעות מנגנון הסינון המוגדר ב-RFC 4647.

שתי שיטות חדשות Locale.filterTags מחזירות רשימה של תגי שפה התואמים את הקריטריונים שצוינו, כפי שהוגדרו ב-RFC 4647.

שיטה תיאור
תגי מסנן רשימה סטטית ציבורית (List priority List, תגי אוסף) הוא מחזיר רשימה של תגיות שפות תואמות באמצעות מנגנון הסינון הבסיסי המוגדר ב-RFC 4647. זה שווה ערך ל-filterTags(List, Collection, FilteringMode) כאשר המצב הוא Locale.FilteringMode.AUTOSELECT_FILTERING.
תגי סינון רשימה סטטית ציבורית (List priorityList, תגי אוסף, מצב Locale.FilteringMode) הוא מחזיר רשימה של תגיות שפות תואמות באמצעות מנגנון הסינון הבסיסי המוגדר ב-RFC 4647.

שתי שיטות חיפוש חדשות מחזירות את תג המקום או השפה המתאימים ביותר באמצעות מנגנון הבדיקה המוגדר ב-RFC 4647.

שיטה תיאור
חיפוש מקומי סטטי ציבורי (List priorityList, אזורי אוסף) הוא מחזיר מופע Locale עבור תג השפה המתאימה ביותר באמצעות מנגנון הבדיקה המוגדר ב-RFC 4647.
תג חיפוש מחרוזת סטטית ציבורית (List priorityList, תגי אוסף) הוא מחזיר את תג השפה המתאימה ביותר באמצעות מנגנון הבדיקה המוגדר ב-RFC 4647.

שיפורים נוספים בגרסת Java 8

שיפורים ב-JDK 8u5

1) התדירות שבה מוצגות הנחיות האבטחה עבור אפליקציה הופחתה.


שיפורים ב-JDK 8u11

1) אפשרות לדכא הצעות מנותני חסות כאשר ה-JRE מותקן או מעודכן זמינה בכרטיסייה מתקדם בלוח הבקרה של Java.

2) ניתן לכלול את התכונה Entry-Point במניפסט של קובץ JAR כדי לזהות מחלקה אחת או יותר כנקודת כניסה חוקית עבור יישום ה-RIA (Rich Internet Application).


שיפורים ב-JDK 8u20

1) השם של הכלי javafxpackager שונה ל-javapackager. כלי זה שופר עם ארגומנטים חדשים עבור חבילות אפליקציות עצמאיות.

השיפורים הבאים קשורים לכלי Java:

  • נוספה אפשרות מהדר ניסיוני של JIT הקשורה לזיכרון עסקאות מוגבל (RTM).
  • נוספו מספר אפשרויות הקשורות למניעת כפילויות של מחרוזות.
  • נוספו מספר אפשרויות הקשורות למאפיינים של תקן הצפנה מתקדם (AES).
  • שילובים של אפשרויות איסוף אשפה הוצאו משימוש.

2) מדריך כוונון איסוף זבל נוסף ל-Java HotSpot Virtual Machine. הוא מתאר את אוספי האשפה הכלולים ב-Java HotSpot VM ועוזר לך להחליט איזה אספן אשפה יכול לייעל את הביצועים של היישום שלך, במיוחד אם הוא מטפל בכמויות גדולות של נתונים (מספר גיגה-בייט), בעל שרשורים רבים, ובעל שיעורי עסקאות גבוהים .


שיפורים ב-JDK 8u31

1) במהדורה זו, פרוטוקול SSLv3 מוסר מהאפשרויות המתקדמות של לוח הבקרה של Java.

איפה אני מוצא את הגדרות הדפדפן שלי

שיפורים ב-JDK 8u40

כלי Java

1) ה--XX:+CheckEndorsedAndExtDirs נוספה מכיוון שמנגנון עקיפת הסטנדרטים המאושרים (JDK-8065675) ומנגנון ההרחבה (JDK-8065702) הוצאו משימוש. האפשרות עוזרת לזהות את כל השימושים הקיימים במנגנונים הללו ונתמכת ב-JDK 7u80 ו-JDK 8u40.

2) Java Flight Recorder (JFR) מציע מגוון דרכים לפתוח תכונות מסחריות ולאפשר JFR במהלך זמן הריצה של אפליקציה.

הוא כולל אפשרויות שורת פקודה של Java כגון פקודות אבחון jcmd ופקדים של ממשק משתמש גרפי (GUI) בתוך Java Mission Control. גמישות זו מאפשרת לך לספק את האפשרויות המתאימות בעת ההפעלה, או ליצור אינטראקציה עם JFR מאוחר יותר.

3) לאפשרות -XX:StartFlightRecording=parameter=value יש פרמטר חדש, dumponexit=true, המציין האם יש ליצור קובץ dump של נתוני JFR כאשר ה-JVM מסתיים בצורה מבוקרת.

4) האפשרויות הקשורות לזיכרון עסקאות מוגבל (RTM) אינן עוד ניסיוניות. אפשרויות אלה כוללות -XX:RTMAbortRatio=abort_ratio, -XX:RTMRetryCount=number_of_retries, -XX:+UseRTMDeopt ו-XX:+UseRTMLlocking.

5) ב-Java 8, שיתוף נתונים בכיתה יישומים (AppCDS) הוצג. AppCDS מרחיבה את ה-CDS (שיתוף נתונים בכיתה) כדי לאפשר למקם מחלקות מספריות ההרחבות הסטנדרטיות ומנתיב מחלקות היישום בארכיון המשותף. זוהי תכונה מסחרית ואינה נחשבת עוד לנסיונית.

6) אפשרויות חדשות -XX:+ResourceManagement ו-XX:ResourceManagementSampleInterval=value נוספו.

7) מידע נוסף על דפים גדולים נוסף. עמודים גדולים, הידועים גם כעמודים ענקיים, הם דפי זיכרון שגדולים משמעותית מגודל עמוד הזיכרון הרגיל. דפים גדולים מייעלים מעבד תרגום-מבקרים צדדיים. האפשרויות של Linux -XX:+UseHugeTLBFS, -XX:+UseSHM ו-XX:+UseTransparentHugePages תועדו.

8) האפשרות -XX:ObjectAlignmentInBytes=alignment תועדה.

כלי JJS

1) נוספה האפשרות --optimistic-types=[true|false]. זה מאפשר או משבית הנחות מסוג אופטימיות עם ביטול אופטימיזציה של קומפילציה מחדש.

2) האפשרות --language=[es5] נוספה לכלי jjs. זה מציין את גרסת השפה של ECMAScript.

כלי Javapackager

1) ארגומנטים חדשים זמינים עבור חבילות OS X. הארגומנט mac.CFBundleVersion מזהה את מספר הגרסה הפנימי שיש להשתמש בו.

2) הארגומנט mac.dmg.simple מציין אם מדלגים על שלבי התאמה אישית של DMG התלויים בביצוע קוד AppleScript.

כלי Jcmd

כלי Jcmd משמש לאינטראקציה דינמית עם מקליט טיסות של Java (JFR). אתה יכול להשתמש בו כדי לפתוח תכונות מסחריות, להפעיל/להתחיל/להפסיק הקלטות טיסה ולקבל הודעות סטטוס שונות מהמערכת.

כלי Jstat

הכלי jstat עודכן במידע על מרחב מחלקה דחוס שהוא חלק מיוחד במטא-מרחב.

מכונה וירטואלית

התכונה Scalable Native Memory Tracking HotSpot VM עוזרת לאבחן דליפות זיכרון VM ולהבהיר משתמשים כאשר דליפות זיכרון אינן ב-VM. ניתן להפעיל את Native Memory Tracker ללא כיבוי עצמי במערכות גדולות ומבלי לגרום להשפעה משמעותית על הביצועים מעבר למה שנחשב מקובל עבור תוכניות קטנות.