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 ได้นะ !!
แสดงตัวอย่างดังนี้

ปล.
อย่าลืมปิด Instant Run ของ Android Studio ด้วย
เพราะว่ายังไม่สนับสนุน !! ปัญหาเยอะจริง ๆ
แสดงดังรูป

android-java8-04

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

Default และ static interface method
เป็น feature ที่ช่วยลดจำนวน utility method/class ต่าง ๆ ลงไป
เนื่องจากเราสามารถสร้าง default method ใน interface ได้เลย
แสดงดังตัวอย่าง

ลองใช้งาน Lambda expression
เป็น feature ที่พักพัฒนาหลาย ๆ คนชอบ
เนื่องจากมันช่วยทำให้ code สั้น อ่านเข้าใจได้ง่าย
ซึ่งมันมีประโยชน์อย่างมาก

ใน version ก่อนหน้านี้ ถ้าต้องการเขียน Lambda expression
ต้องใช้เครื่องมือและ library ช่วย เช่น Lambda support for Android

แสดงดังตัวอย่าง

ตัวอย่าง source code เอาไว้ที่ Github::Up1::AndroidNPreviewWithJava8

สวัสดี Java 8 นะ ขั้นตอนการ build ช้าน่าดู !!

android-java8-05

สุดท้ายแล้ว

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

ดังนั้น Android developer ไม่น่าพลาดที่จะทดลองด้วยตัวเองนะครับ

Tags: