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();

คลาสที่เลิกใช้แล้วเป็นที่นิยมมากและมักพบในโค้ด ดังนั้นเราจะดูบางคลาสในเร็วๆ นี้