{"id":6090,"date":"2021-09-28T14:31:20","date_gmt":"2021-09-28T14:31:20","guid":{"rendered":"https:\/\/thorsten.qodeinteractive.com\/?p=6090"},"modified":"2022-04-13T01:51:21","modified_gmt":"2022-04-13T01:51:21","slug":"the-great-innovators","status":"publish","type":"post","link":"https:\/\/proskillssaudi.com\/tr\/the-great-innovators\/","title":{"rendered":"Java 17&#039;de sunulan JEP&#039;ler, yeni dil \u00f6zelliklerinden \u00e7ekirdek kitapl\u0131klara y\u00f6nelik iyile\u015ftirmelere, \u00f6nizlemelere ve kulu\u00e7ka makinelerine kadar \u00e7e\u015fitlilik g\u00f6sterir."},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"6090\" class=\"elementor elementor-6090\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4334ad5 elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"4334ad5\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7a10102\" data-id=\"7a10102\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f1c6ad9 elementor-widget elementor-widget-text-editor\" data-id=\"f1c6ad9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.15.0 - 20-08-2023 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>Java 17&#039;de herkes i\u00e7in bir \u015feyler vard\u0131r. Yeni dil \u00f6zellikleri mi istiyorsunuz? M\u00fch\u00fcrl\u00fc s\u0131n\u0131flara ve kal\u0131p e\u015fle\u015ftirmenin \u00f6nizlemesine g\u00f6z at\u0131n.\u00a0<code>de\u011fi\u015ftirmek<\/code>. Daha g\u00fc\u00e7l\u00fc g\u00fcvenlik mi ar\u0131yorsunuz? JDK 17, ba\u011flama \u00f6zel seri durumdan \u00e7\u0131karma filtreleri sunar. Yeni platformlar\u0131 \u00f6nemsiyor musunuz? Art\u0131k ARM AArch64 mimarisine sahip 64-bit Mac&#039;ler i\u00e7in JDK&#039;n\u0131n bir s\u00fcr\u00fcm\u00fc var. Y\u0131llarca s\u00fcren istikrara ne dersiniz? Java SE 17, t\u0131pk\u0131 Java 11 ve Java 8 gibi bir Uzun S\u00fcreli Destek (LTS) s\u00fcr\u00fcm\u00fcd\u00fcr.<\/p><p>Resmi olarak Java 17&#039;nin do\u011fum g\u00fcn\u00fc (yani, genel kullan\u0131ma sunuldu\u011funda) 14 Eyl\u00fcl 2021&#039;dir, ancak 14 JEP&#039;si elbette aylard\u0131r g\u00f6r\u00fcn\u00fcr durumdad\u0131r. Geli\u015ftiriciler kaynak koduyla oynuyor ve ikili dosyalar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131yor ve bir\u00e7o\u011fu yorumlara, hata raporlar\u0131na ve \u00f6nerilere katk\u0131da bulundu.<\/p><p>Java 17 ve JEP&#039;lerinin her birine ili\u015fkin teknik ayr\u0131nt\u0131lar i\u00e7in a\u015fa\u011f\u0131daki kaynaklara bak\u0131n:<\/p><ul class=\"obullets\"><li><a href=\"https:\/\/blogs.oracle.com\/java\/post\/announcing-java17\" target=\"_blank\" rel=\"noopener\">Resmi Java blog yaz\u0131s\u0131: Java 17&#039;nin geli\u015fi<\/a><\/li><li><a href=\"https:\/\/www.oracle.com\/news\/announcement\/oracle-releases-java-17-2021-09-14\/\" target=\"_blank\" rel=\"noopener\">Resmi Oracle bas\u0131n a\u00e7\u0131klamas\u0131<\/a><\/li><li><a href=\"https:\/\/openjdk.java.net\/projects\/jdk\/17\/\" target=\"_blank\" rel=\"noopener\">JEP&#039;lere ba\u011flanan JDK 17 kaynak sayfas\u0131<\/a><\/li><li><a href=\"https:\/\/jdk.java.net\/17\/release-notes\" target=\"_blank\" rel=\"noopener\">JDK 17 s\u00fcr\u00fcm notlar\u0131<\/a><\/li><li><a href=\"https:\/\/openjdk.java.net\/projects\/jdk\/17\/spec\/\" target=\"_blank\" rel=\"noopener\">Java SE 17 platformu (JSR 392)<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/java-se-17-jls-fr-diffs.pdf\" target=\"_blank\" rel=\"noopener\"><em>Java Dili Belirtimi<\/em>, Java SE 17 s\u00fcr\u00fcm\u00fc<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/java-se-17-jvms-fr-diffs.pdf\" target=\"_blank\" rel=\"noopener\"><em>Java Sanal Makine Belirtimi<\/em>, Java SE 17 s\u00fcr\u00fcm\u00fc<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/\/api\/index.html\" target=\"_blank\" rel=\"noopener\">Java 17 API belirtimi<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/apidiffs\/overview-summary.html\" target=\"_blank\" rel=\"noopener\">Java SE 16 ve Java SE 17 aras\u0131ndaki API farklar\u0131<\/a><\/li><\/ul><p>Java 17 ayn\u0131 zamanda bir LTS s\u00fcr\u00fcm\u00fcd\u00fcr; bu, onu uzun y\u0131llar boyunca yamalar, d\u00fczeltmeler ve performans geli\u015ftirmeleriyle korunaca\u011f\u0131n\u0131 bilerek da\u011f\u0131tabilece\u011finiz anlam\u0131na gelir. Bununla ilgili daha fazlas\u0131n\u0131 Donald Smith&#039;in makalesinde g\u00f6rebilirsiniz \u201c<a href=\"https:\/\/blogs.oracle.com\/javamagazine\/post\/java-long-term-support-lts\" target=\"_blank\" rel=\"noopener\">Uzun vadeli destek sanat\u0131 ve LTS&#039;nin Java ekosistemi i\u00e7in ne anlama geldi\u011fi<\/a>\u201d<\/p><p>A\u015fa\u011f\u0131da, Java 16 veya Java 11&#039;den ge\u00e7i\u015f yapmay\u0131 d\u00fc\u015f\u00fcnen uygulama geli\u015ftiren programc\u0131lar ve mimarlar i\u00e7in muhtemelen en alakal\u0131 olan d\u00f6rt JEP&#039;i inceliyorum ve di\u011fer evrimsel \u00f6zellikleri de tart\u0131\u015faca\u011f\u0131m.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1cc7b2 elementor-widget elementor-widget-text-editor\" data-id=\"c1cc7b2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1203a88 elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"1203a88\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c933f6c\" data-id=\"c933f6c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1a517a5 elementor-widget elementor-widget-text-editor\" data-id=\"1a517a5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2>Dil \u00f6zelli\u011fi: M\u00fch\u00fcrl\u00fc s\u0131n\u0131flar (JEP 409)<\/h2><p>M\u00fch\u00fcrl\u00fc s\u0131n\u0131flar, JDK 17&#039;de en \u00e7ok beklenen nihai \u00f6zellik olabilir ve bunlar JDK 16&#039;da \u00f6nizlendi. K\u0131sacas\u0131, m\u00fch\u00fcrl\u00fc s\u0131n\u0131flar, di\u011fer s\u0131n\u0131flar\u0131n (veya aray\u00fczlerin) onlar\u0131 geni\u015fletebilece\u011fini k\u0131s\u0131tlar. Gibi\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/409\" target=\"_blank\" rel=\"noopener\">JEP 409<\/a>\u00a0a\u00e7\u0131kland\u0131\u011f\u0131 gibi, m\u00fch\u00fcrl\u00fc bir s\u0131n\u0131f veya aray\u00fcz, yaln\u0131zca buna izin verilen s\u0131n\u0131flar ve aray\u00fczler taraf\u0131ndan geni\u015fletilebilir veya uygulanabilir. Bir s\u0131n\u0131f uygulanarak m\u00fch\u00fcrlenir\u00a0<code>M\u00fch\u00fcrl\u00fc<\/code>\u00a0bildiriminin de\u011fi\u015ftiricisi. Sonra, herhangi birinden sonra\u00a0<code>uzan\u0131r<\/code>\u00a0ve\u00a0<code>uygular<\/code>\u00a0h\u00fck\u00fcmler,\u00a0<code>izinler<\/code>\u00a0yan t\u00fcmcesi, m\u00fch\u00fcrl\u00fc s\u0131n\u0131f\u0131 geni\u015fletmesine izin verilen s\u0131n\u0131flar\u0131 belirtir. Bu s\u0131n\u0131flar\u0131n de\u011fi\u015fiklik yapmalar\u0131na a\u00e7\u0131k\u00e7a izin verilmemi\u015fse, de\u011fi\u015fiklik yapamazlar.<\/p><p>Neden umursamal\u0131s\u0131n? Java SE \u00fcr\u00fcn y\u00f6netimi m\u00fcd\u00fcr\u00fc Aurelio Garcia-Ribeyro&#039;ya g\u00f6re, &quot;M\u00fch\u00fcrl\u00fc s\u0131n\u0131flar, sonlu oldu\u011funu bildi\u011fim bir dizi se\u00e7enek olu\u015fturmama izin veriyor ve bu, kodu basitle\u015ftiriyor \u00e7\u00fcnk\u00fc o zaman s\u0131n\u0131flar\u0131 numaralarm\u0131\u015f gibi ele alabilirim.&quot;<\/p><p>M\u00fch\u00fcrl\u00fc s\u0131n\u0131flara sahip olmak, ba\u015fka bir kodun kodunuzu ge\u00e7ersiz k\u0131labilece\u011fi veya davran\u0131\u015f\u0131n\u0131 tahmin edemeyece\u011finiz \u015fekillerde de\u011fi\u015ftirebilece\u011fi endi\u015fesini ortadan kald\u0131rd\u0131\u011f\u0131n\u0131 s\u00f6yl\u00fcyor. &quot;Kimsenin bir kitapl\u0131\u011f\u0131 gelecekte kodumu k\u0131racak \u015fekilde geli\u015ftiremeyece\u011finin garantisini veriyor.&quot;<\/p><h2>\u00c7ekirdek kitapl\u0131k y\u00fckseltmesi: Ba\u011flama \u00f6zel seri durumdan \u00e7\u0131karma filtreleri (JEP 415)<\/h2><p>Ba\u011flama \u00f6zel seri kald\u0131rma filtreleri, Java 9&#039;da tan\u0131t\u0131lan bir \u00f6zellik \u00fczerine kuruludur (bkz.\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/290\" target=\"_blank\" rel=\"noopener\">JEP 290: Gelen serile\u015ftirme verilerini filtreleyin<\/a>). Bu eski JEP, hem ak\u0131\u015f ba\u015f\u0131na de\u011fi\u015ftirilebilir seri kald\u0131rma filtreleri hem de JVM \u00e7ap\u0131nda statik bir filtre sunuyordu. Ak\u0131\u015f ba\u015f\u0131na filtreler maalesef iyi \u00f6l\u00e7eklenmedi ve kod g\u00f6nderildikten sonra filtreleri g\u00fcncellemek zor. JEP 290&#039;\u0131n filtreleri, bir uygulamada \u00fc\u00e7\u00fcnc\u00fc taraf kitapl\u0131klar\u0131 taraf\u0131ndan ger\u00e7ekle\u015ftirilen seri durumdan \u00e7\u0131karma i\u015flemlerine de filtreleme uygulayamaz. JVM \u00e7ap\u0131nda filtre, ba\u015flang\u0131\u00e7ta yaln\u0131zca bir kez belirtilmesi ve bazen \u00e7ok kapsay\u0131c\u0131 veya \u00e7ok k\u0131s\u0131tlay\u0131c\u0131 olmas\u0131 bak\u0131m\u0131ndan s\u0131n\u0131rl\u0131yd\u0131.<\/p><p>yeni i\u015flevsellik\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/415\" target=\"_blank\" rel=\"noopener\">JEP 415&#039;te<\/a>\u00a0JVM \u00e7ap\u0131nda bir filtre fabrikas\u0131 olarak sunulmaktad\u0131r. Filtreler dinamik ve ba\u011flama \u00f6zeldir. Geriye d\u00f6n\u00fck uyumluluk i\u00e7in, bir filtre fabrikas\u0131 ayarlanmam\u0131\u015fsa, yerle\u015fik fabrika, yap\u0131land\u0131r\u0131lm\u0131\u015fsa JVM \u00e7ap\u0131nda statik bir filtre d\u00f6nd\u00fcr\u00fcr.<\/p><p>Garcia-Ribeyro&#039;ya g\u00f6re sorun, bir geli\u015ftirici her i\u015flem hatt\u0131 olu\u015fturdu\u011funda, geli\u015ftiricinin izin verilenler listesi ve reddedilenler listesi de dahil olmak \u00fczere filtrenin ne oldu\u011funu tan\u0131mlamas\u0131 gerekti\u011fidir. Ancak Garcia-Ribeyro&#039;ya g\u00f6re, &quot;Bir \u00fc\u00e7\u00fcnc\u00fc taraf kitapl\u0131\u011f\u0131 kullan\u0131yorsam, onlar kendi ak\u0131\u015flar\u0131n\u0131 kullan\u0131yorlar. JVM \u00e7ap\u0131nda bir filtre tan\u0131mlayabilirdim, ancak kitapl\u0131\u011f\u0131n yapmak istedi\u011fi her \u015feyi \u00f6nceden bilmek zorundayd\u0131m. Bu \u00e7ok \u00e7al\u0131\u015fmay\u0131 gerektiriyordu.\u201d<\/p><p>Buna kar\u015f\u0131l\u0131k, JEP 415 bir filtre fabrikas\u0131 sa\u011flar. &quot;Bir filtre fabrikas\u0131yla, seri durumdan \u00e7\u0131karma filtrelerinin kullan\u0131m\u0131 art\u0131k \u00e7ok daha kolay,&quot; diyor, &quot;o kadar ki, JDK 11 ve JDK 8&#039;e kadar zaten \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131m\u0131z ve iyile\u015ftirdi\u011fimiz bir \u00f6zellik bu.&quot;<\/p><p>JEP 415&#039;i Java&#039;n\u0131n eski s\u00fcr\u00fcm\u00fcne d\u00f6nd\u00fcrmek i\u00e7in belirlenmi\u015f bir zaman \u00e7er\u00e7evesi yok, ancak Garcia-Ribeyro \u0131srar ediyor, &quot;Bunun \u00fczerinde \u015fiddetle \u00e7al\u0131\u015f\u0131yoruz.&quot;<\/p><h2>\u00c7ekirdek kitapl\u0131k g\u00fcncellemesi: Yeni macOS i\u015fleme ard\u0131\u015f\u0131k d\u00fczeni (JEP 382)<\/h2><p>Mac kullan\u0131yor musunuz? Yap\u0131yorum\u2014d\u00f6rt \u00e7ekirdekli i7 tabanl\u0131 MacBook Pro&#039;m olmasayd\u0131 ne yapard\u0131m bilmiyorum. taraf\u0131ndan a\u00e7\u0131klanan yeni macOS i\u015fleme hatt\u0131\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/382\" target=\"_blank\" rel=\"noopener\">382<\/a>\u00a0olduk\u00e7a basittir: JVM&#039;nin 2D grafiklerini, kullan\u0131mdan kald\u0131r\u0131lm\u0131\u015f Apple OpenGL API&#039;sini kullanmaktan daha yenisine ta\u015f\u0131r.\u00a0<a href=\"https:\/\/developer.apple.com\/metal\/\" target=\"_blank\" rel=\"noopener\">Elma Metal API&#039;s\u0131<\/a>. Tabii ki, Java&#039;y\u0131 arka u\u00e7 i\u015f y\u00fckleri i\u00e7in kullan\u0131yorsan\u0131z, muhtemelen bunu umursamayacaks\u0131n\u0131z.<\/p><p><a href=\"https:\/\/developer.apple.com\/documentation\/macos-release-notes\/macos-mojave-10_14-release-notes?preferredLanguage=occ#3035786\" target=\"_blank\" rel=\"noopener\">Apple, macOS Mojave 10.14&#039;te OpenGL&#039;yi a\u015famal\u0131 olarak kald\u0131rmaya ba\u015flad\u0131<\/a>, tavsiyede bulunarak, &quot;OpenGL ve OpenCL \u00e7er\u00e7evelerindeki API&#039;ler kullan\u0131mdan kald\u0131r\u0131ld\u0131 ve uyumluluk amac\u0131yla mevcut durumda. Uygulaman\u0131z OpenGL veya OpenCL kullan\u0131yorsa Metal&#039;e ge\u00e7i\u015f yap\u0131n.&quot;<\/p><p>Bu de\u011fi\u015fiklik hem Intel hem de ARM tabanl\u0131 Mac&#039;ler i\u00e7in ge\u00e7erlidir. Bu gizli bir de\u011fi\u015fikliktir. JEP 382 belgelerinin dedi\u011fi gibi, &quot;De\u011fi\u015fiklikler macOS&#039;a \u00f6zg\u00fc kodla s\u0131n\u0131rl\u0131d\u0131r ve orada bile Metal ve OpenGL aras\u0131nda payla\u015f\u0131lan minimum miktarda kod g\u00fcncellenir. Ne yeni Java API&#039;leri sunduk ne de mevcut API&#039;leri de\u011fi\u015ftirdik.&quot;<\/p><p>JEP 382 belgelerinde ayr\u0131ca, &quot;Apple, OpenGL&#039;nin yerini alan Metal \u00e7er\u00e7evenin \u00fcst\u00fcn performansa sahip oldu\u011funu iddia ediyor. Java 2D API i\u00e7in, baz\u0131 istisnalar d\u0131\u015f\u0131nda genellikle durum budur.&quot;<\/p><p>\u015eimdilik, Java 17 JVM varsay\u0131lan olarak OpenGL kullanacak; Metal&#039;i yaln\u0131zca OpenGL yoksa veya kullan\u0131c\u0131 bir komut sat\u0131r\u0131 anahtar\u0131 atarsa kullan\u0131r. Ancak Garcia-Ribeyro, Mac kullan\u0131c\u0131lar\u0131n\u0131n yeni kodu denemelerini istiyor. &quot;Bu yeni i\u015fleme hatt\u0131n\u0131 a\u00e7man\u0131z\u0131 istiyoruz. Mac&#039;lerdeki mevcut grafik performans\u0131ndan daha h\u0131zl\u0131 veya en az\u0131ndan onunla ayn\u0131 olmal\u0131d\u0131r.&quot;<\/p><h2>\u00d6nizleme: Anahtar i\u00e7in desen e\u015fle\u015ftirme (JEP 406)<\/h2><p>muhtemelen hakk\u0131nda daha fazla \u015fey duydum\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/406\" target=\"_blank\" rel=\"noopener\">desen e\u015fle\u015ftirme\u00a0<code>de\u011fi\u015ftirmek<\/code>\u00a0(JEP 406)<\/a>\u00a0di\u011fer t\u00fcm JDK 17 \u00f6zelliklerinden daha iyi ve Garcia-Ribeyro da bu konuda heyecanl\u0131. &quot;Bu \u00f6zellik Java&#039;y\u0131 herkes i\u00e7in daha iyi hale getiriyor&quot; diyor ve &quot;birka\u00e7 s\u00fcr\u00fcmde Java standard\u0131n\u0131n bir par\u00e7as\u0131 olacak.&quot;<\/p><p>Bu JEP,\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/394\" target=\"_blank\" rel=\"noopener\">desen e\u015fle\u015ftirme\u00a0<code>\u00f6rne\u011fi<\/code>\u00a0(JEP 394)<\/a>, JDK 16 i\u00e7in sonland\u0131r\u0131ld\u0131. Yeni \u00f6zellik iki b\u00fcy\u00fck avantaj sunuyor.<\/p><ul class=\"obullets\"><li>Yapar\u00a0<code>de\u011fi\u015ftirmek<\/code>\u00a0kal\u0131plar\u0131n g\u00f6r\u00fcnmesine izin vererek ifadeler \u00e7ok daha programlanabilir ve esnektir.\u00a0<code>durum<\/code>\u00a0etiketler. JEP belgelerinden al\u0131nt\u0131 yapmak i\u00e7in, \u201cYaln\u0131zca\u00a0<code>de\u011fi\u015ftirmek<\/code>\u00a0birka\u00e7 t\u00fcr\u00fcn de\u011ferleri hakk\u0131nda - say\u0131sal t\u00fcrler, numaraland\u0131rma t\u00fcrleri ve\u00a0<code>Sicim<\/code>\u00a0- ve yaln\u0131zca sabitlere kar\u015f\u0131 tam e\u015fitli\u011fi test edebilirsiniz. Ayn\u0131 de\u011fi\u015fkeni bir dizi olas\u0131l\u0131\u011fa kar\u015f\u0131 test etmek i\u00e7in kal\u0131plar\u0131 kullanmak isteyebiliriz, her biri i\u00e7in belirli bir eylemde bulunabiliriz, ancak mevcut\u00a0<code>de\u011fi\u015ftirmek<\/code>\u00a0bunu desteklemiyor, bir zincirle sonu\u00e7lan\u0131yoruz\u00a0<code>e\u011fer...ba\u015fka<\/code>\u00a0testler.\u201d<\/li><li>Bo\u015f ko\u015fullar\u0131 i\u015flemek i\u00e7in daha zarif (ve geli\u015ftirici dostu) bir mekanizma sa\u011flar. Yine al\u0131nt\u0131 yapmak gerekirse: \u201cGeleneksel olarak,\u00a0<code>de\u011fi\u015ftirmek<\/code>\u00a0ifadeler ve ifadeler atmak\u00a0<code>NullPointerException<\/code>\u00a0se\u00e7ici ifadesi null olarak de\u011ferlendirilirse, null i\u00e7in test anahtar\u0131n d\u0131\u015f\u0131nda yap\u0131lmal\u0131d\u0131r\u2026 Bu, \u015fu durumlarda makuld\u00fc:\u00a0<code>de\u011fi\u015ftirmek<\/code>\u00a0yaln\u0131zca birka\u00e7 referans t\u00fcr\u00fcn\u00fc destekledi. Ancak, e\u011fer\u00a0<code>de\u011fi\u015ftirmek<\/code>\u00a0herhangi bir t\u00fcrden se\u00e7ici ifadeye izin verir ve vaka etiketlerinin tip desenleri olabilir, o zaman ba\u011f\u0131ms\u0131z bo\u015f testi keyfi bir ayr\u0131m gibi hissettirir ve gereksiz bir genelleme ve hata f\u0131rsat\u0131 davet eder.<\/li><\/ul><p>\u00c7o\u011fu geli\u015ftiricinin, kal\u0131p e\u015fle\u015ftirmeyi denedi\u011finde bunu bulaca\u011f\u0131n\u0131 umuyorum.\u00a0<code>de\u011fi\u015ftirmek<\/code>&#039;Hayat\u0131m boyunca neredeydin&#039; diyecekler.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-241583c elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"241583c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-127bea7\" data-id=\"127bea7\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d22572f elementor-widget__width-initial elementor-widget elementor-widget-thorsten_core_single_image\" data-id=\"d22572f\" data-element_type=\"widget\" data-widget_type=\"thorsten_core_single_image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"qodef-shortcode qodef-m  qodef-single-image qodef-layout--default  qodef-si-main-appear-animation--no qodef-si-additional-appear-animation--no qodef-appear-animation--left\">\n\t<div class=\"qodef-m-image\">\n\t\t\t<img width=\"800\" height=\"883\" src=\"https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1.jpg\" class=\"attachment-full size-full\" alt=\"d\" decoding=\"async\" srcset=\"https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1.jpg 800w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1-600x662.jpg 600w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1-272x300.jpg 272w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1-768x848.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t<\/div>\n\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-b88d971\" data-id=\"b88d971\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-391f62a elementor-widget__width-initial elementor-widget elementor-widget-thorsten_core_single_image\" data-id=\"391f62a\" data-element_type=\"widget\" data-widget_type=\"thorsten_core_single_image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"qodef-shortcode qodef-m  qodef-single-image qodef-layout--default  qodef-si-main-appear-animation--no qodef-si-additional-appear-animation--no qodef-appear-animation--left\">\n\t<div class=\"qodef-m-image\">\n\t\t\t<img width=\"800\" height=\"883\" src=\"https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2.jpg\" class=\"attachment-full size-full\" alt=\"d\" decoding=\"async\" srcset=\"https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2.jpg 800w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2-600x662.jpg 600w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2-272x300.jpg 272w, https:\/\/proskillssaudi.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2-768x848.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t<\/div>\n\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6b5ba9f elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"6b5ba9f\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f69b92a\" data-id=\"f69b92a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f9e5338 elementor-widget elementor-widget-text-editor\" data-id=\"f9e5338\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2>Java 17&#039;deki di\u011fer yeni \u015feyler<\/h2><p>Java 17&#039;de ger\u00e7ek bir yeni i\u015flevsellik bereketi var. \u0130\u015fte ara\u015ft\u0131rmaya de\u011fer birka\u00e7 \u00f6\u011fe.<\/p><ul class=\"obullets\"><li>JVM d\u0131\u015f\u0131nda kod \u00e7a\u011f\u0131rmaya ve &quot;yabanc\u0131&quot; kaynaklara eri\u015fmeye yard\u0131mc\u0131 olan yabanc\u0131 i\u015flev ve bellek API&#039;si \u015fimdi kulu\u00e7kada. (G\u00f6rmek\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/412\" target=\"_blank\" rel=\"noopener\">JEP 412<\/a>.)<\/li><li>Java art\u0131k daha iyi s\u00f6zde rasgele say\u0131 \u00fcrete\u00e7lerine sahip. (G\u00f6rmek\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/356\" target=\"_blank\" rel=\"noopener\">356<\/a>.)<\/li><li>Java, onalt\u0131l\u0131k de\u011ferlerle \u00e7al\u0131\u015fmak i\u00e7in yeni yard\u0131mc\u0131 programlara sahiptir. (G\u00f6rmek\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8251989\" target=\"_blank\" rel=\"noopener\">JDK-8251989<\/a>.)<\/li><li>JDK 17&#039;deki g\u00fcvenlik anla\u015fmalar\u0131 i\u00e7in varsay\u0131lan de\u011fer TLS 1.3&#039;t\u00fcr; Java&#039;n\u0131n \u00f6nceki s\u00fcr\u00fcmleri TLS 1.2 kullan\u0131yordu. (G\u00f6rmek\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8217633\" target=\"_blank\" rel=\"noopener\">JDK-8217633<\/a>.)<\/li><li>AArm64 mimarisinde macOS&#039;a bir Java ba\u011flant\u0131 noktas\u0131 vard\u0131r. (G\u00f6rmek\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/391\" target=\"_blank\" rel=\"noopener\">391<\/a>.)<\/li><\/ul><p>A\u015fa\u011f\u0131dakiler de dahil olmak \u00fczere, kullan\u0131mdan kald\u0131rma ve kald\u0131rma i\u015flemleri de vard\u0131r:<\/p><ul class=\"obullets\"><li>Java i\u00e7 \u00f6\u011felerine harici eri\u015fim, a\u015fa\u011f\u0131daki gibi birka\u00e7 istisna d\u0131\u015f\u0131nda, kaps\u00fclleme yoluyla kald\u0131r\u0131ld\u0131.\u00a0<code>sun.misc.G\u00fcvensiz<\/code>. (G\u00f6rmek\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/403\" target=\"_blank\" rel=\"noopener\">403<\/a>.)<\/li><li>AOT ve JIT derleyicileri, HotSpot JVM&#039;den kald\u0131r\u0131ld\u0131. (G\u00f6rmek\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/410\" target=\"_blank\" rel=\"noopener\">JEP 410<\/a>.)<\/li><li>Applet API, kald\u0131r\u0131lmak \u00fczere kullan\u0131mdan kald\u0131r\u0131lm\u0131\u015ft\u0131r. (G\u00f6rmek\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/398\" target=\"_blank\" rel=\"noopener\">398<\/a>.)<\/li><li>G\u00fcvenlik Y\u00f6neticisi kald\u0131r\u0131lmak \u00fczere kullan\u0131mdan kald\u0131r\u0131lm\u0131\u015ft\u0131r. (G\u00f6rmek\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/411\" target=\"_blank\" rel=\"noopener\">JEP 411<\/a>.)<\/li><li>Kerberos&#039;taki zay\u0131f 3DES ve RC4 g\u00fcvenlik algoritmalar\u0131 kullan\u0131mdan kald\u0131r\u0131lm\u0131\u015ft\u0131r. (G\u00f6rmek\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8139348\" target=\"_blank\" rel=\"noopener\">JDK-8139348<\/a>.)<\/li><li>Soket Uygulama Fabrika Mekanizmas\u0131 kullan\u0131mdan kald\u0131r\u0131lm\u0131\u015ft\u0131r. (G\u00f6rmek\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8235139\" target=\"_blank\" rel=\"noopener\">JDK-8235139<\/a>.)<\/li><\/ul><p>Son olarak, Java 17&#039;nin mevcut revizyonunu statik bir ba\u011flant\u0131 arac\u0131l\u0131\u011f\u0131yla indirmenin yeni bir yolu var. Ge\u00e7mi\u015fte, bir JDK&#039;n\u0131n her art\u0131ml\u0131 nokta yay\u0131n s\u00fcr\u00fcm\u00fcn\u00fcn kendi URL&#039;si vard\u0131, bu da en son nokta s\u00fcr\u00fcm\u00fcn\u00fcn bir derleme komut dosyas\u0131na programl\u0131 olarak dahil edilmesini zorla\u015ft\u0131r\u0131yordu.<\/p><p>Garcia-Ribeyro, &quot;\u015eimdi size kal\u0131c\u0131 bir URL verece\u011fiz, b\u00f6ylece &#039;JDK 17&#039;nin en son s\u00fcr\u00fcm\u00fcn\u00fc edinin&#039; yazan bir komut dosyas\u0131 yazabilirsiniz,&quot; diye a\u00e7\u0131kl\u0131yor. &quot;Ne zaman derlerseniz sizin i\u00e7in JDK 17&#039;nin en son s\u00fcr\u00fcm\u00fcn\u00fc almas\u0131n\u0131 sa\u011flayacak \u00f6rnek bir Docker dosyam\u0131z bile olacak.&quot;<\/p><h2>\u00c7\u00f6z\u00fcm<\/h2><p>Bir kitab\u0131 kapa\u011f\u0131na g\u00f6re yarg\u0131layamazs\u0131n\u0131z ve bir Java s\u00fcr\u00fcm\u00fcn\u00fc JEP&#039;lerini sayarak yarg\u0131layamazs\u0131n\u0131z. Java 17&#039;deki de\u011fi\u015fiklikler Java 16&#039;ya k\u0131yasla \u00f6nemlidir ve bir LTS s\u00fcr\u00fcm\u00fc olarak Java 17 platformu Java 11 veya Java 8&#039;den \u00f6nemli bir evrim g\u00f6sterir. Eklenen dil \u00f6zellikleri, \u00e7al\u0131\u015fma zaman\u0131 geli\u015ftirmeleri, \u00f6nizlemeler ve kulu\u00e7ka makineleri ve kelimenin tam anlam\u0131yla binlerce k\u00fc\u00e7\u00fck d\u00fczeltme ile , Java 17, yeni Java platformu standard\u0131 olmaya haz\u0131r.<\/p><h2>Daha derin kaz<\/h2><ul class=\"obullets\"><li><a class=\"o-hf\" href=\"https:\/\/blogs.oracle.com\/javamagazine\/post\/java-long-term-support-lts\" target=\"_blank\" rel=\"noopener\">Uzun vadeli destek sanat\u0131 ve LTS&#039;nin Java ekosistemi i\u00e7in ne anlama geldi\u011fi<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/hidden-gems-jdk16-jdk17-jep\" target=\"_blank\" rel=\"noopener\">Java 16 ve Java 17&#039;deki gizli m\u00fccevherler<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-architects-loom-panama-valhalla\" target=\"_blank\" rel=\"noopener\">Ne in\u015fa ediyorlar - ve neden? Java mimarlar\u0131 i\u00e7in 6 soru<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/inside-the-language-sealed-types\" target=\"_blank\" rel=\"noopener\">Dilin i\u00e7inde: M\u00fch\u00fcrl\u00fc tipler<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-hotspot-jvm-switches-jdk11-jdk17\" target=\"_blank\" rel=\"noopener\">Java 11&#039;den Java 17&#039;ye kadar en iyi HotSpot JVM se\u00e7enekleri ve anahtarlar\u0131<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-runtime-encapsulation-internals\" target=\"_blank\" rel=\"noopener\">Java 17&#039;ye bir bak\u0131\u015f: Java \u00e7al\u0131\u015fma zaman\u0131 dahili \u00f6\u011felerini kaps\u00fclleme<\/a><\/li><\/ul><p>\u00a0<\/p><p>Kaynak: https:\/\/blogs.oracle.com\/post\/java-jdk-17-generally-available-v2<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Lorem ipsum dolor sit amet, deniz ei diam ocurreret. Atqui clita eu eos, ilgi \u00e7ekici vasat oturmak. Saperet commune invenire at per, ne consul eirmod scaevola ius, case scripta id vis. Reklam bo\u015falmak magna deleniti. Nihil antiopam et mei, bir deniz y\u00fcz\u00fc mnesarchum, deniz ne soluta appetere tacimates. Reklam \u00e7\u00f6z\u00fcm\u00fc, corrumpit eos. Patrioque delicatissimi ut, per veritus alienum te, nec choro soluta fabulas in. Quod sensibus est id<\/p>","protected":false},"author":1,"featured_media":17013,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[22],"_links":{"self":[{"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/posts\/6090"}],"collection":[{"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/comments?post=6090"}],"version-history":[{"count":5,"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/posts\/6090\/revisions"}],"predecessor-version":[{"id":17014,"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/posts\/6090\/revisions\/17014"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/media\/17013"}],"wp:attachment":[{"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/media?parent=6090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/categories?post=6090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/proskillssaudi.com\/tr\/wp-json\/wp\/v2\/tags?post=6090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}