จากข่าว Oracle จัดหนัก! ฟ้องกินรวบหัวรวบหาง Android มีบางคนก็งงว่า Android กับ Oracle มันเกี่ยวข้องอะไร และเพื่อนๆก็ skype มาถามผมทำไม Oracle ถึงไล่ฟ้อง Android แบบไม่ลดละ จึงเกิดบทความนี้ขึ้น แน่นอนว่าบทความนี้ยาวและเนื้อหาเกี่ยวข้องกับนักพัฒนาไม่ค่อยจะเกี่ยวข้องกับผู้ใช้ซักเท่าไร ถ้าอ่านแล้วงงคงไม่แปลก เช่นเคยผมจะสรุปให้อ่านง่ายๆ ลงไปอ่านใน 3-4 บันทัดล่าง
หลายคนคงรู้จักว่า Oracle นั้นเป็นผู้ขายซอร์ฟแวร์เกี่ยวกับฐานข้อมูลรายใหญ่ของโลก ตอนแรกก็ไม่เกี่ยวข้องกับ Android หรอก แต่ Oracle กับ Android มีความสัมพันธ์กันอย่างไรเรามาเริ่มดูกันในความสัมพันธ์เริ่มต้นของ Android และ Java กันก่อนว่าเริ่มมาจากอะไร
Android
เป็น OS บนมือถือที่มีพื้นฐานจาก Linux โดยใช้ภาษา Java เป็น ภาษาที่ไว้ใช้พัฒนา application บน Android แต่จะบอกว่าใช้ Java ตรงๆก็ไม่ถูกนัก เพราะ android มันใช้ Java เพียงแค่ interface (syntax) เท่านั้น เพราะว่า VM (Virtual Machine) ที่ใช้นั้นเป็น VM (Dalvik) ที่ถูกสร้างขึ้นมาโดยเฉพาะ โดย Dalvik นั้นก็เป็น VM คล้าย java ทำหน้าที่ compile source code java และรัน java เช่นเดียวกัน แต่ Dalvik ได้พัฒนาต่อยอดมาจาก Project ของ Apache Harmony โดย Apache Harmony นั้นเป็น JVM ของ java ที่เป็น open source แต่ JVM ตัวนี้ความสามารถยังไม่เทียบเท่ากับ JVM official ของ Oracle ดังนั้นจึงต้องมาพัฒนาต่อจนกลายเป็น Dalvik นั่นเอง
Dalvik VM
แต่เมืออ่านถึงตรงนี้คงจะมีคำถามว่าทำไมไม่ใช้ JVM ของ Oracle เลยหละ มันมีเหตุผลอยู่เพราะว่าการ interpreter ของแต่ละอันนั้นต่างกัน โดยของ JVM นั้นจะเป็น stack machines และของ Dalvik นั้นเป็น register-based ซึ่งการทำงานทั้งสองต่างกัน โดย stack machines นั้นจะอ่าน byte code (class) ของ java แล้วแปล byte code เหล่านั้นเป็น instructions (คำสั่งต่างๆ) แล้วโหลดไปกองไว้ในหน่วยความจำแบบ stack ส่วน register-based นั้นก็มีการทำงานคล้ายๆกันเพียงแต่จะโหลด instructions เข้าไปในหน่วยความจำแบบ register แทน ซึ่งทั้งสองตัวนี้ดูเหมือนคล้ายๆกันเพียงแต่ว่า stack machines นั้นจะสร้าง instructions ออกมามากกว่า register-based ถึงแม้จะเป็น byte code ตัวเดียว ทำให้ไม่เหมาะกับการนำไปใช้ในอุปกรณ์มือถือที่มี CPU และ RAM น้อยกว่า computer มาก
อีกเหตุผลหนึ่งที่ไม่สามารถนำ JVM ไปใช้ได้เพราะ JVM ของ Oracle นั้นไม่ใช่ open source ดังนั้นการไปปรับแต่งหรือการแก้ไขนั้นทำไม่ได้จึงต้องหันไปใช้ Dalvik แทน โดย Android นั้นถูกผลักดันโดยกลุ่มๆหนึ่งที่มีชื่อว่า Open Handset Alliance โดยที่กลุ่มๆนั้นจะคล้ายกับ JCP (Java Community Process) ของ java มาก เป็นกลุ่มที่คอยสนับสนุน วางแผน ออกแบบ และทิศทางของ Android ซึ่งสามารถเข้าไปดูกลุ่มผู้สนับสนุนได้ตาม link นี้ ถ้าใครลองเข้าไปดูจะพบว่า นอกจากจะมีกลุ่มของผู้ผลิตมือถือแล้วยังมีกลุ่มของผู้ผลิต processor ของมือถือด้วย โดยเริ่มแรกกลุ่มของผู้ผลิต processor เป็นผู้วางสถาปัตยกรรมต่างๆของ Android ให้
Android กับ Java
Android กับ java นั้นใช้ VM คนละตัวกันทำให้เราจำเป็นที่จะต้องใช้ SDK ที่เป็นของ Android โดยเฉพาะเท่านั้น ทำให้เราไม่สามารถใช้ library (jar) ที่มีอยู่มากมายใน java มาใช้ในการพัฒนา android ไม่ได้ เพราะว่าเราใช้ SDK กันคนละตัวทำให้ bytecode ที่ได้มาจาก SDK ย่อมแตกต่างกัน ดังนั้น library ต่างๆจากภายนอกจึงไม่สามารถนำเข้ามาใช้ใน Android ได้ ยกตัวอย่าง เช่น jFreeChart หากคิดจะเอามาใช้ทำ chart ใน Android หมดสิทธิครับ ถึงแม้ว่า Dalvik จะมี tool ที่ชื่อว่า dx ทำหน้าที่ในการ compress class java ให้กลายเป็น .dex แต่ว่ามันไม่สามารถทำได้ทุก class ทำให้จึงไม่สามารถนำ class java มาใช้ได้
โดย Android SDK นั้นมี package ให้ใช้ดังนี้ (อ้างอิงจาก Android SDK 1.5)
จะสังเกตว่า package java นั้นมีติดมาด้วย ที่มีติดมาด้วยเพราะ Dalvik นั้นพัฒนาต่อยอดมาจาก Apache Harmony ทำให้ package พื้นฐานของ java ติดมา นอกจากนั้น android ยังรองรับกราฟฟิก 2D และ 3D ผ่าน OpenGL library ที่ติดมากับ kernel ของ Linux ส่วน database ที่รองรับคือ SQLLite
Oracle กับ Java
ก่อนที่ Android นำ Java มาใช้นั้นก็ได้ปรึกษาหารือกับ Sun Microsystem (อดีตเจ้าของ Java) ไว้แล้วว่าจะมีถ้าหาก Android จะเอา Java ไปใช้ Sun จะว่าไงบ้าง ซึ่ง Sun ก็พูดออกมาว่าไม่สนับสนุนเพราะดูแนวโน้มแล้วจะเกิด Fragmentation ขึ้น (ซึ่งก็เกิดจริงๆ) แต่ก็ไม่ได้ว่าอะไร Android ถ้าหากจะเอา Java ไปใช้ใน Android ไปอ่านรายละเอียดได้ที่นี่ http://www.blognone.com/news/18063
ต่อมาไม่นานนักเนื่องด้วยสภาพเศรษฐกิจที่ไม่ดี ทำให้รายได้ของ Sun ลดลง Sun เริ่มปลดพนักงานตัวเองออก ทำให้มีนักวิเคราะห์ทางธุรกิจหลายเจ้าเลยมองว่า ซันอาจถูกบริษัทที่ใหญ่กว่าควบกิจการก็เป็นได้ ซึ่งก็เป็นจริงๆ ถูก Oracle ซื้อไป เมื่อ Java เปลี่ยนมือเจ้าของ ทำให้เจ้าของใหม่อย่าง Oracle ทำการฟ้องร้องด้วยสิทธิที่ตัวเองพึงมี
สรุปภาษาละคร เธอกับเขาและรักของเรา
“นายเปา” และ “แป้งร่ำ” เมื่อสมัยเด็กๆเคยรู้จักกัน จนมีความสัมพันธ์แนบเน้นซึ่งใครๆก็มองว่าต้องไปด้วยกันได้ดีแน่นอน ต่อมา “พ่อแม่” ของแป้งร่ำเกิดวิกฤตเศรษฐกิจ จนต้องขายกิจการให้กับ “คุณใหญ่”
เนื่องจาก “คุณใหญ่” ถูกใจใน “แป้งร่ำ” จึงไม่ต้องการให้ “นายเปา” มาเกาะแกะ “แป้งร่ำ” จึงได้ส่งทนายไปฟ้องศาลเพื่อไม่ให้ “นายเปา” มาเกาะแกะ “แป้งร่ำ” ถ้าหากต้องการ “แป้งร่ำ” จริงๆ จะต้องจ่ายเงินมหาศาลเพื่อซื้อ “แป้งร่ำ” จาก “คุณใหญ่”
เหตุการณ์จะเป็นยังไงต่อไป เรามาตามติดกันเถอะว่าเรื่องราวของ เธอกับเขาและรักของเรา จะลงเอยยังไง รับรองละครเรื่องนี้สนุกแน่
ปล. ไม่ต้องบอกเนาะใครคือ “คุณใหญ่” ใครคือ “แป้งร่ำ” ใครคือ “นายเปา” คิดว่าคงจะรู้กันอยู่แล้ว
สรุป Oracle ฟ้องเพราะโดนละเมิด JVM เนี่ยหรอครับ
อ่านดูแล้ว ก็น่าจะโดนจุดนั้นจุดเดียว
ผมไม่แน่ใจว่าฟ้องอะไรบ้างเพราะ Oracle ฟ้อง Android ละเมิดลิขสิทธิถึง 132 ชิ้น – -' แต่ตอนนี้ศาลสั่งให้ลดลงเหลือ 3 ชิ้นเพราะศาลต้องใช้เวลานานมากกว่าจะตัดสินคดีนี้เสร็จ รุ่นหลานอาจจะยังไม่เสร็จ
แต่ที่โดนคากว่าน่าจะเป็น Virtual Machine และ Source code พื้นฐานของ Java ที่ Android เรียกได้ว่ายกมาเกือบจะทั้งชุด
ถึงแม้ว่า Virtual Machine และ Source code จะถูกยกมาจาก Apache Harmony ที่เป็น Open Source ก็เถอะ
ขอบคุณมากครับ กำลังสงสัยอยู่เลยเชียว ว่ามันเกี่ยวกันยังไง
แล้วมีความเห็นว่างานนี้จะรอดไหมครับ
เนื่องจาก oracle มาทีหลัง จะมีสิทธิไปเรียกร้องย้อนหลังได้เหรอครับ
ส่วนตัวผมว่าดูใจร้ายจริงๆ
ซื้อเพื่อมาฟองโดยเฉพาะอะดิ เห็นเค้ากำลังจะฉุดไม่อยู่แล้ว พวกไอ้แก่หลังไมค์ทั้งหลายก็รวมหัวกันร็อบบี้ ทั้งๆที่ก็รู้ว่ามันทำเพื่อสังคมเป็นโคดเปืด ยังเห็นแก่ตัวไม่เลิก รวมหัวแฮกเกอร์ทั่วโลกแฮกแม่งเลย ไอ้ออราเคิลเวร
เค้าำไม่ได้ซื้อมาเพื่อฟ้องครับ เพราะเทคโนโลยีของ Oracle หลายตัวมันใช้ Java ครับ
แต่ก่อนการพัฒนาแอพบน Oracle จะใช้ Oracle Forms ซึ่งเป็นแอพที่ไว้รันบน desktop เท่านั้นต่อมาพอเทคโนโลยี internet เริ่มแพร่หลาย Oracle Forms เริ่มตอบสนองไม่ได้ ทำให้ Oracle ต้องเปลี่ยนตัวเองให้รองรับกับการเติบโตของ Internet ด้วย
สังเกตได้จาก version ของ database oracle ตั้งแต่ version 9i ขึ้นไปตามหลังด้วย i โดย i หมายความว่า internet ซึ่ง Oracle ก็เลือก java เพื่อเป็น platform สำหรับแอพบนเว็บ และจากนั้นมาก็มีหลายๆอย่างที่ผูกติด java มากขึ้น
นอกจากนั้นหากย้อนไปในสมัยก่อน Oracle กับ Sun นั้นเป็นบริษัทคู่ค้ากัน นอกจาก Sun จะมี Java แล้ว Sun ยังขายเครื่อง Server ด้วย นั่นก็คือ Solaris ที่รันด้วย CPU ของตัวเองที่ชื่อว่า Sparc ซึ่งเป็น CPU ระดับ Top สำหรับทำฐานข้อมูลแบบ Data warehouse ในสมัยนั้นใครคิดจะซื้อฐานข้อมูลของ Oracle ต้องลงบนเครื่อง Solaris (Solaris เป็นทั้งชื่อเครื่อง Server และ Linux ของ Sun ที่หลายๆคนยกย่องว่าเป็น Linux สำหรับ Server ที่ดีตัวนึงแต่ไม่ฟรีนะ) เพื่อจะดึงประสิทธิภาพของฐานข้อมูลให้ดุที่สุด
ซึ่งต่อมา Oracle ก็พยายามจะยืนด้วยตัวเอง ไม่ต้องพึ่ง Server ของ Sun จึงผลิตเครื่อง Server ของตัวเองชื่อว่า Exadata และพยายามจะสร้าง Linux Server เป็นของตนเองโดยพัฒนาจาก Red Hat ชื่อ Oracle Linux แต่ก็ไม่ได้เด่นอะไรมากเหมือน Solaris
ดังนั้นสิ่งที่ Oracle ต้องการนอกจาก Java แล้วก็คือเครื่อง Server นั่นเอง
แต่ Oracle ก็เป็นบริษัทที่ค่อนข้างจะเชี่ยวชาญในเรื่องการทำเงินครับ เรื่องจะฟ้อง Android นี่เค้าเตรียมไว้ตั้งแต่จะซื้อ Sun แล้วครับ ดังนั้นจึงไม่แปลกใจเลยที่จะเห็น Oracle ฟ้อง
ถึงบทความจะเก่า แต่ความรู้ไม่เคยเก่าเลยครับ
ได้รู้อะไร หลายๆ อย่างเลยทีเดียว ทั้ง Oracle, Sun microsystem linux java ถ้าเป็นผู้ใช้ทั่วไปคงเปิดอ่านผ่าน ๆ แต่ถ้าเป็น Dev ได้อ่านแล้วละก็ มันจะดูยิ่งใหญ่จริงๆ สำหรับ Android และตอนนี้ Android ก็มาไกลเกินกว่าที่จะ อัปปางจริงๆ ครับ เพราะคำสั้นๆ คำเดียว "Open Source" ที่มาเติมเต็ม ยุคของ Smart phone อย่างแท้จริงครับ นับตั้งแต่ กันยายน 2551 ถึงปัจจุบัน นี่ก็ 6 ปี มาแล้ว ถือว่าพัฒนาได้ดีขึ้นเรื่อยๆ ครับ และก็มีโอกาสได้ใช้ android ครั้งแรกก็ ตั้งแต่ซื้อ S4 มาตั้งแต่ต้นเดือน พ.ค. 56 ยังไม่ได้เปลี่ยนเครื่อง รออัพ Lolipop อยู่ เห็นเพื่อน ๆ ที่ใช้ S4 อยู่บอกว่าอัพ Lolipop แล้วประสบการณ์ใช้ S4 นี่ดีที่สุด ตั้งแต่ที่ใช้มาเลยครับ ต้องขอบคุณ ทุกๆ อย่างที่ทำให้ Android มาถึงวันนี้ได้ครับ นับถือ Google ที่คอยผลักดัน ระบบตัวน้อยๆ ที่ได้เข้าไปอยู่ในมือถือ กี่พันล้านเครื่องที่ไม่อาจจะนับได้แล้วละครับ 😀 😀