1. ประวัติเวอร์ชันของ Java
ประวัติศาสตร์ของ Java เริ่มต้นในปี 1991 เมื่อกลุ่มโปรแกรมเมอร์ของ Sun ตัดสินใจสร้างภาษาสำหรับอุปกรณ์ขนาดเล็ก:รีโมทคอนโทรลของทีวี เครื่องชงกาแฟ เครื่องปิ้งขนมปัง บัตรเครดิตธนาคาร และอื่นๆ
ผู้ผลิตอุปกรณ์เหล่านี้ใช้โปรเซสเซอร์ที่แตกต่างกันมากในการควบคุมผลิตภัณฑ์ของตน ดังนั้นจึงเป็นเรื่องสำคัญมากที่จะต้องเชื่อมโยงกับสถาปัตยกรรมของโปรเซสเซอร์หรือระบบปฏิบัติการเฉพาะ
ผู้สร้าง Java ตัดสินใจที่จะแบ่งปัญหาออกเป็นสองส่วน: โปรแกรมของพวกเขาจะไม่ถูกคอมไพล์ลงในรหัสเครื่องสำหรับโปรเซสเซอร์เฉพาะ แต่เป็นรหัสกลางพิเศษ ในทางกลับกัน รหัสกลางนั้นจะถูก ดำเนินการโดยโปรแกรมพิเศษที่เรียกว่าเครื่องเสมือน
โปรแกรมเมอร์ส่วนใหญ่อ้างถึงคอมพิวเตอร์ว่าเป็นเครื่องจักร
C ++ ถูกนำมาใช้เป็นพื้นฐานสำหรับภาษา Java และได้รับการทำให้ง่ายขึ้นและเป็นมาตรฐานอย่างมาก หาก C++ ให้คุณทำบางสิ่งได้ 10 วิธี Java จะคงไว้เพียงวิธีเดียว ในบางแง่ก็เหมือนกับการเปลี่ยนจากอักษรอียิปต์โบราณเป็นตัวอักษร
Java เวอร์ชันแรกเปิดตัวในปี 1996 ตั้งแต่นั้นเป็นต้นมา Java ได้เริ่มการเดินขบวนเพื่อชัยชนะไปทั่วโลก ซึ่งในทางกลับกัน กระตุ้นวิวัฒนาการและการเติบโตของภาษาเอง ปัจจุบัน ไลบรารีนับล้านและโค้ดหลายพันล้านบรรทัดเขียนด้วยภาษาจาวา และจาวาเวอร์ชันใหม่จะออกทุกๆ 6 เดือน:
ชื่อ | ปี | จำนวนชั้นเรียน |
---|---|---|
เจดีเค 1.0 | 2539 | 211 |
เจดีเค 1.1 | 2540 | 477 |
เจทูเอส 1.2 | 2541 | 1,524 |
เจทูเอส 1.3 | 2543 | 1,840 |
เจทูเอส 1.4 | 2545 | 2,723 |
J2SE 5.0 | 2547 | 3,279 |
Java SE 6 | 2549 | 3,793 |
Java SE 7 | 2554 | 4,024 |
Java SE 8 | 2557 | 4,240 |
Java SE 9 | 2560 | 6,005 |
จาวา เอสอี 10 | 2561 | 6,002 |
จาวา เอสอี 11 | 2561 | 4,411 |
จาวา เอสอี 12 | 2019 | 4,433 |
จาวา เอสอี 13 | 2019 | 4,515 |
แม้ว่าเวอร์ชันของ Java จะถูกปล่อยออกมาเป็นประจำ แต่ก็ไม่ได้มีความสำคัญเท่ากันทั้งหมดสำหรับโปรแกรมเมอร์: Java มีการพัฒนาอย่างพอดีและเริ่มต้น
2. จาวา 2
การก้าวกระโดดครั้งใหญ่ครั้งแรกเกิดขึ้นกับการเปิดตัว JDK 1.2 มีนวัตกรรมมากมายที่นั่น จนผู้สร้าง Java เปลี่ยนชื่อเป็นJava 2 Platform Standard Editionหรือเรียกสั้นๆ ว่า J2SE 1.2
นวัตกรรมหลักคือ:
strictfp
คำสำคัญ- ไลบรารี Swing สำหรับการทำงานกับกราฟิก
- คอมไพเลอร์ JIT ซึ่งเร่งการทำงานของโปรแกรม Java
- ชุดสะสมขนาดใหญ่
- รองรับ Unicode เต็มรูปแบบ: ญี่ปุ่น จีน และเกาหลี
ปัจจุบัน นวัตกรรมเหล่านี้ดูเหมือนจะไม่ใหญ่โตนัก แต่โครงการขนาดใหญ่ทุกโครงการเติบโตมาจากโครงการเล็กๆ Java จะไม่ได้รับความนิยมในทุกวันนี้ หากโปรแกรมเมอร์กลุ่มเล็กๆ ไม่ปรับปรุงภาษาเมื่อ 20 ปีที่แล้ว
3. จาวา 5
JDK 1.5 เปิดตัวในเดือนกันยายน พ.ศ. 2547 นอกจากนี้ยังนำเสนอนวัตกรรมมากมาย ดังนั้นจึงอดไม่ได้ที่จะตั้งชื่อใหม่: แทนที่จะเป็นเวอร์ชัน 1.5, 1.6 และ 1.7 พวกเขาตัดสินใจใช้ 5.0, 6.0 และ 7.0 ดังนั้น ชื่อเต็มของ JDK 1.5 คือJava 2 Standard Edition 5.0
การอัปเดตนี้รวมถึงสิ่งต่าง ๆ ที่ไม่สามารถพัฒนาภาษาต่อไปได้
คำอธิบายประกอบ เฟรมเวิร์กหลักสมัยใหม่ครึ่งหนึ่งสร้างขึ้นจากคำอธิบายประกอบ ตั้งแต่ Spring และ Hibernate ไปจนถึง JUnit
ยาสามัญ Generics ได้นำพลังของคอลเลกชัน (และอื่นๆ อีกมากมาย) ไปสู่อีกขั้น รหัสมีความเรียบง่าย กะทัดรัด และปลอดภัยยิ่งขึ้น
Autoboxing/unboxingเป็นการแปลงระหว่างประเภทดั้งเดิมและประเภท wrapper โดยอัตโนมัติ ทำให้ง่ายต่อการเขียนและอ่านโค้ด และทำให้คอลเลกชั่นได้รับความนิยมมากขึ้น
ตอนนี้ ลูforeach
ปคิดเป็นอย่างน้อยครึ่งหนึ่งของลูปทั้งหมดที่โปรแกรมเมอร์เขียน และแน่นอนว่าเป็นสิ่งที่ขาดไม่ได้เมื่อทำงานกับคอลเลกชัน
enum เป็นอีกหนึ่งคุณสมบัติใหม่ ที่ดี ช่วยให้หลายสิ่งหลายอย่างง่ายขึ้นอย่างสวยงาม
สิ่งเหล่านี้ไม่ใช่นวัตกรรมทั้งหมด: มีการเพิ่มคลาสใหม่หลายร้อยคลาส สิ่งสำคัญคือพวกเขาเป็นนวัตกรรมที่ถูกต้องและช่วยเพิ่มความนิยมให้กับ Java
4. จาวา 6
Java 6 เป็นที่จดจำสำหรับการปรับปรุงเล็กน้อยจำนวนมากและการละทิ้งหมายเลข 2 ในชื่อ: ไม่ใช่ "Java 2 Standard Edition 6.0" อีกต่อไป แต่เป็นเพียง "Java Standard Edition 6.0"
นี่คือบางส่วนของนวัตกรรมที่น่าสนใจ:
Java Compiler APIทำให้สามารถเรียกJava compilerได้โดยตรงจากโค้ด นั่นหมายความว่าตอนนี้โปรแกรมของคุณสามารถสร้างข้อความที่แสดงรหัสคลาส คอมไพล์โดยการเรียกเมธอดของJava Compiler APIแล้วเริ่มเรียกเมธอดของคลาสที่คอมไพล์แล้วทันที มีหลายด้านของการพัฒนาที่ความสามารถนี้ทำให้ชีวิตง่ายขึ้นอย่างมาก
เป็นไปได้ที่จะเรียกใช้งานJavaScriptได้โดยตรงภายในโปรแกรม Java คุณลักษณะนี้ปรากฏขึ้นเนื่องจาก JavaSE 6 รวมเอ็นจิ้น Rhino JavaScript
5. จาวา 7
Java 7 เปิดตัวในเดือนกรกฎาคม 2554 ควรมีการปรับปรุงหลายอย่าง แต่โปรแกรมเมอร์สามารถเพิ่มส่วนเล็ก ๆ ของสิ่งที่วางแผนไว้เท่านั้น โดยเฉพาะอย่างยิ่ง พวกเขาเพิ่มสิ่งต่าง ๆ เช่น:
ไลบรารีใหม่สำหรับการทำงานกับข้อมูลเข้าและออก เรียกว่าNew Input Output APIซึ่งอยู่ในjava.nio
แพ็คเกจ
การอนุมานประเภทอัตโนมัติของ Java คอมไพเลอร์ณ เวลาคอมไพล์ทำให้โปรแกรมเมอร์เขียนโค้ดน้อยลง คอมไพเลอร์ฉลาดขึ้น และนั่นเป็นเพียงจุดเริ่มต้น
คำสั่ง switch ได้รับความสามารถในการใช้สตริงเป็นค่าตัวพิมพ์
การจัดการทรัพยากรอัตโนมัติยังได้รับการปรับปรุงอย่างมีนัยสำคัญ: ด้วยtry-with-resources
โครงสร้างนี้ โปรแกรม Java สามารถปิดสตรีมข้อมูลให้คุณเมื่อไม่ต้องการอีกต่อไป
มีการเปลี่ยนแปลงอื่นๆ อีกมากมาย แต่สิ่งเหล่านี้ไม่สำคัญนักในขั้นตอนปัจจุบันของการเรียนรู้ Java
6. ชวา 8
Java 8 ออกมาในเดือนมีนาคม 2014 และเป็นการอัปเดตล่าสุดที่แข็งแกร่งที่สุดของ Java
เหนือสิ่งอื่นใด โปรแกรมเมอร์จำมันได้จากการเพิ่มการแสดงออกของแลมบ์ดาและส่วนต่อประสานการทำงาน ( @FunctionalInterface
คำอธิบายประกอบ) เราจะตรวจสอบที่ระดับ 21 รหัสของคุณจะไม่เหมือนเดิมอีกต่อไป
นอกจากนี้ยังมีการเพิ่มสตรีมสำหรับคอลเล็กชัน ซึ่งเมื่อใช้ร่วมกับแลมบ์ดานิพจน์ ทำให้สามารถเขียนโค้ดได้กระชับมากขึ้น แม้ว่าจะไม่สามารถอ่านได้มากขึ้นเสมอไป
และการเปลี่ยนแปลงครั้งใหญ่ครั้งที่สามคือการเปิด ตัวAPI ใหม่ทั้งหมดของ Java 8 สำหรับการทำงานกับวันที่และเวลา — Date Time API เราจะศึกษามันในอนาคตอันใกล้นี้
7. ชวา 9
Java 9 เปิดตัวในเดือนกันยายน 2017 นับจากนั้น ผู้สร้าง Java ได้ตัดสินใจที่จะออกเวอร์ชันใหม่ให้บ่อยขึ้น — ทุก ๆ หกเดือน พวกเขาอาจประทับใจในแนวทางที่นักพัฒนาเบราว์เซอร์ Google Chrome นำมาใช้
การเปิดตัว Java 9 มุ่งเน้นไปที่ส่วนภายในของเครื่อง Java สิ่งที่สำคัญที่สุดสำหรับโปรแกรมเมอร์ทั่วไปคือความสามารถในการแบ่งโปรแกรมออกเป็นโมดูล สิ่งนี้สะดวกมากเมื่อคุณมีคลาสหลายหมื่นคลาสหรือเมื่อโค้ดของคุณยกเลิกการโหลดปลั๊กอินแบบไดนามิก
แต่มันอาจจะมีประโยชน์เพียงเล็กน้อยสำหรับเราในอนาคตอันใกล้นี้
8. ชวา 11
หกเดือนหลังจากการเปิดตัว Java 9, Java 10 ก็ออกมา และอีกหกเดือนต่อมา Java 11 ก็ออกมา
มีการปรับปรุงเล็กๆ น้อยๆ มากมายในช่วงเวลานี้ แต่ส่วนใหญ่แล้วคุณจะจำได้เพียงสองอย่าง:
เพิ่มการรองรับ Unicode 10ตอนนี้คุณสามารถใช้อีโมจิในโปรแกรม Java ของคุณได้แล้ว คุณสามารถทำงานกับพวกเขาในลักษณะเดียวกับที่คุณทำงานกับประเภทบูลีน:
การอนุมานประเภทได้รับการปรับปรุง และvar
คำหลักที่คุณแน่ใจว่าชอบก็ปรากฏขึ้น
ตอนนี้คุณสามารถเขียนสิ่งต่อไปนี้:
var str = "Hello";
และคอมไพเลอร์แปลงสิ่งนี้เป็น:
String str = "Hello";
แต่ก็ยังมีการสูญเสียอยู่บ้าง ผู้สร้างของ Java ลดไลบรารีเช่น JavaFX, Java EE และ CORBA จาก JDK 11
9. ความสำคัญของความเข้ากันได้
เมื่อมีการเปิดตัวเวอร์ชันใหม่ โปรแกรมเมอร์มักต้องการเริ่มต้นจากศูนย์ ท้ายที่สุด ใครจะอยากแก้ไขบั๊กเก่า ๆ มากมาย เมื่อพวกเขาแน่ใจแล้วว่าควรเขียนโค้ดอย่างไรตั้งแต่เริ่มต้น
แต่ประวัติศาสตร์ไม่สนับสนุนแนวทางดังกล่าว ทุกครั้งที่โปรแกรมเมอร์ออกเวอร์ชันใหม่ของโปรแกรม ผู้ใช้ 90% กำลังใช้เวอร์ชันเก่า พวกเขาสามารถใช้หรือเพิกเฉยต่อคุณลักษณะใหม่ของโปรแกรม แต่สิ่งที่ผู้ใช้เกลียดก็คือเมื่อสิ่งที่เคยทำงานได้ดีหยุดทำงาน
ผลิตภัณฑ์ที่ยอดเยี่ยมจำนวนมากเสียชีวิตเมื่อโปรแกรมเมอร์ออกเวอร์ชันใหม่ที่ไม่เข้ากัน หรือเมื่อพวกเขาทำการเปลี่ยนแปลงครั้งใหญ่ ตัวอย่างเช่น แนวคิดในการละทิ้งปุ่ม Start ใน Windows 8 นั้นไม่ดึงดูดใจผู้ใช้ การเปิดตัว Windows 10 ทำให้กลับมาครึ่งหนึ่งของสิ่งที่ถูกลบใน Window 8
ยิ่งไปกว่านั้น Windows ยังให้คุณรันโปรแกรมที่เขียนขึ้นเมื่อ 20 ปีที่แล้วสำหรับ Windows 95 หรือแม้แต่เขียนเมื่อ 30 ปีที่แล้วสำหรับ MS DOS 3.0 — พวกมันจะทำงานได้ นี่เป็นหนึ่งในเหตุผลที่ Windows ยังคงเป็นที่นิยม
และจาวาจะไม่ได้รับความนิยมเท่าที่ควรหากนักพัฒนาไม่สนใจเรื่องความเข้ากันได้ เมื่อใดก็ตามที่มีเวอร์ชันใหม่ของเครื่อง Java, SDK เวอร์ชันใหม่ หรือการเปลี่ยนแปลงที่สำคัญในคลาสโค้ด Java ทั้งหมดที่เขียนตั้งแต่เดือนมกราคม 1996 จะยังคงทำงานต่อไป
โดยปกติจะทำได้โดยการเพิ่มเมธอด คลาส และแพ็คเกจใหม่เท่านั้น โดยไม่ต้องลบสิ่งใดออก วิธีการนี้มีข้อดีและข้อเสีย
ในแง่หนึ่ง Java ลากกระเป๋าจำนวนมากไปรอบ ๆ ในรูปแบบของรหัสเก่าที่ไม่เหมาะสมและไม่จำเป็น ในทางกลับกัน โปรเจ็กต์ของคุณที่เขียนด้วย Java 11 สามารถใช้ไลบรารีที่เขียนด้วย Java 8 ที่ใช้ไลบรารีที่เขียนด้วย Java 5 และ Java 2 ได้เสมอ โค้ดผสมนี้จะทำงานได้ดี
ด้วยภาษา C++ ไลบรารีที่คอมไพล์สำหรับทั้งแพลตฟอร์ม 32 บิตและ 64 บิตไม่สามารถใช้ในโครงการเดียวกันได้ และคุณจะต้องปวดหัวอย่างมากหากจู่ๆ คุณพบว่าchar
ประเภทที่ใช้ในไลบรารีหนึ่งใช้หนึ่งไบต์ ในขณะที่อีกประเภทหนึ่งใช้สองไบต์
10. เลิกใช้แล้ว
ดังนั้น ผู้สร้างของ Java จึงตัดสินใจที่จะไม่ลบสิ่งใดออก แต่จะเพิ่มคลาสและแพ็คเกจใหม่เท่านั้น แต่พวกเขาจะบอกโปรแกรมเมอร์ได้อย่างไรว่ามีทางเลือกใหม่ที่คู่ควรกับโซลูชันที่ไม่เหมาะสมที่มีอยู่
เมื่อต้องการทำสิ่งนี้ พวกเขามาพร้อมกับ@Deprecated
คำอธิบายประกอบ
หากเลิกใช้บางเมธอดหรือคลาส คำอธิบายประกอบนี้จะถูกเพิ่มถัดจากการประกาศ หมายความว่าโปรแกรมเมอร์ไม่ควรใช้รหัส
คุณยังสามารถใช้คลาสหรือเมธอดที่เลิกใช้แล้วได้ แต่ไม่แนะนำ
และผู้คนมักทำในสิ่งที่ไม่ได้รับคำแนะนำบ่อยแค่ไหน? เกือบตลอดเวลา 🙂
คลาสหลายคลาสเลิกใช้แล้วเป็นเวลา 20 ปี — คลาสเหล่านี้ถูกใช้และยังคงใช้อยู่ คนคุ้นเคยกับพวกเขาหรือพวกเขาสะดวก แต่มีความเสี่ยงที่จะถูกลบออกในบางจุด ดังนั้นจึงเป็นการดีกว่าที่จะไม่ใช้มัน
IDE ที่ทันสมัยทั้งหมด รวมถึง IntelliJ IDEA สามารถจัดการ@Deprecated
คำอธิบายประกอบได้ ชื่อของคลาสและเมธอดที่เลิกใช้แล้วจะแสดงโดยใช้การจัดรูปแบบขีดทับ สิ่งนี้:
Date date = new Date();
int day = date.getDay();
คลาสที่เลิกใช้แล้วเป็นที่นิยมมากและมักพบในโค้ด ดังนั้นเราจะดูบางคลาสในเร็วๆ นี้