จากการที่ทีมพัฒนา Android ได้ประกาศหยุดการพัฒนา Jack toolchain
นั่นหมายความว่าการใช้ความสามารถของ Java 8 ในการพัฒนา Android app จะเปลี่ยนไป
ซึ่งล่าสุดได้ประกาศวิธีการออกมาแล้ว Support Java 8 support
นั่นคือยัด feature ของ Java 8 เข้ามาให้เลย (Build-in)
แต่ใช้ได้บาง feature เท่านั้น !!

ปล. แต่ในปัจจุบันการพัฒนา Android app ด้วยความสามารถของ Java 8
มันยังคงเป็นเพียงทางเลือกหนึ่งเท่านั้นนะครับ
ดังนั้นเราไม่จำเป็นต้องใช้ก็ได้
หรือไม่พอใจก็เปิดความสามารถนี้เองได้

มาดูการใช้งานและการ migrate กันหน่อย

ถ้าต้องการใช้งาน Java 8 ตามแนวทางใหม่นั้น
สิ่งแรกเลยต้อง download Android Studio 2.4 Preview 4 ขึ้นไปมาใช้ก่อน (ตอนนี้ Preview 5 แล้ว)
ต่อมาต้องเปลี่ยนมาใช้ Android plugin for Gradle 2.4.0 alpha5 ขึ้นไป

ยังไม่พอนะต้องปรับแต่ compileOptions ในไฟล์ build.gradle
ให้เป็น Java 8 ด้วย

ยังไม่พอนะหลาย ๆ feature ต้องกำหนด minSdkVersion เป็น API level 24 ขึ้นไปอีกด้วย

มาดูขั้นตอนการทำงานบ้าง

แสดงการทำงานดังรูป
โดยจะมีสิ่งที่เรียกว่า desugar เป็นตัวแปลง bytecode

เมื่อลองทำการ builld ด้วย gradle จะพบว่า
มีขั้นตอนการทำงานดังนี้
ซึ่งเป็นไปตามรูปข้างบนเลย
นั่นคือทำการแปลง ไฟล์ class ด้วย desugar ก่อนที่จะแปลงเป็นไฟล์ dex ต่อไป

ปล. เพิ่มขั้นตอนในการ build เข้ามา
แน่นอนว่าต้องใช้เวลาในการ build มากขึ้น !!

ถ้าใครต้องการอ่าน source code ของ desugar tool

สามารถอ่านและศึกษาเพิ่มเติมได้ที่

ส่วนใครที่ใช้งาน Jack toolchain และ Retrolambda อยู่

ก็เพียงลบมันทิ้งไปเท่านั้นเองนะ

ส่วนใครที่ต้องการปิด Java 8 support แล้ว

สามารถกำหนดได้ในไฟล์ gradle.properties ได้ดังนี้

android.enableDesugar=false

ขอให้สนุกกับการ coding ครับ