ทุกสิ่งที่คุณเคยได้ยินเกี่ยวกับ Java 8 นั้นมีศูนย์กลางอยู่ที่การแสดงออกของแลมบ์ดา แต่มันเป็นเพียงส่วนหนึ่งของ Java 8 Java 8 มีคุณสมบัติใหม่มากมาย - คลาสใหม่ที่ทรงพลังและไวยากรณ์และสิ่งอื่น ๆ ที่ควรมีตั้งแต่ต้น
ฉันจะแนะนำ 10 คุณสมบัติที่จำเป็นที่ฉันคิดว่าคุ้มค่าที่จะรู้ อย่างน้อยหนึ่งหรือสองของพวกเขาก็จะอยู่ที่นั่นเพื่อให้คุณพยายามเริ่มต้นกันเลย!
1. วิธีการเริ่มต้น
คุณสมบัติที่เพิ่มขึ้นใหม่ของภาษา Java คือคุณสามารถเพิ่มวิธีการ (เรียกว่าวิธีการเริ่มต้น) ในวิธีการของอินเทอร์เฟซ วิธีการเหล่านี้จะถูกเพิ่มโดยนัยในคลาสที่ใช้อินเทอร์เฟซนี้
สิ่งนี้ช่วยให้คุณสามารถเพิ่มคุณสมบัติใหม่ให้กับไลบรารีที่มีอยู่โดยไม่ทำลายรหัสของคุณ เห็นได้ชัดว่าเป็นการปรับปรุง แต่ในทางกลับกันสิ่งนี้จะทำให้ขอบเขตระหว่างอินเทอร์เฟซและคลาสนี้ทำให้เกิดการกำหนดสัญญาในขณะที่คลาสจะใช้เพื่อกำหนดการใช้งานคอนกรีต ในด้านบวกมันทำให้อินเทอร์เฟซฉลาดขึ้นอย่างสง่างามและหลีกเลี่ยงการทำซ้ำและการขยายห้องสมุด แต่ในด้านที่ไม่ดีเราจะเห็นในภายหลังว่าวิธีอินเตอร์เฟสจะสอบถามสิ่งนี้และแปลงเป็นคลาสคอนกรีต สั่น….
2. การยกเลิกกระบวนการ
การเริ่มต้นกระบวนการภายนอกเป็นครึ่งหนึ่งของสิ่งที่คุณทำ - เมื่อกระบวนการล่มแฮงค์หรือบริโภคซีพียู 100% คุณต้องย้อนกลับและแก้ไขข้อบกพร่อง ขณะนี้คลาสกระบวนการติดตั้งสองวิธีใหม่เพื่อช่วยให้คุณควบคุมกระบวนการที่ไม่ไว้วางใจ
อย่างแรกคือ Isalive () ซึ่งช่วยให้คุณตรวจสอบว่ากระบวนการยังคงทำงานอยู่หรือไม่โดยไม่ต้องรอให้กระบวนการเสร็จสมบูรณ์ วิธีที่ทรงพลังที่สองคือการทำลายล้าง () ซึ่งช่วยให้คุณสามารถบังคับกระบวนการฆ่ากระบวนการที่หมดเวลาหรือไม่จำเป็นอีกต่อไป
3. Stampedlocks
ตอนนี้มีบางสิ่งที่น่าตื่นเต้น ไม่มีใครชอบซิงค์รหัส มันเป็นผู้ร้ายในการลดปริมาณงานของแอปพลิเคชันของคุณ (โดยเฉพาะแอปพลิเคชันที่ปรับขนาดได้) หรือทำให้แอปพลิเคชันต่างกันอย่างรุนแรง ถึงกระนั้นในบางจุดคุณไม่มีทางเลือก
มีหลายวิธีในการ จำกัด การเข้าถึงทรัพยากรที่สำคัญในลักษณะซิงโครนัสแบบมัลติเธรด สิ่งที่โด่งดังที่สุดคือล็อคอ่าน-เขียน (readwriteLock) และการใช้งานที่เกี่ยวข้อง มันลดการแข่งขันของทรัพยากรโดยอนุญาตให้หลายเธรดสามารถเข้าถึงทรัพยากรเดียวกันได้ แต่การปิดกั้นเธรดที่ใช้งานทรัพยากร สิ่งนี้ฟังดูดีในทางทฤษฎี แต่ในความเป็นจริงล็อคนี้ค่อนข้างช้าโดยเฉพาะอย่างยิ่งเมื่อมีเธรดเขียนจำนวนมาก
หมายเหตุ: Lock Read-Write แบ่งผู้เข้าชมทรัพยากรออกเป็นสองประเภท: ผู้อ่านและนักเขียน ผู้อ่านดำเนินการอ่านอย่างเดียวบนทรัพยากรและผู้เขียนสามารถใช้งานทรัพยากรได้
Java 8 แนะนำการอ่านใหม่ล่าสุดที่เรียกว่า StampedLock การล็อคนี้ไม่เพียง แต่เร็วขึ้นเท่านั้น แต่ยังมีชุดล็อคในแง่ดีซึ่งคุณสามารถรับล็อคผู้อ่านได้ในราคาขั้นต่ำและแม้กระทั่งไม่ต้องการการดำเนินการเขียนระหว่างการเลือก หลังจากการเลือกสิ้นสุดลงคุณสามารถสอบถามล็อคเพื่อดูว่ามีการดำเนินการเขียนระหว่างการเลือกซึ่งในกรณีนี้คุณสามารถเลือกได้ว่าจะลองอีกครั้งอัปเดตล็อคหรือยอมแพ้
ล็อคนี้เป็นเครื่องมือที่ทรงพลังมากและต้องการบทความพิเศษเพื่ออธิบาย ฉันตื่นเต้นมากกับสิ่งใหม่ที่ฉันเวียนหัวและทำได้ดีมาก!
สำหรับรายละเอียดเพิ่มเติมโปรดดูที่นี่
4. Adders พร้อมกัน
นี่เป็นลูกน้อยอีกตัวสำหรับผู้ที่ทำงานในแอปพลิเคชันแบบมัลติเธรด นี่เป็น API ใหม่ที่เรียบง่ายและมีประสิทธิภาพสำหรับเคาน์เตอร์แบบมัลติเธรดซึ่งเร็วกว่าการใช้ Atomicinteger เย็ดเจ๋งมาก!
5. ค่าเสริม
โอ้ตัวชี้ Null ฝันร้ายสำหรับนักพัฒนา Java ทุกคน จากจุดเริ่มต้น (หรืออย่างน้อยในปี 1965) อาจเป็นข้อยกเว้นที่ได้รับความนิยมมากที่สุด
จากสเกลและแฮชเชล Java 8 มีเทมเพลตใหม่ที่เรียกว่าตัวเลือกสำหรับการห่อหุ้มการอ้างอิงที่อาจเป็นโมฆะ มันไม่ได้เป็นกระสุนเงินที่จะยุติ NULL มันเป็นวิธีที่จะให้นักออกแบบ API ระบุจากระดับรหัส (มากกว่าระดับเอกสาร) ว่าค่า NULL อาจถูกส่งผ่านไปยังวิธีการหรือส่งคืนจากวิธีการเพื่อเตรียมผู้โทรสำหรับค่า NULL ดังนั้นสิ่งนี้สามารถทำงานได้ภายใต้ API ใหม่เท่านั้นและสมมติว่าผู้โทรไม่ปล่อยให้การอ้างอิงหลบหนีการห่อหุ้มที่เกิดขึ้นในการลดความปลอดภัยที่ไม่ปลอดภัย
ฉันต้องบอกว่าฉันขัดแย้งกับคุณสมบัตินี้มาก ในอีกด้านหนึ่งมีปัญหาใหญ่กับ Null ดังนั้นฉันจึงมักจะทำทุกอย่างให้ดีก่อนที่ Null จะเกิดขึ้น แต่ในทางกลับกันฉันสงสัยว่ามันจะประสบความสำเร็จ นี่เป็นเพราะการใช้ทางเลือกนั้นต้องใช้ความพยายามอย่างต่อเนื่องจากทั้ง บริษัท แต่ก็ไม่มีมูลค่าโดยตรง เว้นแต่ว่ามันจะเด็ดขาดก็มีแนวโน้มที่จะถูกทอดทิ้ง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกโปรดคลิกที่นี่
6. คำอธิบายประกอบอะไรก็ได้
การปรับปรุงภาษาชวาขนาดเล็กอีกครั้งคือการเพิ่มคำอธิบายประกอบในเกือบทุกอย่างในรหัสของคุณ ในอดีตคำอธิบายประกอบสามารถเพิ่มลงในการประกาศคลาสหรือวิธีการเท่านั้น คำอธิบายประกอบที่ใช้ Java 8 สามารถเพิ่มลงในตัวแปรและการประกาศพารามิเตอร์ไม่เพียง แต่เมื่อส่งผ่านค่าไปยังประเภทที่ระบุ แต่แม้เมื่อจัดสรรพื้นที่ให้กับวัตถุใหม่ นี่เป็นส่วนหนึ่งของการทำให้ภาษาชวาเป็นมิตรและมุ่งเน้นมากขึ้น (รวมถึงเครื่องมือเอกสาร Java และการปรับปรุง API) ผ่านการวิเคราะห์แบบคงที่และเครื่องมือพ่อมดเช่น FindBugs นี่เป็นคุณสมบัติที่ยอดเยี่ยม แต่มีสิ่งที่เรียกใช้มากขึ้นใน Java 7 และคุณค่าที่แท้จริงของมันคือสิ่งที่ชุมชนทำกับมัน
7. การดำเนินการล้น
ตอนนี้นี่คือชุดของวิธีการที่ควรรวมอยู่ในห้องสมุดหลักตั้งแต่เริ่มต้น หนึ่งในนิสัยที่ฉันโปรดปรานคือการดีบักล้นเมื่อ int เกิน 2^32 จากนั้นต่อไปเพื่อสร้างข้อผิดพลาดที่น่าอับอายนี้ด้วยการสุ่ม (เช่น "ฉันได้รับค่าแปลก ๆ นี้ได้อย่างไร")
ไม่มีกระสุนเงินในครั้งนี้ แต่มีชุดของฟังก์ชั่นที่ใช้งานตัวเลขที่โยนข้อยกเว้นเมื่อล้นเกิดขึ้นในลักษณะที่ทนได้มากกว่าตัวดำเนินการมาตรฐาน +/* ที่ทำให้เกิดการไหลล้น .. ถ้าเป็นฉันจะตั้งค่าเป็นโหมดเริ่มต้นของ JVM
8. การสำรวจโฟลเดอร์
เนื้อหาของต้นไม้ไดเรกทอรีที่วนซ้ำได้ปรากฏขึ้นเร็วมากในการค้นหาของ Google (ในกรณีนี้คุณอาจใช้ Apache.fileutils) Java 8
เพิ่ม 10 วิธีใหม่สำหรับไฟล์ สิ่งที่ฉันชอบคือ Walk () ซึ่งสร้างสตรีมขี้เกียจ (สำคัญสำหรับระบบไฟล์ขนาดใหญ่) เพื่อทำซ้ำ
เนื้อหาของโครงสร้างไดเรกทอรี
9. การสร้างตัวเลขสุ่มที่แข็งแกร่ง
วันนี้การพูดคุยเกี่ยวกับช่องโหว่ของรหัสผ่านและกุญแจเป็นสิ่งจำเป็น ความปลอดภัยของโปรแกรมเป็นปัญหาที่ยากและง่ายต่อการทำผิดพลาด นี่คือสิ่งที่ฉันชอบ
เหตุผลสำหรับวิธีการ securerandom.getInstancestrong () ใหม่ที่สามารถเลือกเครื่องกำเนิดหมายเลขสุ่มที่แข็งแกร่งที่สุดใน JVM โดยอัตโนมัติ มันลดลง
โอกาสของความล้มเหลวของเครื่องกำเนิดไฟฟ้าหรือเครื่องกำเนิดไฟฟ้าที่อ่อนแอจะได้รับโดยค่าเริ่มต้นส่งผลให้โอกาสที่คีย์หรือค่าการเข้ารหัสจะแตกได้ง่าย
10. Date.toinstant ()
Java 8 แนะนำ API วันที่ใหม่ล่าสุด เนื่องจาก API ที่มีอยู่ไม่ดีจึงค่อนข้างเข้าใจได้ ตอนนี้ Joda ได้มุ่งเน้นและแทรกซึมเข้าไปใน Java Date Time API เป็นเวลาหลายปี อย่างไรก็ตามถึงแม้จะมี API ใหม่ แต่ก็ยังมีปัญหาใหญ่ - มีรหัสและห้องสมุดมากมายที่ใช้ API เก่า
เราทุกคนรู้ว่ากำลังเผชิญกับปัญหานี้เราควรทำอย่างไร?
เนื่องจาก Java 8 ได้ทำค่อนข้างหรูหราวิธีการใหม่ toinstant () จึงถูกเพิ่มลงในคลาสวันที่เพื่อแปลงเป็น API ใหม่ แม้จะใช้ API วันที่เก่า (เหมือนกันสำหรับอนาคตที่คาดการณ์ได้) มันจะช่วยให้คุณสามารถอัพเกรดเป็น API ใหม่ได้อย่างรวดเร็ว
คุณคิดว่าบทความมีลักษณะอื่นที่ไม่ควรพูดถึงหรือไม่หรือคุณไม่เห็นด้วยกับการวิเคราะห์ของเรา? โปรดแสดงความคิดเห็นกับเรา - นี่คือจุดประสงค์ของการโพสต์!
ข้างต้นเป็นการรวบรวมข้อมูลเกี่ยวกับคุณสมบัติใหม่ของ Java 8 เราจะยังคงเพิ่มข้อมูลที่เกี่ยวข้องในอนาคต ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!