Tags:
Mono

ข่าวสาร 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

By: tuckclub
tuckclub's blog
on 10/05/10 6:32 #176346 toggle
tuckclub's picture

MONO หรือ Mono
มันไม่สอดคล้องกันอะครับ

By: mk
FounderAndroidRed HatWindows
mk's blog
on 10/05/10 8:24 #176348 toggle
mk's picture
  • Mono สะกดแบบนี้นะครับ
  • list ช่วยจัดให้เข้า ul ด้วยครับ หรือจะให้ดีเขียนมาเป็น markdown ผมจะได้ช่วยแก้ง่ายๆ
  • อ่านแล้วไม่เข้าใจประเด็นที่จะสื่อครับ เช่น หัวข้อ platform ว่ามี Linux มันก็มีมาตั้งแต่ต้นแล้วนี่ครับ คือการมีคำว่า "Linux" ในข่าว มันต้องมีเหตุหรือปัจจัยอะไรสักอย่างที่พิเศษกว่าปกติ มันถึงสมควรเป็นข่าวครับ
By: Thaina
Windows
Thaina's blog
on 10/05/10 10:07 #176359 Reply to:176348 toggle
Thaina's picture

คืออย่างแรก เพราะผมไม่แน่ใจเรื่องเวลาและ Version น่ะครับ

และก็คือ อย่าง บางแพลทฟอร์มก็ลงตั้งนานแล้ว แต่มันไม่เป็นข่าว
ผมเลยคิดว่าน่าจะลิสท์ให้ครบไปเลยว่า "ตอนนี้มันทำอะไรได้บ้างแล้ว" ทั้งหมดทีเดียว
น่ะครับ


My Blog

By: mk
FounderAndroidRed HatWindows
mk's blog
on 10/05/10 12:52 #176402 Reply to:176359 toggle
mk's picture

คือผมอ่าน ณ ตอนนี้แล้ว มันยังเป็นเหมือน specsheet ของ Mono มากกว่าการ "เล่าเรื่อง" น่ะครับ (ซึ่งเป็นพื้นฐานของวิชาวารสารศาสตร์ ถามคุณ blitz ได้ เรียนมาโดยตรง)

อยากให้เรื่องที่เล่ามันมีประเด็นมากกว่านี้หน่อย เช่น Mono มีฟีเจอร์ xyz มันดีอย่างไร (เช่น ดีตรงใหม่ ดีตรงเร็ว ดีตรงทำอะไรได้มาก) หรือ ทำไมควรใช้ Mono

By: Thaina
Windows
Thaina's blog
on 10/05/10 12:12 #176393 Reply to:176348 toggle
Thaina's picture

สองหัวข้อแรก แก้(คิดว่าหมด)แล้วครับ


My Blog

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 10/05/10 10:15 #176363 toggle
mr_tawan's picture

สำหรับคนที่ไม่รู้จัก
Mono คือ Virtual

Java InterOp
มีโปรแกรมเอา Bytecode ของ Java มาแปลงร่างเป็น CIL สำหรับ Mono ได้ หรือจะสั่งให้รัน .jar ด้วย Mono Runtime ตรงๆ ก็ยังได้

ตรงนี้อ่านแล้วไม่เข้าใจครับ - -'

อ่าน ๆ ไป ผมว่ามันไปในทางโฆษณา/ประชาสัมพันธ์ มากกว่าจะเป็นข่าว (ซึ่งก็ไม่ใช่เรื่องไม่ดีนะครับ) แต่ยังอ่านไม่รู้เรื่องครับ ขอความกรุณาช่วยขัดเกลาอีกสักหน่อยก็แล้วกันนะครับ

ปล. พูดถึงอนาคต ผมกลับมองไปที่ภาษา Script เต็มรูปแบบอย่าง Python, Lua, Ruby หรือพวก F# อะไรไปแล้วแฮะ จริง ๆ

ปลล. สำหรับ Android ที่มี Flamewar กันก็คงด้วยเหตุผลที่ว่า Android รันบน Dalvik VM อยู่แล้ว จะให้รันผ่าน Mono อีกชั้นมันดูแย่ไปนิด (มี Compatitbility Layer ตั้งสองชั้น แค่ชั้นเดียวก็มีคนยี้อยู่แลว) ในอนาคตอาจจะมีคนเขียน Compiler ให้คอมไพล์ C# หรือภาษาอื่น ๆ ไปเป็น Dalvik มากกว่า (ซึ่งน่าจะไปแต่ตัวภาษากับ Lib นิดหน่อย) ไม่มั่นใจว่าพวก JRuby สามารถคอมไพล์ไปเป็น Dalvik ได้หรือยังนะครับ


By: Thaina
Windows
Thaina's blog
on 10/05/10 10:52 #176375 Reply to:176363 toggle
Thaina's picture

อ่า ตรงนั้นเผอิญกดผิด ไป Submit ตอนยังเขียนค้างอยู่น่ะครับ
แก้แล้วครับ

มันเกิด Flame War เพราะมีคนอยากให้ Mono เป็น Native แทน Dalvik น่ะครับ
เพราะตัว Mono ก็เปิด Java ได้เหมือนกัน
หรือบางคน(รวมถึงผม) ก็อยากให้มันมีทั้งสองตัวนะ

จะพยายามเกลาดูครับ


My Blog

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 10/05/10 12:36 #176398 Reply to:176375 toggle
mr_tawan's picture

ถ้าเอามาแทน 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# เป็นภาษาที่ซับซ้อนกว่าอยู่แล้วด้วย จริง ๆ แล้ว)


By: mk
FounderAndroidRed HatWindows
mk's blog
on 10/05/10 12:50 #176401 Reply to:176398 toggle
mk's picture

จริงๆ ก็มี MonoTouch ไงครับ แต่โดนแบนตาม Flash ไปด้วย :P

By: lingjaidee
ContributoriPhoneAndroid
lingjaidee's blog
on 10/05/10 11:55 #176387 toggle
lingjaidee's picture

*นอกเรื่อง อ่านงานเขียนข่าวของคุณ Thaina สบายใจกว่าอ่านใน comment เดือดๆ
ไม่ได้ anti นะครับแต่ข่าวแบบนี้ไม่มีอารมณ์มา + เลยอ่านแล้วสบายใจ ฮาๆ ;D


my blog

By: Thaina
Windows
Thaina's blog
on 10/05/10 12:07 #176391 Reply to:176387 toggle
Thaina's picture

เป็นแนวทางของ Blognone ครับ ว่าต้องเขียนข่าวโดยมีอคติให้น้อยที่สุดเท่าที่จะทำได้ และต้องแยก Fact กับความคิดเห็นให้ชัดเจน และเป็นไปได้ไม่ควรใส่ความเห็นลงในเนื้อข่าว(โดยเฉพาะเชิงลบ)
ผมก็พยายามทำตามนั้นครับ อาจผิดพลาดไปบ้าง

แต่ในคอมเมนท์เปิดให้ใส่เต็มที่ ผมก็เต็มที่กับชีวิตไปน่ะครับ


My Blog

By: KavkaZ
ContributorAndroidUbuntuWindows
KavkaZ's blog
on 11/05/10 14:43 #176795 Reply to:176391 toggle
KavkaZ's picture

(ลบๆ)


ลายเซ็นยาวเกินไปครับ

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 12/05/10 11:11 #176949 Reply to:176391 toggle
mr_tawan's picture

เวลาคอมเม้นท์ บางทีก็ต้องใช้สำนวนที่มันนิ่มนวลหน่อยนะครับ บางทีอ่านแล้วตาแทบจะหลุดจากเบ้า

คือบางครั้งเวลาเราเขียนอะไร เราใส่ความไม่ชอบ ไม่พอใจ หรืออะไรก็แล้วแต่ ที่จะเีรียกรวม ๆ ว่าอคติก็คงได้ ลงไปในสิ่งที่เราเขียน คนที่รับกรรมคือคนที่อ่านสิ่งที่เราเขียนครับ เพราะเขาต้องรับเอาความไม่ชอบ ไม่พอใจ ของคุณเวลาที่อ่าน

เช่น สมมติ ผมเขียนด่าบุคคลที่สามคนหนึ่ง ไอ้คนคนนั้นเขาไม่ได้รับรู้อะไร แต่คนที่อ่านกลับมาเป็นคนที่ถูกด่าอ้อม ๆ ไปซะงั้น อะไรทำนองเนี้ยะ (อธิบายไม่ถูก)

เวลาทำอะไรต้องคิดถึงคนรอบข้าง สิ่งแวดล้อม และสังคม ด้วยน่ะครับ ผมคิดอย่างนี้นะ


By: meawwat
ContributoriPhoneAndroidSymbian
meawwat's blog
on 10/05/10 20:35 #176523 toggle
meawwat's picture

ในไทยพอจะมี Host ที่รองรับ Mono รึเปล่าครับ

By: Slimy
AndroidUbuntu
Slimy's blog
on 12/05/10 8:15 #176926 toggle
Slimy's picture

เคยจะลองเอามาใช้งานดู โปรเจคที่จะต้องรันดันมี Crystal Report ด้วย ดับเลย

By: cwt
AndroidRed Hat
cwt's blog
on 12/05/10 11:39 #176956 toggle
cwt's picture

| 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 อื่นๆ) ครับ

By: Thaina
Windows
Thaina's blog
on 12/05/10 13:05 #176965 Reply to:176956 toggle
Thaina's picture

ขอบคุณครับ จะพยายามแก้ครับ


My Blog