Close
AlgoliaLogoLight
Close full mode
logo

Cross platform mobile development

Git RepositoryEdit on Github

Flutter, React Native หรือ Xamarin ดี สำหรับงาน cross-platform mobile development

  • ตัดเรื่อง programming language ออกไป และมองในมุมมองของ performance, community, learning curve Xamarin

  • Xamarin Native

    • iOS, compilation เป็น AOT อยู่แล้ว performance ใกล้เคียง native
    • Android, compilation เป็น JIT ยังต้องพึ่ง Mono Runtime ทำให้ startup time และ performance ด้อยกว่า native
    • คนสร้าง Xamarin.Native ก่อนโดน MS ซื้อ เค้าวาง concept ว่าส่วนของ UI ไม่สามารถเขียนทีเดียวแล้วใช้ทั้ง 2 platform ได้ เพราะ UX/UI ของ 2 OS แตกต่างกันสิ้นเชิง (อันนี้เห็นด้วย)
    • iOS สามารถใช้ XCode จัด layout ได้ หรือใช้ Android Studio สำหรับ Android
    • Xamarin.Native ตัว framework แทบจะลอก API ของ native มาเลย คือถ้าเขียน native เป็นนี่ปรับตัวไม่ยาก ซึ่งมันก็กลายเป็นข้อเสียเหมือนกัน เพราะคนไม่ได้มาสายนี้ learning curve จะสูงมาก
    • Xamarin.Native เพิ่งมี Hot Reload เป็น feature ที่มาช้ากว่าคนอื่นมาก
    • .NET Community สำหรับ Xamarin ในไทยไม่ active
  • Xamarin.Form

    • Xamarin.Form แม้จะเขียน code เพียงชุดเดียว แต่หน้าตาออกมาระหว่าง iOS กับ Android ยังไม่เหมือนกัน
    • Free Widgets ยังน้อยอยู่
  • React Native

    • JS Core & Bridge คือฝันร้าย performance แย่กว่า native แบบเห็นได้ชัด, binary ขนาดเทอะทะ (เห็นว่ากำลัง re-architecture แต่ไม่มั่นใจไปถึงไหนแล้ว)
    • มาจากสาย web learning curve ต่ำมาก หรือกลับกันเรียนรู้ React Native แล้วกลับไปทำ web ก็ง่ายเช่นกัน
    • Component ก็ยังมีความ platform-specific นิดนึงคือไม่ใช่เขียนทีเดียวแล้วได้ 2 OS ยังต้องมีปรับเล็กน้อย โดย เฉพาะเรื่อง font size, padding, margin
    • JS community ใหญ่จริง libs, component ให้ใช้เพียบ และผ่านการพิสูจน์ตัวเองมาหลายปีแล้วว่าเป็น industry-standard ของการพัฒนา mobile cross-platform
    • Hot & Live Reload
  • Flutter

    • เรื่อง rendering ที่คือจุดขายที่แตกต่างจากเจ้าอื่นซึ่ง Flutter ทำ canvas เองไม่ได้ compile เป็น native assembly แล้วไป render ผ่าน Native UI เหมือนเจ้าอื่น, Skia graphic library นี่คือของจริง ที่เคลมว่า framerate 60 นี่ไม่ใช่คำอ้างที่ทำงานได้ดีแค่บน high-end device แต่ backward ไปยัน device 4-5 ปีที่แล้ว เอา iPhone 6s, 6 มาใช้ยังลื่นมาก ๆ ประสบการณ์ใช้งานประทับใจ
    • Widget ถ้ามาทาง design principle อย่าง material design จะง่ายมาก มีของให้ใช้เพียบ, Google ทำการบ้านมาดีมาก โดยเฉพาะที่เค้าวาง design concept ว่าเป็น composition over inheritance เหมือนเราเอาคุณสมบัติเล็ก ๆ มา compose จนออกมาเป็น Widget อันนี้ประทับใจกว่าที่ทำบน Native Android ซะอีก
    • Widget ไม่ต้องมานั่ง adjust แต่ละ platform จุกจิก เหมือน React Native ด้วยความที่ทำส่วน rendering เอง
    • Community โตไวมาก จาก project ที่ใช้จะใช้อะไรที่เป็น platform-specific มีให้เกือบหมด, แทบไม่ต้องเขียน native plugin มาใช้เองเลย
    • ️Hot Reload
    • Free widget เยอะมาก
  • สรุป ถ้าวิเคราะห์เฉพาะ cross-Platform ตอนนี้ต้องยก Flutter คืออนาคตครับ

    • Dart ถือว่าสอบผ่านในความเป็น modern programming language อย่างที่ควรจะเป็น
    • ตัวภาษาไม่ได้เรียนรู้ยากครับเขียน Typescript, Kotlin, Swift มาอ่าน handbook สักสองวันก็ไปลุยได้แล้ว
  • Credit จาก comment ของคุณ Cartier Saengchaiarun ครับ และทุกๆ ท่านจาก group .NET Thailand ครับ

  • REF

Loading comments...