Apache Harmony จาวาโอเพนซอร์ส

Column

Apache Harmony

จาวาโอเพ่นซอร์ส




ข่าวใหญ่ในวงการโอเพ่นซอร์สช่วงปลายเดือนพฤษภาคมที่ผ่านมา คือ การประกาศโครงการ Harmony ของมูลนิธิ Apache Foundation ซึ่งเป้าหมายของโครงการก็คือ การสร้าง Java 2 Standard Edition ขึ้นมาใหม่ให้ทำงานได้เท่ากับตัวดั้งเดิม แต่ตัวใหม่นี้มีสัญญาการใช้งานแบบโอเพ่นซอร์สทั้งหมด



ผมคิดว่าทุกวันนี้ไม่มีใครไม่รู้จักภาษาจาวานะครับ ภาษาจาวาถือกำเนิดมาเป็นเวลา 10 ปีแล้ว และได้รับความนิยมทั่วไป ตลาดที่จาวาได้รับความนิยมชนิดกินขาดภาษาอื่น คือ ตลาดโปรแกรมขององค์กรขนาดใหญ่ (Enterprise) และตลาดอุปกรณ์ฝังตัว ซึ่งอันนี้เราน่าจะเห็นกันบ่อยจากโทรศัพท์มือถือที่รันจาวาได้กันเกือบหมดแล้ว



ตัวภาษาจาวาสร้างโดยบริษัทซัน ไมโครซิสเต็มส์ มีเอกสารกำกับแน่นอนและเปิดเผยอย่างละเอียด ไม่ว่าใครก็เขียนภาษาจาวาที่เป็นมาตรฐานเดียวกันทั่วโลก



แต่การจะให้โปรแกรมภาษาจาวาทำงานได้ ต้องมีโปรแกรมอื่นๆ ประกอบครับ เช่น รันไทม์สำหรับเวลารันโปรแกรมจาวา (Java Runtime Environment หรือ JRE), ตัวแปลภาษาจาวา (Java Compiler) และชุดไลบรารีสำหรับงานพื้นฐานต่างๆ เช่น ทำงานเกี่ยวกับรูปภาพ หรือเว็บ



โปรแกรมเหล่านี้ บริษัทซัน ไมโครซิสเต็มส์ได้แจกให้เราทุกคนใช้กันฟรีๆ อยู่แล้ว ในชื่อ Java 2 ซึ่งมีหลาย Edition แต่ตามปกติจะใช้ Java 2 Standard Edition หรือ J2SE ปัจจุบันออกถึงรุ่น 5.0



ปัญหาคือ ซันให้เราแค่"ใช้ฟรี"เท่านั้น ไม่ได้ให้สิทธิ์เป็นแบบโอเพ่นซอร์ส ซึ่งจะมีปัญหากับลินิกซ์ดิสทริบิวชันทั้งหลาย เพราะไม่สามารถรวมเอาชุดโปรแกรมที่ไม่ได้เป็นโอเพ่นซอร์ส (และมีข้อกำหนดต่างๆ ของซันเอง เช่น ห้ามแจกจ่ายเองต่างหาก) ไปกับตัวดิสทริบิวชันได้ ทำให้การใช้งานจาวาบนลินิกซ์ไม่สะดวกเป็นอย่างมาก อยากใช้ต้องติดตั้งเอาเอง



ซันให้เหตุผลว่าเป็นการรักษาความเข้ากันได้ของจาวา ซึ่งมีจุดขายที่เขียนเพียงครั้งเดียว ใช้งานที่ไหนก็ได้ ไม่ต้องปรับปรุงแก้ไขใหม่ (Write Once Run Everywhere)



ได้มีความพยายามจากฝั่งโอเพ่นซอร์ส ในการสร้างโปรแกรมที่ทำงานได้แบบเดียวกันขึ้นมาใหม่ และใช้สิทธิ์แบบโอเพ่นซอร์ส อย่างเช่น โครงการ GCJ (ตัว Compiler ภาษาจาวาของโครงการ GNU) หรือ Blackdown Java (ตัวรันไทม์และโปรแกรมอื่นๆ) เพียงแต่เป็นการสร้างบางส่วนของชุด J2SE เท่านั้น ไม่ใช่ทั้งหมด



โครงการ Apache Harmony นี้เป็นการสร้างโปรแกรมแบบเดียวกับ J2SE ทั้งชุดขึ้นมาใหม่ ซึ่งตอนนี้เพิ่งประกาศว่าจะสร้างมาได้ไม่นาน และกำลังอยู่ในขั้นร่างแผนเท่านั้น



ถ้าโครงการ Apache Harmony สำเร็จจริงๆ เราก็จะมีชุดโปรแกรมสำหรับจาวาที่เป็นโอเพ่นซอร์สให้ใช้เป็นทางเลือกนอกจากจาวาของซัน ส่งผลให้การใช้งานจาวาบนลินิกซ์สะดวกสบายมากขึ้น



การประกาศโครงการ Harmony นี้ทำให้เกิดข้อถกเถียงเป็นอย่างมากครับ เพราะทางซันเองก็ไม่ค่อยอยากให้โครงการทำนองนี้เกิดมาตามเหตุผลที่ผมเขียนไว้ ก็คือต้องการควบคุมความเข้ากันได้ของจาวาอย่างเคร่งครัด ขนาด James Gosling นักวิจัยจากซันผู้คิดค้นจาวาได้ออกมาให้สัมภาษณ์ในทางที่เป็นลบกับ Harmony



ทั้งสองฝ่ายก็มีเหตุผลที่ฟังขึ้นครับ ฝ่ายโอเพ่นซอร์สก็จำเป็นต้องมีโครงการแบบนี้ เพื่อความก้าวหน้าในการพัฒนาจาวาแบบโอเพ่นซอร์ส ซึ่งทาง Harmony ได้ออกมารับประกันว่า โปรแกรม Harmony จะเข้ากันได้กับจาวาของซัน 100% แน่นอน เพราะต้องผ่านชุดทดสอบความเข้ากันได้ของจาวาอยู่แล้ว ซึ่งปัญหาไม่ได้อยู่ที่ทำได้หรือไม่ แต่อยู่ที่เมื่อไรเท่านั้น (เพราะการสร้างโปรแกรมแบบเดียวกับ J2SE ที่พัฒนาต่อเนื่องมาเป็นสิบปีขึ้นมาใหม่ ต้องใช้เวลาอย่างมากไม่ต่ำกว่า 3-5 ปีแน่นอน)



หลายคนอาจสงสัยว่าทำไมต้องเป็น Apache ผมเคยเขียนเรื่อง Apache ไปทีหนึ่งแล้ว Apache เป็นโครงการที่พัฒนาโปรแกรมเกี่ยวกับเว็บเป็นหลัก โดยมีเว็บเซิร์ฟเวอร์ Apache เป็นโปรแกรมหลัก และช่วงหลังหันไปทำโปรแกรมที่เกี่ยวข้องอื่นๆ เช่น เกี่ยวกับด้าน XML หรือเว็บเซอร์วิส ที่เขียนด้วยจาวาเป็นส่วนมาก เรียกได้ว่า Apache เป็นโครงการหลักที่สนับสนุนจาวาเลย



คำถามอีกข้อคือ จาวาออกมาตั้งนานแล้ว ทำไมเพิ่งมาคิดทำแบบโอเพ่นซอร์ส คำตอบอยู่ที่สัญญาการใช้งานหรือ License ครับ สัญญาของจาวาเพิ่งอนุญาตให้เกิดโครงการแบบ Harmony ในจาวารุ่น 5.0 ที่เพิ่งออกเมื่อปีที่แล้วนี้เอง



รูปแบบของโครงการ Harmony นี้จะคล้ายกับโครงการ Mono ซึ่งเป็นการสร้างชุดพัฒนาตระกูล .NET ของไมโครซอฟท์ขึ้นมาใหม่แบบโอเพ่นซอร์สเช่นกัน Mono เริ่มประกาศในปี 2001 ซึ่งตอนนี้เวลาผ่านมาประมาณ 4 ปีได้ก้าวหน้าไปมาก แต่ก็ยังไม่เทียบเท่ากับชุด .NET ของไมโครซอฟต์อยู่ดีครับ ดังนั้นกว่า Harmony จะเห็นผล ผมว่าคงซักประมาณปี 2007-2008 เป็นอย่างน้อยเช่นกัน