Google

กูเกิลไม่ปล่อยให้ Adobe สร้างความตื่นเต้นให้กับนักพัฒนาภาษา C/C++ ด้วย Alchemy ไปล่วงหน้านานนัก ด้วยการปล่อย Native Client ปลั๊กอินสำหรับการพัฒนาซอฟต์แวร์แบบ native code หรือการปล่อยชุดคำสั่งให้ลงไปยังซีพียูตรงๆ แต่ยังได้ความปลอดภัยแบบเดียวกับการใช้ปลั๊กอินตามปรกติ โดยสรุปเป็นดังนี้

  • ซอฟต์แวร์ทั้งหมดจะถูกคอมไพล์เป็นไฟล์คำสั่ง x86 (ภาษาเครื่อง) ตรงๆ
  • โค้ดที่จะถูกปล่อยลงซีพียูจะถูกตรวจสอบล่วงหน้า ด้วยคำสั่ง inner-sandbox เพื่อป้องกันไม่ให้ไปแก้ไขสิ่งที่ไม่ได้รับอนุญาต รวมถึงการแก้ไขโค้ดของตัวเองด้วย
  • หลังจากนั้นจะมีการตรวจสอบอีกชั้น ไม่ให้มีการเรียก system-call ของระบบปฏิบัติการโดยตรง แต่ต้องเรียกผ่าน Native Client ทั้งหมด

ทั้งสองเทคโนโลยีมีข้อต่างกันอยู่หลายประการ ผมสรุปๆ มาคร่าว

  • Native Client นั้นในตอนนี้ผูกติดกับเครื่องที่เป็น x86 เท่านั้น กูเกิลระบุว่ากำลังพัฒนาส่วน ARM และ PPC อยู่ ส่วน Alchemy นั้นทำงานได้ทุกแพลตฟอร์มที่มี Flash 10 ซึ่งตอนนี้เหมือนจะยังมีเฉพาะ x86 เหมือนกัน
  • หลังจากโค้ดได้รับการตรวจสอบแล้ว Native Client จะทำงานที่ความเร็วเครื่อง ส่วน Alchemy นั้นทำงานบน Virtual Machine ตลอดเวลา
  • Native Client เป็นโอเพนซอร์สใช้สัญญาอนุญาตแบบ New BSD (แทบไม่มีเงื่อนไขอะไรเลย)
  • Flash นั้นรันเป็นโปรเซสดียวกันทุกหน้าต่าง ทุกช่อง แต่ Native Client นั้นทุก instance เป็นโปรเซสแยกกันทั้งหมด เนื่องจากข้อจำกัดเวลาเกิด Exception จากฮาร์ดแวร์ที่ไม่สามารถดักเอาไว้ได้
  • ในรายงานการวิจัย (PDF) ของ Native Client ระบุว่าแม้ว่าขนาดไฟล์ที่คอมไพล์แล้วจะใหญ่กว่ามาก แต่ความเร็วนั้นตกลงไปไม่เกิน 10% ใน SPEC2000
  • ทีมงานลองพอร์ตโค้ด H.264 ความยาว 11,000 บรรทัดมาบน Native Client พบว่าต้องแก้โค้ดทั้งหมดประมาณ 20 บรรทัด กว่าครึ่งเป็นปัญหาคอมไพล์ไม่ผ่าน อันนี้ชนกับ Alchemy แน่นอนเพราะตัวนั้นใช้ Ogg Theora มาเดโมว่าพอร์ตได้
  • ทั้งสองอันเดโมด้วย Quake เหมือนกัน ท่าทางจะพยายามชิงตลาดจาก ActiveX ให้ได้ในเร็ววัน

เท่าที่อ่านดูแล้ว Native Client ยังห่างไกลจากระดับใช้งานจริงอยุ่มาก การเปิดตัวครั้งนี้คงเป็นการดึงนักพัฒนาเอาไว้ไม่ให้เทใจไปให้ Alchemy หมด โดยการบอกว่า "กู(เกิล)ก็มีเหมือนกัน"

ที่มา - Google Code Blog, Google Security Blog, Native Client

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

sugree Wed, 10/12/2008 - 08:30

เอาไว้รันข้างนอกเบราเซอร์ก็ได้นะ โอ้ มันร้าย แต่โหลดที่บ้านแล้วหลุด.. 78 MB ใหญ่ไปนิด

lew Thu, 11/12/2008 - 11:05

In reply to by Thaina

คนละเรื่องกับ .NET นะครับ เพราะ .NET เองก็เป็น VM แบบ Java

ตัวนี้ผมว่ามันลูกผสมระหว่าง ActiveX กับ Virtualization ครับ

LewCPE

Thaina Thu, 11/12/2008 - 11:15

In reply to by lew

เห็นฟีเจอร์หลายอย่างคล้ายๆกันนะครับ

อย่างเช่น CLR จะคอมไพล์ตัวโปรแกรมให้เป็นภาษาเครื่องอีกที และทำงานที่ความเร็วเครื่อง ไม่ได้ทำงานบน Virtual Machine (มีการไปยุ่งกับ FrameWork เล็กน้อย) ในเฟรมเวิร์คมีอินเตอร์เฟซ ไม่ค่อยให้ใช้ System Call โดยตรง และอื่นๆ

ดูๆไปแล้ว NativeClient vs Alchemy ก็คล้ายๆ .Net vs Java นะครับ?

lew Thu, 11/12/2008 - 11:36

In reply to by Thaina

Virtual Machine เป็นคนละเรื่องกับ Native Code ครับ แม้จะคล้ายๆ กันแต่ไม่เหมือน

  • Byte Code ที่ทำงานบน VM จะย้ายไปทำงานบนเครื่องอื่นได้ native นี่ถ้าไม่ได้คอมไพล์เตรียมไว้ก่อนก็เอาไปใช้แพลตฟอร์มอื่นไม่ได้ครับ
  • กรณีของ .NET/Java เรียกว่า Just-In-Time Compiler เอา Byte Code ที่ไม่ใช่ Native มาแปลงอีกที แม้จะเร็วขึ้น แต่ไม่เท่า native ตรงๆ เพราะทำอะไรหลายๆ อย่างไม่ได้ เช่น Pointer ที่พวก managed code ยังไงก็ต้องใช้ reference

NaCl/Alchemy นี่คล้ายกันในแง่ของกลุ่มเป้าหมาย (ย้าย C/C++ ลงเว็บ) แต่ในแง่เทคนิคแล้วผมว่าต่างกันคนละโลกเลยครับ ส่วน .NET/Java นี่ผมว่าในเชิงเทคนิคแล้วต่างกันไม่มากนัก

LewCPE

Thaina Thu, 11/12/2008 - 11:49

In reply to by lew

ผมเข้าใจว่า

NativeClient จะเป็นเ้ฟรมเวิร์คบนกูเกิล ที่จะคอมไพล์โค้ดที่มีคนเขียนไว้เป็นโปรแกรม แล้วโยนกลัีบไปทำงานบนที่เครื่องที่เปิดมัน และมันน่าจะคอยดักด้วยว่าคนที่เปิดมันใช้เครื่อง x86 รึเปล่า ถ้าเป็น x86 มันก็จะคอมไพล์เป็นโปรแกรม x86

โดยลักษณะแล้วผมว่ามันคล้ายๆกับว่ามี .Net อยู่บนกูเกิลอีกทีน่ะครับ เหมือนแปลงกูเกิลให้เป็น .Net FrameWork ตัวนึงเลย แล้วเครื่องผู้ใช้ก็รอรับโปรแกรมที่มันคอมไพล์เสร็จเป็นโค้ดที่เครื่องตัวเองเปิดได้

หรือผมเข้าใจผิดครับ?

tomyum Wed, 04/03/2009 - 15:59

In reply to by orpheous

เอา NaCl ไว้ทำปฏิกิรยากับ Cr (โครเมี่ยม) กระมังครับ http://th.wikipedia.org/wiki/%E0%B9%82%E0%B8%84%E0%B8%A3%E0%B9%80%E0%B8%A1%E0%B8%B5%E0%B8%A2%E0%B8%A1 เอ แล้วจะได้อะไรออกมาหว่า...ตกเคมี \(@^_^@)/ M R T O M Y U M

obiconbig Fri, 06/03/2009 - 10:33

จากที่ผมอ่านไม่รู้ว่าเข้าใจหรือเปล่านะครับ

แต่จาก Alchemy แล้วมี quote ล่าสุดนะครับ

What is Alchemy?

"Alchemy" is the code name for a research project from Adobe that allows users to compile C and C++ code that is targeted to run on the open source ActionScript virtual machine (AVM2). The C/C++ code is compiled to ActionScript 3.0 as a SWF or SWC that runs on Adobe Flash Player 10 or Adobe AIR 1.5. The generated content is within the security constraints of the AVM2, and cannot bypass Flash Player security protections.

ผมเจอตรงนี้แหละครับ and cannot bypass Flash Player security protections.

สรุปก็คือ เขียน C/C++ ลงไปได้ แต่ก็อยู่ในชอบเขตของ Flash Player เหมือนกับ มี Flash Player เป็น virtual machine หรือเปล่าครับ แล้วเราก็เขียน code เอาไปรันบน Flash Playe

Google Native Client ก็คงจะทำมาในรูปแบบคล้ายๆ กันเพราะ เป็น product ที่เปรียบเทียบกัน ซึ่งอาจจะมีโครงสร้างที่ต่างกันบ้าง

ผิดถูกยังไงบอกด้วยนะครับ