Halcyon Java .NET : GMO ของ Java และ .NET

    "Write once, Run Anywhere" เป็น Slogan สำคัญของ Java ที่เรารู้จักกันดี จุดแข็งหลักของ Java คือความ Portable สามารถนำเอา Binary code ไปทำงานได้ไม่จำกัด ยี่ห้อเครื่อง Computer และ OS ส่วน .NET Framework มีความสามารถใกล้เคียงจาก Java Platform แต่สิ่งหนึ่งที่สู้ Java ไม่ได้เลย ก็เรื่อง Portable นี้แหละครับ ทาง Microsoft เองก็ไม่ได้แสดงให้เห็นว่า จะเอาจริงกับเรื่อง Portable ซะเท่าไหร่ ดังนั้น การทำงานจึงเน้นหนักไปบน Windows เท่านั้น

    มาวันนี้คนเขียน .NET Framework มีทางออกครับ สามารถนำเอาโปรแกรมที่เขียนบน .NET Framework ไปทำงานบน Java ได้ เรื่องนี้ไม่ใช่ทำนองที่ Ximian สร้าง .NET Framework บน Linux นะครับ มันไปไกลกว่านั้นแล้ว มันเป็นของ Halcyon ครับ

    Halcyon มีเป้าหมายทำให้ Code ของ .NET Framework ทำงานได้บนเครื่องทุกเครื่อง โดยการใช้ Java เป็นพาหะครับ ไหนๆ Java ก็สามารถทำงานได้บนทุกเครื่องแล้ว Halcyon ก็เลย เอาโปรแกรมของ .NET Framework ไปทำงาน Java Platform เสียเลย คิดได้ยังไงนี่!

    Halcyon ไม่ได้ใช้วิธี Emulator เหมือนกับประเภท เราเอาเกมส์จากเครื่องเล่นเกมส์ มาเล่นบนเครื่อง PC เพราะความเร็วจะเสียหมด Halcyon ใช้วิธีเอา Code ที่เป็น IL ของ .NET Framework มาคอมไพล์เป็นภาษาระดับสูงขึ้น คือ Java แล้วค่อยเอา Java Compiler ตามปกติเพื่อทำการคอมไพล์โปรแกรมต่อไป ผลลัพธ์เราจะได้แฟ้มที่เป็น Byte Code ของ Java จริงๆ ส่วน Code ที่เป็น IL ก็ไม่ต้องใช้ครับ

    สิ่งที่น่าสนใจต่อไป ก็คือ โปรแกรม .NET ก็ต้องเรียกใช้ Class Library ของ .NET ซึ่งไม่มีใน Java ถึงแม้ว่าเราจะแปลง IL ให้เป็น Byte Code ได้ แต่เมื่อรันโปรแกรมแล้ว มันก็คงยังเรียก Library ของ .NET ซึ่งทำงานไม่ได้อยู่ดี ปัญหานี้ Halcyon แก้โดยการสร้าง Class Library ของ .NET จำลองขึ้นมาทั้งหมด ส่วนมากก็เป็น Wrapper เพื่อเชื่อมเข้าหา Library ของ Java อีกที เช่น ถ้าโปรแกรมเรียกใช้ ADO.NET ทาง Halcyon ก็สร้าง Wrapper จำลอง ADO.NET ทั้งหมด ภายใน Library นี้ก็แอบไปเรียกใช้ JDBC เข้าท่าดีเหมือนกัน

    ในแง่ของ Web สิ่งนี้จะทำให้ ASP.NET สามารถทำงานได้บน Web Server ตัวอื่นๆ ไม่ต้องผูกขาดกับ IIS ซึ่งเป็นตัวที่เป็นจุดอ่อนด้าน Security ของ Microsoft

    แล้วถ้า โปรแกรม .NET ของเราเรียกใช้ COM หรือ ActiveX ทาง Halcyon มี Solution เรื่องนี้อยู่แล้ว R-JAX (Remote Java ActiveX Server) เป็น ตัวเชื่อมให้ Java สามารถเรียกใช้ ActiveX ได้ ค่อนข้างครบวงจรครับ

    Halcyon สร้าง Java Compiler บน .NET ด้วย แต่เรื่องนี้มีหลายเจ้าทำอยู่เช่นกัน ผมเลยไม่ได้ให้ความสำคัญเท่าไรนัก

    Halcyon ยังมีวิธีการอุดรูรั่วของการเชื่อมระหว่าง 2 Platforms อีกหลายจุด เช่น WSDL2Java JROM รายละเอียดของเรื่องนี้ รวมทั้ง ภาพต่างๆ ดูได้จาก http://www.halcyonsoft.com/news/dotnetjromjil.asp

    ล่าสุด ขณะที่เขียนบทความนี้ Halcyon Java .NET กำลังอยู่ในขั้น Beta ซึ่งทางบริษัทกำลังประกาศหา Tester อยู่ครับ