กูเกิลอธิบายเบื้องหลังการสร้างแอพอีเมลแนวใหม่ Inbox ที่ทำงานได้บน 3 แพลตฟอร์มหลักคือ iOS, Android และเว็บ โดยโจทย์ของกูเกิลคือต้องการสร้างประสบการณ์ใช้งานที่ดีและมีประสิทธิภาพที่ยอดเยี่ยม แต่ก็ต้องการให้โค้ดเรียบง่าย ไม่ต้องดูแลหลายเวอร์ชัน
คำตอบของกูเกิลคือเขียนส่วน frontend ของแต่ละแพลตฟอร์มแยกจากกัน ใช้ภาษาและเครื่องมือแบบเนทีฟ โดยเวอร์ชัน Android เป็น Java, เวอร์ชันเว็บเป็น JavaScript+CSS, เวอร์ชัน iOS เป็น Objective-C
ที่งาน ng-europe 2014 กูเกิลเปิดโครงการ AtScript ภาษาสคริปต์ที่ขยายมาจาก ECMAScript 6 หรือจาวาสคริปต์รุ่นต่อไป โดยเพิ่มฟีเจอร์ annotations ทำให้ AtScript ถูกเรียกอีกอย่างหนึ่งว่า +A
ภาษา AtScript ทำให้นักพัฒนาสามารถเขียน directive ใหม่ๆ เข้าไปใน AngularJS ได้ง่ายขึ้น
กูเกิลระบุว่า AngularJS 2.0 เองพัฒนาด้วย AtScript อยู่แล้วและ "แปลง" (transpile) ให้ทำงานใน ECMAScript 5 ที่เบราว์เซอร์ส่วนใหญ่รองรับ และเมื่อเบราว์เซอร์รองรับ ECMAScript 6 การทำงานก็จะดีขึ้น
กูเกิลระบุว่าต้องใช้ ECMAScript 6 เพราะฟีเจอร์ที่เพิ่มขึ้นมาหลายอย่าง เช่น class ถูกปรับปรุงให้เขียนตรงไปตรงมาเหมือนภาษาอื่นๆ, และระบบโมดูลที่ AngularJS เคยต้องทำขึ้นใหม่เอง
Yahoo User Interface Library (YUI) เป็นไลบรารีจาวาสคริปต์ที่ยาฮูพัฒนาขึ้นในปี 2005 และประกาศโอเพนซอร์สในปี 2006 ซึ่งหลังจากนั้นก็มีเว็บไซต์และ CMS จำนวนมากนำ YUI ไปต่อยอดใช้งาน
อย่างไรก็ตาม วงการเว็บเปลี่ยนไปจากเดิมมาก ทั้งในแง่ความสามารถของเบราว์เซอร์ และการเกิดขึ้นของไลบรารี/เฟรมเวิร์คหน้าใหม่หลายๆ ตัว ส่งผลให้ YUI ได้รับความนิยมลดลงเรื่อยๆ จนยาฮูต้องประกาศว่าจะหยุดพัฒนา YUI เป็นการถาวรแล้ว ในอนาคตออก YUI เวอร์ชันใหม่เฉพาะการแก้บั๊กสำคัญๆ เท่านั้น
ที่มา - Yahoo! Engineering
ก่อนหน้านี้ แอพบน iOS ที่ต้องการจะแสดงผลข้อมูลอื่นๆ ผ่านเบราว์เซอร์ในตัวที่มากับแอพจะต้องใช้งานเบราว์เซอร์ตัวที่ช้ากว่า เนื่องจากแอปเปิลจำกัดการใช้งานเอนจินจาวาสคริปต์ Nitro ไว้ใช้งานกับเบราว์เซอร์ Safari เท่านั้น
ให้หลังการเปิดตัว iOS 8 นักพัฒนาพบว่าแอปเปิลเปิดให้สามารถเข้าถึงเอนจิน Nitro ได้แล้ว ทำให้นักพัฒนาที่ใช้งานเบราว์เซอร์ในแอพ หรือแม้แต่รายที่พัฒนาเบราว์เซอร์ลงบน iOS ได้ประสิทธิภาพการใช้งานที่สูงขึ้น
Huib Kleinhout นักพัฒนาของ Opera Coast บอกว่า WKWebView ตัวใหม่บน iOS 8 นั้นดูมีแววดีมาก แต่ความต่างระหว่างรุ่นก่อน จะเห็นได้ชัดเจนเมื่อเจอเว็บที่ใช้งานจาวาสคริปต์หนักๆ เท่านั้น รวมถึงต้องมีการทดสอบความเสถียร เพื่อปรับปรุงแก้ไขก่อนใช้งานจริงอีกที
ช่วงหลายปีที่ผ่านมานี้ เราเห็นโครงการพัฒนาด้านประสิทธิภาพการประมวลผล JavaScript ของเบราว์เซอร์ค่ายต่างๆ โดยโครงการที่โดดเด่นคือ asm.js ที่ริเริ่มจากฝั่ง Mozilla
ฝั่งของแอปเปิลที่สร้าง Safari อยู่บนโครงการ WebKit ก็มีความเคลื่อนไหวในเรื่องนี้เช่นกัน โดยใช้ชื่อโครงการว่า FTLJIT ย่อมาจาก (Fourth Tier LLVM JIT)
โครงการ PyPy.js พอร์ต PyPy มาเป็นจาวาสคริปต์ให้รันบน asm.js ล่าสุดโครงการแถลงผลว่าสามารถรันได้เร็วกว่า CPython ในบางกรณีที่โค้ดเดิมถูกรันซ้ำๆ จำนวนรอบมากพอแล้ว
Brendan Eich ผู้สร้างภาษา JavaScript และอดีตซีทีโอ (Chief Technology Officer) ของ Mozilla ก้าวขึ้นมารับตำแหน่งซีอีโอขององค์กรแล้ว
Mozilla อยู่ในระหว่างการเปลี่ยนยุคผู้บริหาร หลัง Gary Kovac อดีตซีอีโอ Mozilla ย้ายไปเป็นซีอีโอ AVG Technologies
Brendan Eich เป็นอดีตพนักงานของ Netscape และเป็นหนึ่งในผู้ร่วมก่อตั้ง Mozilla ร่วมกับ Mitchell Baker ประธานบอร์ดมาตั้งแต่ปี 1998 ด้วย
ที่มา - Mozilla Blog
Chrome Beta ปรับปรุงการประมวลผล JavaScript ในเอนจิน V8 เสียใหม่ โดยโอนภาระงานส่วนการรีดประสิทธิภาพ (optimizing compilation) ของโค้ดไปทำงานแบบแบ็คกราวนด์ ผลคือตัวแอพหลักที่อยู่ฉากหน้าจะยังตอบสนองดีเหมือนปกติ (responsive)
เดิมทีเอนจิน V8 จะทำหน้าที่ปรับแต่งโค้ดแล้วค่อยประมวลผล ซึ่งมีจุดอ่อนว่าถ้าโค้ดมีขนาดใหญ่ (เช่น เกม) อาจส่งผลต่อประสิทธิภาพโดยรวม (เช่น เฟรมเรตตกลง)
กูเกิลจึงเปลี่ยนมาใช้วิธีแปลงโค้ดแบบขนาน (concurrent compilation) แทน ทำให้ประสิทธิภาพโดยรวมของการประมวลผลดีขึ้นเพราะไม่ต้องรอกัน
เว็บไซต์ InfoWorld สรุปภาพรวมของตลาดการพัฒนาซอฟต์แวร์ในปี 2013 ไว้หลายข้อดังนี้
ขณะที่ฝั่ง Chrome กำลังพัฒนา NaCl เพื่อการรันโค้ดแบบเนทีฟในเบราว์เซอร์ ทางฝั่ง Mozilla ผู้พัฒนาไฟร์ฟอกซ์นั้นหันไปพัฒนา asm.js มาตรฐานที่เน้นการออปติไมซ์บางส่วนของจาวาสคริปต์เพื่อให้คอมไพล์ภาษา C/C++ มาเป็น asm.js ได้ และรันได้ความเร็วใกล้เคียงเนทีฟ ตอนนีทาง Mozilla ก็ออกมาแถลงผลการปรับปรุงรอบล่าสุดว่าช้าที่สุดไม่เกิน 1.5 เท่าของโค้ดแบบเนทีฟจากคอมไพล์เลอร์ clang แล้ว
การเปรียบเทียบนี้เทียบโดยใช้ clang 3.2 เป็นฐาน และข้อมูลก็แสดงให้เห็นว่าที่จริงแล้ว GCC สามารถคอมไพล์ได้ประสิทธิภาพสูงกว่าในหลายกรณี ชุดทดสอบหลายชุดหากเทียบประสิทธิภาพโค้ดที่ได้กับ GCC แล้ว asm.js ก็ยังช้ากว่าเป็นเท่าตัวอยู่
ข่าวนี้ต้องย้อนกันหลายชั้นหน่อยครับ เริ่มจาก โครงการ asm.js ของ Mozilla, Mozilla จับมือ Epic Games ทำเดโม Unreal Engine 3 บนเบราว์เซอร์, Chrome ประกาศรองรับ asm.js บ้าง
สำหรับข่าวนี้ ล่าสุด Chrome และเบราว์เซอร์อีกรายคือ Opera รองรับ asm.js ได้ดีขึ้นเยอะมากแล้ว (Chrome 31 และ Opera 18) สามารถรันเดโม Epic Citadel ได้แล้ว และทาง Epic เองก็ขึ้นชื่อของ Chrome/Opera เป็นเบราว์เซอร์ที่สามารถรันเดโมได้แล้ว
Mozilla แนะนำเครื่องมือใหม่เป็นไลบรารี JavaScript แบบ open source ด้วยชื่อ TogetherJS
ด้วย TogetherJS ผู้สร้างเว็บสามารถเพิ่มเครื่องมือเพื่อการทำงานร่วมกันระหว่างผู้เข้าชมเว็บตั้งแต่ 2 คนขึ้นไปได้ โดยในการใช้งานฟีเจอร์ดังกล่าวผู้เข้าชมเว็บจะสามารถสร้างปฏิสัมพันธ์ระหว่างกันได้หลากหลาย อย่างเช่น
Mozilla เริ่มผนวกฟีเจอร์ของโครงการ Shumway เข้ามาใน Firefox 27 รุ่น Nightly แล้ว
Shumway เป็นซอฟต์แวร์ที่ทำหน้าที่อ่านไฟล์ SWF ที่สร้างด้วย Adobe Flash แล้วแปลงมันออกมาเป็น HTML5/JavaScript เพื่อแสดงผลบนเว็บเบราว์เซอร์โดยไม่ต้องติดตั้ง Flash Player นั่นเอง
เบื้องต้น Shumway เริ่มแปลงไฟล์ SWF แบบง่ายๆ ได้แล้ว แต่คงต้องพัฒนากันอีกนานพอสมควรกว่าจะใช้แทน Flash ได้เต็มตัว ถ้าโครงการนี้ออกมาดีเราคงเห็น Shumway ถูกเปิดใช้เป็นดีฟอลต์ใน Firefox รุ่นเสถียรต่อไป
ไมโครซอฟท์ออกเครื่องมือตัวใหม่ที่ช่วยให้นักพัฒนาเว็บทดสอบเฟรมเวิร์ค JavaScript ที่เขียนเองได้ง่ายขึ้น
BrowserSwarm เป็นเว็บไซต์ที่ทำหน้าที่รันไฟล์ JavaScript ของเรากับ unit test จำนวนมากชุด (ตัวเลขตามภาพคือ 639 ชุด) บนเว็บเบราว์เซอร์หลายค่ายหลายรุ่นให้อัตโนมัติ เพื่อให้นักพัฒนาเว็บสามารถดูผลว่า JavaScript ของตัวเองทำงานได้ดีแค่ไหนบนสภาพแวดล้อมต่างๆ
Mozilla ออก Firefox 22 มีของใหม่ดังนี้
jQuery ไลบรารีจาวาสคริปต์ชื่อดัง ประกาศออกเวอร์ชั่น 2.0 หลังจากพัฒนามาร่วมสิบเดือน
สิ่งที่เป็นจุดเด่นในเวอร์ชั่นนี้ได้แก่
นักพัฒนาที่พร้อมใช้ jQuery ตัวใหม่แล้วสามารถดาวน์โหลดที่หน้าแรกของเว็บโครงการ หรือผ่าน CDN ด้วยสคริปต์
จากข่าวเก่า Firefox เริ่มใช้ OdinMonkey/asm.js รีดประสิทธิภาพของ JavaScript และจับมือ Epic Games พอร์ท Unreal Engine 3 มารันบนเบราว์เซอร์
ล่าสุดฝั่งกูเกิลมีความเคลื่อนไหวในเรื่องนี้แล้ว โดยทีมงาน Chrome เริ่มวางแผนรองรับ asm.js ในเอนจิน JavaScript V8 และประเมินว่าไม่น่าจะต้องใช้ทรัพยากรในการพัฒนามากนัก แต่ผลที่ได้จะออกมาคุ้มค่า
Chrome มีโครงการคล้ายๆ กัน (แก้ปัญหาเดียวกันแต่คนละวิธี) คือ NaCl และ Dart อยู่แล้ว ทั้งหมดเป็นความพยายามในการเร่งประสิทธิภาพของ JavaScript ภายในเบราว์เซอร์ให้ดีขึ้นนั่นเอง
Firefox เริ่มใช้เอนจิน OdinMonkey เพื่อรีดประสิทธิภาพของ JavaScript ในเบราว์เซอร์ให้ดีขึ้นอีกหลายเท่าตัว
หลักการทำงานของ OdinMonkey จะซับซ้อนอยู่บ้างครับ อธิบายแบบสั้นๆ คือ JavaScript ไม่ได้ออกแบบมาสำหรับงานประมวลผลหนักๆ ตั้งแต่แรก ทำให้งานบางอย่างเช่นการคำนวณทศนิยม (floating point) ไม่มีประสิทธิภาพมากนัก ฝั่งของกูเกิลจึงแก้ปัญหานี้ด้วย NaCl หรือการนำโค้ดแบบ native ไปรันร่วมกับโค้ด JavaScript แทน
Jay Sullivan รองประธาน Mozilla กล่าวกับผู้ฟังในงาน SXSW ว่า Firefox จะไม่ลงในแพลตฟอร์มของ Apple จนกว่า Apple จะอนุญาตให้เว็บเบราว์เซอร์ภายนอกสามารถใช้ตัวเรนเดอร์เว็บของตนเองได้
ปัจจุบัน เว็บเบราว์เซอร์จากนักพัฒนาภายนอกที่ไม่ใช่ Safari จะต้องเรนเดอร์เว็บไซต์โดยใช้คอมโพเนนต์ Apple’s UIWebView เท่านั้น แต่ในขณะที่ Apple เองกลับใช้เอนจิ้น JavaScript ของตนเองที่มีชื่อว่า Nitro ซึ่งเร็วกว่าได้
Apple ไม่เปิดให้นักพัฒนาภายนอกสามารถใช้ตัวเอนจิ้นนี้และไม่อนุญาตให้เขียนขึ้นมาเองด้วย ทำให้แอพ Safari นั้นเร็วกว่าเว็บเบราว์เซอร์ตัวอื่น ๆ ใน iOS (เช่น Chrome)
สองข่าวของ Chrome for Android แต่เป็นคนละรุ่นกันครับ
หลังจากการถกเถียงกันมาอย่างยาวนาน ทีมนักพัฒนา GNOME ตัดสินใจใช้ JavaScript เป็นภาษาเริ่มต้นในการพัฒนา GNOME Apps โดยจะใช้ร่วมกับภาษาซีในส่วนของการจัดการกับระบบ
Travis Reitter หนึ่งในทีมนักพัฒนาของ GNOME ได้กล่าวถึงเหตุผลในการเลือกใช้ JavaScript ว่ามันเป็นภาษาระดับสูงและถูกใช้งานจริงแล้วใน GNOME Shell และ GNOME Documents อีกทั้งมีความง่ายสำหรับนักพัฒนาใหม่ที่จะศึกษาและพัฒนาต่อไปด้วยในแง่ของโอเพนซอร์ส
Walter Higgins แฟนเกม Minecraft ได้สร้างส่วนเสริมของเกม Minecraft โดยเพิ่ม Rhino ที่เป็นจาวาสคริปต์เอนจินให้สามารถควบคุมตัวเกมได้ ในชื่อ ScriptCraft
ScriptCraft ทำให้ผู้เล่นสามารถเขียนโค้ดสร้างสิ่งก่อสร้างขนาดใหญ่ๆ ได้โดยไม่ต้องควบคุมด้วยตัวเองทีละบล็อก เช่น ผู้เล่นสามารถสร้างสริปต์เพื่อสร้างกำแพงเมืองโดยรับพารามิเตอร์เป็นขนาดของกำแพงได้
เกม Minecraft เพิ่งถูกใช้งานเป็นสื่อการเรียนการสอนในสวีเดน การเพิ่มความสามารถในการเขียนสริปต์อาจเปิดทางให้เกมเดียวกันสามารถใช้งานในการศึกษาระดับสูงขึ้น
ซอร์สโค้ดสามารถดาวน์โหลดได้ที่ Github
ทบทวนข่าวเก่ากันนิดหน่อย
Mozilla ออก Firefox 18 โดยมีของใหม่ดังนี้
จาวาสริปต์เป็นภาษาสคริปต์ของ Netscape ที่พัฒนาขึ้นเพื่อใช้บนเว็บกับ Netscape 2.0 มาตั้งแต่ปี 1995 โดยยืมชื่อ "จาวา" มาจากซันโดยไม่มีความเกี่ยวเนื่องอะไรกัน แต่ความนิยมของจาวาสคริปต์ที่สูงขึ้นเรื่อยๆ จนกระทั่งเริ่มบุกตลาดเซิร์ฟเวอร์ด้วย node.js ตอนนี้ทางออราเคิลก็เปิดโครงการ Nashorn เป็นส่วนหนึ่งของ OpenJDK เพื่อนำจาวาสคริปต์มารันบน JVM แล้ว
โครงการนี้กำลังถูกพัฒนาเป็นการภายในออราเคิลเอง และกำลังเตรียมการโยกย้ายออกมาสู่สาธารณะภายใต้โครงการ OpenJDK จากข้อเสนอของออราเคิล
สมาชิกของ OpenJDK สามารถโหวตเพื่อรับหรือไม่รับโครงการนี้ได้ภายในวันที่ 6 ธันวาคมที่จะถึงนี้