ข่าวสาร Mono หายไปจากบล็อกนอนซักพักแล้ว พอผมกลับไปดูก็พบว่ามันมีอะไรเพิ่มมาไม่น้อย เลยอยากจะรวบรวมหัวข้อที่ผมว่าน่าสนใจมาลิสท์ไว้ให้ดูครับ
สำหรับคนที่ไม่รู้จัก
Mono คือ Application Framework ตัวหนึ่ง ซึ่ง Clone .Net Framework ของ Microsoft ให้ไปใช้บน Platform อื่นๆได้ โดยมีเป้าหมายหลักคือให้ใช้ ภาษา C# และ Managed Application บน Linux และ MacOS รวมถึงการเชื่อมต่อ Library ที่ทำให้นำเอาโปรแกรมที่ทำงานอยู่บน .NET มาเปิดใช้งานในระบบที่ Install Mono ไว้ ได้โดยตรง
(เสริม : Application Framework คือโปรแกรมที่ทำงานคล้ายกับ Java Runtime แต่ Run อยู่บนระบบของ OS ครับ)
เป็นโปรเจคต์ที่ออกมานานแล้ว แม้ว่ามีคนสนใจใช้งานไม่มากนัก แต่ก็นิยมในบางที่ (เช่น เยอรมัน)
ตอนนี้มีการพอร์ทไปลงหลายที่มากกว่าแค่ MacOSX และ Linux รวมถึง Console และ Mobile จำนวนหนึ่งอีกด้วย
จากนี้จะเป็น List หัวข้อที่น่าสนใจนะครับ
Java InterOp
อันนี้เป็นตัวช่วยที่ให้ชาว Java สามารถทดสอบความสามารถของ Mono ได้ และย้ายมาใช้ Library บน Mono แทนในอนาคต
มีโปรแกรมเอา Bytecode ของ Java มาแปลงร่างเป็น CIL สำหรับ Mono ได้ หรือจะสั่งให้รัน .jar ด้วย Mono Runtime ตรงๆ ก็ได้ครับ (เป็น Shell Command สั่งด้วย Terminal)
Platform Supported
- LINUX (และ Mac OSX) BSD และ Solaris เป็นตัวยืนพื้น
- Wii : Official Port แล้ว สำหรับ Developer ก็คือเขียนเกมลง Wii ด้วย C# โดยตรงได้ครับ ขอ License และ API จาก Nintendo ได้
- PlayStation3 : ได้เฉพาะ LINUX ใน PS3 ครับ
- Native Runtime สำหรับ PS3 ยังทำอยู่แต่ยังไม่มีกำหนดเสร็จ
- Monotouch
- iPhone / iPod Touch / iPad : JailBreak กันเองนะขะรับ :D
- Android : Port เรียบร้อยแล้ว ใช้ได้แล้ว
- ยังมี Flame War กับ Dalvik และผมยังไม่เห็น Official Comment จาก Google
- และ Windows (แต่ไม่มีใครใช้ เขาใช้ .NET กัน...)
แน่นอนว่ามี CPU Architecture ที่ซัพพอร์ตหลายตัวครับ (ถึงได้ใช้ได้บน Wii และ PS3)
ดูรายละเอียดได้ในหน้าเพจ Supported Platform ครับ
.NET Compatible
- C# Version 3.0
- Support Generic และ WinForm ตั้งแต่ Version 2.0
- ยังมีปัญหาใช้ภาษาที่เขียน Right to Left ไม่ได้
- LINQ to Object และกำลังทำ LINQ to SQL
- ASP.NET 3.5
- ADO.NET 2.0
เสริม
- ObjectiveC# และ Cocoa# (เข้าใจว่าเป็น Wrapper)
- GTK# และ GLGTK# (Integrate OpenGL ผูกกับ GTK)
- Unity Engine ใช้ Mono ในการ Compile สคริปต์ และมี API สำหรับ C#
- Tools ส่วนใหญ่ เขียนด้วย C# on Mono ด้วย เกมที่ออกมาจาก Unity หลาย Platform ก็รันบน Mono
- Novell โม้ว่า ใน iPhone store มี App ที่เขียนด้วย C# แล้วใช้ AOT Compiler แล้วผ่าน Approve ของ Apple แล้วกว่า 500 ตัว ,uหลายตัวก็เกิดจาก Unity
- เกมแรกบน Wii ออกเมื่อต้นปีที่แล้ว
ที่มา :
Mono Project
ผู้พัฒนา AndroidMono
ความเห็นส่วนตัว : อยากให้มีคนมาใช้ C# กันเยอะๆ ผมว่าอนาคต Mono ดูสดใส
ถ้ามีตรงไหนที่ผิดพลาดต้องขอโทษล่วงหน้าด้วยนะครับ อาจจะหาข้อมูลไม่แน่นพอ
Comments
MONO หรือ Mono
มันไม่สอดคล้องกันอะครับ
คืออย่างแรก เพราะผมไม่แน่ใจเรื่องเวลาและ Version น่ะครับ
และก็คือ อย่าง บางแพลทฟอร์มก็ลงตั้งนานแล้ว แต่มันไม่เป็นข่าว
ผมเลยคิดว่าน่าจะลิสท์ให้ครบไปเลยว่า "ตอนนี้มันทำอะไรได้บ้างแล้ว" ทั้งหมดทีเดียว
น่ะครับ
คือผมอ่าน ณ ตอนนี้แล้ว มันยังเป็นเหมือน specsheet ของ Mono มากกว่าการ "เล่าเรื่อง" น่ะครับ (ซึ่งเป็นพื้นฐานของวิชาวารสารศาสตร์ ถามคุณ blitz ได้ เรียนมาโดยตรง)
อยากให้เรื่องที่เล่ามันมีประเด็นมากกว่านี้หน่อย เช่น Mono มีฟีเจอร์ xyz มันดีอย่างไร (เช่น ดีตรงใหม่ ดีตรงเร็ว ดีตรงทำอะไรได้มาก) หรือ ทำไมควรใช้ Mono
สองหัวข้อแรก แก้(คิดว่าหมด)แล้วครับ
ตรงนี้อ่านแล้วไม่เข้าใจครับ - -'
อ่าน ๆ ไป ผมว่ามันไปในทางโฆษณา/ประชาสัมพันธ์ มากกว่าจะเป็นข่าว (ซึ่งก็ไม่ใช่เรื่องไม่ดีนะครับ) แต่ยังอ่านไม่รู้เรื่องครับ ขอความกรุณาช่วยขัดเกลาอีกสักหน่อยก็แล้วกันนะครับ
ปล. พูดถึงอนาคต ผมกลับมองไปที่ภาษา Script เต็มรูปแบบอย่าง Python, Lua, Ruby หรือพวก F# อะไรไปแล้วแฮะ จริง ๆ
ปลล. สำหรับ Android ที่มี Flamewar กันก็คงด้วยเหตุผลที่ว่า Android รันบน Dalvik VM อยู่แล้ว จะให้รันผ่าน Mono อีกชั้นมันดูแย่ไปนิด (มี Compatitbility Layer ตั้งสองชั้น แค่ชั้นเดียวก็มีคนยี้อยู่แลว) ในอนาคตอาจจะมีคนเขียน Compiler ให้คอมไพล์ C# หรือภาษาอื่น ๆ ไปเป็น Dalvik มากกว่า (ซึ่งน่าจะไปแต่ตัวภาษากับ Lib นิดหน่อย) ไม่มั่นใจว่าพวก JRuby สามารถคอมไพล์ไปเป็น Dalvik ได้หรือยังนะครับ
อ่า ตรงนั้นเผอิญกดผิด ไป Submit ตอนยังเขียนค้างอยู่น่ะครับ
แก้แล้วครับ
มันเกิด Flame War เพราะมีคนอยากให้ Mono เป็น Native แทน Dalvik น่ะครับ
เพราะตัว Mono ก็เปิด Java ได้เหมือนกัน
หรือบางคน(รวมถึงผม) ก็อยากให้มันมีทั้งสองตัวนะ
จะพยายามเกลาดูครับ
ถ้าเอามาแทน Dalvik นี่เรื่องใหญ่แน่นอน ไหนจะต้องปรับ Mono ให้เข้ากับ HW อีก ไหนจะต้องพอร์ท App ใหม่อีก ไหนจะเทสต์อีก ไหนจะไอ้โน่นไอ้นี่อีก
เอา C# มารันบน Dalvik Platform ไปเลยอาจจะง่ายกว่า ก็แค่เขียน tool ที่แปลงจาก .Net Bytecode (เอ่อ Immediate Assembly หรืออะไรสักอย่าง) มาเป็น dex เหมือนอย่างที่ทำกับโค๊ด Java ก็พอละ
สิ่งนึงที่ต้องคำนึงก็คือ Android ไม่ได้มีชุดคลาสของ Java Platform ทั้งชุด (มีบางส่วนเป็นพื้นฐาน) และคิดว่า ถ้าจะเอา C# มาก็ไม่ควรที่จะมี .Net ครบทั้งชุดเหมือนกัน คนที่อยากจะรัน Winform บนมือถือคงจะเพี้ยนน่าดู
เดาไว้เลยว่า มีความเป็นไปได้ แต่ไม่ใช่ภายใน 5ปี แน่นอน :-) ถ้าเอาขั้นใช้แทน ถ้าแค่เอารันเคียงข้างกัน ก็ยังพอเป็นไปได้ เดา่ว่าสักสามปี ...
ถ้าเอาเร็วที่สุด ... ก็ให้ Novell ออก Platform มือถือใหม่ไปเลยครับ 555
เดี๋ยวมีคนไม่พอใจ Android ก็ออกแพลตฟอร์มใหม่ออกมาเอง หรือจะทำเองก็ได้ ส่วนผมเขียน Java ได้คล่องพอ ๆ กับ C# อยู่แล้วเลยไม่เดือดร้อนอะไรนัก (C# เป็นภาษาที่ซับซ้อนกว่าอยู่แล้วด้วย จริง ๆ แล้ว)
จริงๆ ก็มี MonoTouch ไงครับ แต่โดนแบนตาม Flash ไปด้วย :P
*นอกเรื่อง อ่านงานเขียนข่าวของคุณ Thaina สบายใจกว่าอ่านใน comment เดือดๆ
ไม่ได้ anti นะครับแต่ข่าวแบบนี้ไม่มีอารมณ์มา + เลยอ่านแล้วสบายใจ ฮาๆ ;D
my blog
เป็นแนวทางของ Blognone ครับ ว่าต้องเขียนข่าวโดยมีอคติให้น้อยที่สุดเท่าที่จะทำได้ และต้องแยก Fact กับความคิดเห็นให้ชัดเจน และเป็นไปได้ไม่ควรใส่ความเห็นลงในเนื้อข่าว(โดยเฉพาะเชิงลบ)
ผมก็พยายามทำตามนั้นครับ อาจผิดพลาดไปบ้าง
แต่ในคอมเมนท์เปิดให้ใส่เต็มที่ ผมก็เต็มที่กับชีวิตไปน่ะครับ
(ลบๆ)
ลายเซ็นยาวเกินไปครับ
เวลาคอมเม้นท์ บางทีก็ต้องใช้สำนวนที่มันนิ่มนวลหน่อยนะครับ บางทีอ่านแล้วตาแทบจะหลุดจากเบ้า
คือบางครั้งเวลาเราเขียนอะไร เราใส่ความไม่ชอบ ไม่พอใจ หรืออะไรก็แล้วแต่ ที่จะเีรียกรวม ๆ ว่าอคติก็คงได้ ลงไปในสิ่งที่เราเขียน คนที่รับกรรมคือคนที่อ่านสิ่งที่เราเขียนครับ เพราะเขาต้องรับเอาความไม่ชอบ ไม่พอใจ ของคุณเวลาที่อ่าน
เช่น สมมติ ผมเขียนด่าบุคคลที่สามคนหนึ่ง ไอ้คนคนนั้นเขาไม่ได้รับรู้อะไร แต่คนที่อ่านกลับมาเป็นคนที่ถูกด่าอ้อม ๆ ไปซะงั้น อะไรทำนองเนี้ยะ (อธิบายไม่ถูก)
เวลาทำอะไรต้องคิดถึงคนรอบข้าง สิ่งแวดล้อม และสังคม ด้วยน่ะครับ ผมคิดอย่างนี้นะ
ในไทยพอจะมี Host ที่รองรับ Mono รึเปล่าครับ
เคยจะลองเอามาใช้งานดู โปรเจคที่จะต้องรันดันมี Crystal Report ด้วย ดับเลย
| Mono คือ Virtual Machine คล้ายกับ Java Runtime ซึ่งโคลน .Net Framework ของ Microsoft ให้ไปใช้บน Platform อื่นๆ ครับ
อ่านแล้วแปลกประหลาดดีทีเดียว เกิดความสับสนว่า
1) Mono คือ Virtual Machine (คล้ายกับ Java Runtime) ซึ่งโคลน .Net Framework ของ Microsoft ให้ไปใช้บน Platform อื่นๆ ครับ
หรือ
2) Mono คือ Virtual Machine คล้ายกับ (Java Runtime ซึ่งโคลน .Net Framework ของ Microsoft ให้ไปใช้บน Platform อื่นๆ) ครับ
ขอบคุณครับ จะพยายามแก้ครับ