Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 2036

ลองใช้ความสามารถ Java 8 ใน Android N Preview กันหน่อย

$
0
0

android-java8-01

android-java8-01 ทีมพัฒนา Android เพิ่งปล่อย Android N Preview ออกมา (ก็นานอยู่นะ) ซึ่งมีการเพิ่มเติมและปรับปรุงความสามารถต่าง ๆ มากมาย หนึ่งในนั้นคือ feature ต่าง ๆ จาก Java 8 สำหรับ Jack compiler เท่านั้นนะ ดังนั้นเมื่อมีของใหม่ ๆ ออกมาให้ลอง จะพลาดได้อย่างไร มาลองใช้งานกันดูสักหน่อย ถ้าใครยังไม่รู้จัก Jack compiler แนะนำให้ไปอ่าน blog เรื่อง ทำความเข้าใจกาทำงานของ Jack and Jill ใน Android

Android ไม่ได้สนับสนุน feature ของ Java 8 ทั้งหมดนะ !!

ประกอบไปด้วย ถ้าอยากรู้ feature ลอง Java 8 มันเยอะไหม แนะนำให้ดู VDO นี้นะ New feature in Java 8

ต่อมาคือการติดตั้ง

โดยจะต้องทำการติดตั้ง software ในการใช้งาน
  • Android Studio 2.1 ตอนนี้ผมใช้ Preview 2
  • Android N Preview SDK
  • JDK 8
จากนั้นทำการ update project และเริ่มเขียนกันเลย สามารถดูขั้นตอนการติดตั้งได้ที่นี่ แสดงดังรูป android-java8-02 อย่าลืมตรวจสอบ Java SDK ด้วยนะครับ ต้องเป็น Java 8 นะ android-java8-03

จากนั้นทำการเปิดการใช้งาน feature ต่าง ๆ ของ Java 8 กับ Jack compiler

โดยปกติขั้นตอนการทำงานเป็นดังนี้
  1. javac ทำการแปลงจาก .java เป็น .class
  2. dx ทำการแปลงจาก .class เป็น .dex
ส่วน Jack นั้นทำการแปลงจาก .java เป็น .jack และสุดท้ายเป็น .dex การทำงานภายในจึงต่างกัน และ ไม่สนับสนุนการแก้ไขและวิเคราะห์ byte code นะ เช่นพวก Jacoco และ Mockito ไม่สามารถใช้งานร่วมกับ Jack ได้ !! ซึ่งหวังว่าก่อนที่จะออกเป็น preview version มา คงจะทำการแก้ไขและปรับปรุงปัญหานี้ให้ดีขึ้น !!

เริ่มด้วยการ configuration ของไฟล์ build.grade ก่อน

ให้ทำการเปิดการใช้งาน Jack compiler และ กำหนด version ของ java ซะ จากการลองใช้งานพบว่า ต้องกำหนดค่าของ minSdkVersion และ targetSdkVersion เป็น 24 ถึงจะสามารถ run ได้นะ !! แสดงตัวอย่างดังนี้ [gist id="4c3e0b0ff918cc4e51d65879ff82afd8" file="build.gradle"] ปล. อย่าลืมปิด Instant Run ของ Android Studio ด้วย เพราะว่ายังไม่สนับสนุน !! ปัญหาเยอะจริง ๆ แสดงดังรูป android-java8-04

เมื่อทุกอย่างพร้อม ก็มาเขียน code กันหน่อยดีกว่า

Default และ static interface method เป็น feature ที่ช่วยลดจำนวน utility method/class ต่าง ๆ ลงไป เนื่องจากเราสามารถสร้าง default method ใน interface ได้เลย แสดงดังตัวอย่าง [gist id="4c3e0b0ff918cc4e51d65879ff82afd8" file="Money.java"] ลองใช้งาน Lambda expression เป็น feature ที่พักพัฒนาหลาย ๆ คนชอบ เนื่องจากมันช่วยทำให้ code สั้น อ่านเข้าใจได้ง่าย ซึ่งมันมีประโยชน์อย่างมาก ใน version ก่อนหน้านี้ ถ้าต้องการเขียน Lambda expression ต้องใช้เครื่องมือและ library ช่วย เช่น Lambda support for Android แสดงดังตัวอย่าง [gist id="4c3e0b0ff918cc4e51d65879ff82afd8" file="MainActivity.java"] ตัวอย่าง source code เอาไว้ที่ Github::Up1::AndroidNPreviewWithJava8 สวัสดี Java 8 นะ ขั้นตอนการ build ช้าน่าดู !! android-java8-05

สุดท้ายแล้ว

นี่เป็นเพียงตัวอย่างเล็ก ๆ น้อย ๆ สำหรับการใช้งาน Java 8 ในการพัฒนา Android application แต่มันก็ยังเป็นเพียง Preview version เท่านั้น ทำให้เราเห็นข้อดี ข้อเสีย และปัญหาต่าง ๆ มากมาย รวมทั้งข้อจำกัดของ Jack compiler ที่น่าจะมีการแก้ไขก่อนออก version เต็ม ดังนั้น Android developer ไม่น่าพลาดที่จะทดลองด้วยตัวเองนะครับ

Viewing all articles
Browse latest Browse all 2036

Trending Articles