Delphi Tip ระหว่าง FireMonkey กับ VCL ต่างกันอย่างไร?
มีน้องๆ ถามมาว่า ใช้ Delphi XE แล้วใช้ FireMonkey กับตัว VCL มันดียังไง หรืออันไหนดีกว่ากัน ? แล้วตัว Delphi มีเวอชันอะไรบ้างครับ ดูเวอชั่นมันกระโดดไป มา เขานับยังไงกัน ?
ผมก็ตอบไปสั้นๆว่า ดีทั้ง 2 อย่าง แต่เลือกให้เหมาะสมกับงานที่จะทำ (สั้นไปไหม)
อ้า…มาหาเหตุผล และที่มาที่ไปกันละกันนะครับ จะได้เข้าใจ
ระหว่าง VCL (Visual Component Library) ถูกพัฒนามาเรื่อยๆ นับแต่เวอชั่นแรกๆ ยังเป็น Turbo Pascal 4.0 ไล่มาจน มี delphi 1 2 3 4 5 – 6 – 7 >>> จนมาถึง Delphi 10.2.3 Tokyo ตัว VCL ก็ถูกพัฒนามาเรื่อยๆ
VCL จะยังคงไม่เลิกใช้ง่าย ๆ ตราบที่ยังใช้ windows และ api ของ window จะยังใช้ VCL เพราะจนถึง window 10 ทาง Microsoft ยังบอกไว้ว่า “VCL เป็น ไลบรารีที่ดีที่สุด สำหรับการพัฒนาเดสก์ท๊อปของ window เพราะครอบคลุม window 10 เต็มรูปแบบ” อันนี้ผมแปลมาอีกทีครับ
VCL ได้รับคอมโพเนนต์คุณลักษณะที่แก้ไขข้อบกพร่องใหม่ๆ เรื่อยๆ แต่อาจจะไม่บ่อยเท่า FireMonkey เพราะเหตุผลคือ VCL เป็นเฟรมเวิก ที่มีกลุ่มผู้ใช้เยอะและใช้กันมายาวนาน (อายุมากนั้นเอง) ในขณะที่ FireMonkey มีการเติบโตคือพัฒนาเร็วมาก ในช่วง 2 – 3 ปีมานี้นะครับ (โดยความเสถียรภาพ ประสิทธิภาพดีมากขึ้น และผู้ใช้งานมากขึ้นด้วยเช่นกัน)
ดังนั้นอันไหนดี เหมาะก็เลือกใช้เอาครับ ไม่จำกัดว่าอันไหนดีกว่ากัน นะครับ แต่บอกข้อเปรียบเทียบได้ ลองมาดูข้อเปรียบเทียบ ดูละกันนะครับ
VCL (Visual Component Library)
ได้รับการเผยแพร่พร้อมกับ Delphi เวอชันแรกๆ คือ delphi 1 โดยใช้ GDI, Windows Handles และ Windows Messages ที่มีลักษณะการทำงานเช่นเดียวกันกับ โปรแกรมประยุกต์ของ window เช่น wordpad , notepad, และแอพพลิเคชันอื่นๆ ของ window กล่าวได้ว่า VCL มีคุณภาพสูงในการควบคุมและไลบรารีมีมากมายให้เลือก เช่น ปุ่ม (Button, Text, Memo,Grid…..อื่นๆ) โดยเฉพาะ Grid จะเป็นตัวที่ทำงานดีที่สุดหากอยู่บน VCL ณ ตอนนี้ครับ
VCL นั้นส่วนใหญ่ใช้ wrapper บน windows api ทำให้แอพพลิเคชันที่ใช้ VCL มีขนาดเล็กกว่าแอพพลิเคชันบน FireMonkey ทำให้พกพาไปง่ายและสะดวก ไม่กินพื้นที่นั้นเอง
และ VCL มีคุณลักษณะพิเศษคือ สามารถเรียกใช้ ยูทิลิตีเช่น Mida Converter เพื่อแปลงเป็น FireMonkey ได้ หรือ Monkey Mixer หรือ TfirmonkeyContainer เพื่อรวม FireMonkey กับ VCL เข้ามาทำงานร่วมกันได้ (อันนี้ยกตัวอย่างเช่น convert จาก window app ไปยัง Linux APP หรือ ส่งออกไปยัง Mobile App ก็ได้เช่นกัน
มาดูส่วนของ FMX (FireMonkey Cross Platform Framework ) กันบ้างครับ
เรียกสั้นๆว่า FMX นะครับ เป็นรูปแบบใหม่ที่ได้รับความนิยม เพราะทำงานครอบคลุมได้หลาย อินเทอร์เฟซ เช่น windows, iOS, macOS, และ Android แต่นั้นไม่ใช่เหตุผลเดียวที่จะใช้ FireMonkey นะครับ
ตัว FireMonkey มีโครงสร้างเป็น GPU ที่มี DriectX for Windows และ OpenGL สนับสนุนอยู่ เป็นแบบจำลองการแสดงผลแบบ 3 มิติและ 2มิติ ซึ่งมีประสิทธิภาพในการเร่งฮาร์ดแวร์ ทำงานเร็ว และมีการแสดงผลกราฟิกที่ยอดเยี่ยม
FireMonkey มีความยืดหยุ่นมาก คุณสามารถฝังตัวควบคุมใดๆ ลงไปด้วยกับ FireMonkey จะเปลี่ยนชุดคำสั่งเล็กลงไปเป็นชุดควบคุมที่มีประสิทธิภาพมากขึ้น ยังมีเอฟเฟ็กต์ที่ช่วยให้คุณสามารถสร้างอินเทอร์เฟซที่ง่ายและสะดวกมากขึ้น
เปลี่ยนเหมือน VCL เป็นตู้คอนเทนเนอร์ที่มีความแน่นอน มั่นคง แต่ FireMonkey มีความหลากหลายของรูปแบบและความยืดหยุ่นที่มากกว่า มี จุดความละเอียดของ subpixel รองรับความหนาแน่นของพิกเซลที่มากขึ้น เลยเหมาะสำหรับอุปกรณ์บนมือถือ เป็นอย่างดี
FireMonkey ถ้าคุณวางแผนจะทำแอพพลิเคชัน ทุกๆ แพลตฟอร์ม และ UI ที่ยืดหยุ่น ให้เลือกใช้ FireMonkey นะครับ (พอๆ ยาวไปแล้ว)
ข้อสรุป
VCL ยังเป็นที่น่าสนใจต่อไป ในตัว Window Desktop ในกลุ่มผู้ใช้งานบน Window เท่านั้น ส่วนกลุ่มผู้ใช้บน มือถือ Mobile ก็เลือกใช้ FireMonkey ที่มีความยืดหยุ่น รองรับ 3D และ Multiplatform ทุกแพลตฟอร์ม
อธิบายสะยาวเลย หวังว่าจะเข้าใจนะครับ หาภาพประกอบยากหน่อย เพราะไม่มีใครเขาจะมาอธิบายให้อ่านกัน ผมก็แปลมาจากเว็บ embarcadero.com อีกทีนะครับ หากผิดพลาดประการใดก็ขออภัย ด้วย
ก็หวังว่าจะเป็นประโยชน์สำหรับน้องๆ ที่กำลังฝึกใช้งาน Delphi เพื่อสร้าง นวัตกรรม ให้กับองค์กร ของน้องๆ นะครับ
ขอบคุณที่ติดตาม หากบทความนี้ท่านชอบ ก็ฝากแชร์ กด Like ด้วยนะครับ เป็นกำลังใจให้ผมอย่างดีเลยครับ