Cross platform mobile development
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...