อ่าน 6 นาที
เคอร์เนลที่มีชีวิตชีวา
Lively Kernelเป็นสภาพแวดล้อมการเขียนโปรแกรมเว็บแบบโอเพนซอร์ส ซึ่งพัฒนาโดย Dan Ingallsขณะที่เขาอยู่ที่SAP Research...
เคอร์เนลที่มีชีวิตชีวา
| เคอร์เนลที่มีชีวิตชีวา | |
|---|---|
ตัวอย่าง Lively Kernel 0.9 ที่ทำงานในChromium 5 | |
| ผู้เขียนต้นฉบับ | แดน อิงกัลส์ |
| นักพัฒนา | ห้องปฏิบัติการ Sun MicrosystemsสถาบันHasso Plattner |
| เวอร์ชันเสถียร | 2.1.3 / 7 เมษายน 2555 |
| เขียนเป็น | JavaScriptหรือC++ในรูปแบบQt |
| ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
| แพลตฟอร์ม | Apple Safari , Mozilla Firefox , Google Chrome , Opera , iPhone – iPad , Microsoft Internet Explorerเวอร์ชันก่อน 9 เท่านั้นที่ใช้งานได้กับส่วนขยาย แต่มีเวอร์ชันทดลองที่ต้องใช้ปลั๊กอินเพิ่มเติมสำหรับเว็บเบราว์เซอร์ให้ใช้งานได้เช่นกัน |
| มีจำหน่ายใน | ภาษาอังกฤษ |
| พิมพ์ | การพัฒนาเว็บไซต์ |
| ใบอนุญาต | เอ็มไอที |
| เว็บไซต์ | lively-kernel |
| ที่เก็บข้อมูล |
|
Lively Kernelเป็นสภาพแวดล้อมการเขียนโปรแกรมเว็บแบบโอเพนซอร์ส ซึ่งพัฒนาโดย Dan Ingallsขณะที่เขาอยู่ที่SAP Research โดยรองรับแอปพลิเคชันแบบเดสก์ท็อปที่มีกราฟิกที่สวยงามและความสามารถในการจัดการโดยตรง แต่ไม่มีปัญหาในการติดตั้งหรืออัปเกรดเหมือนแอปพลิเคชันเดสก์ท็อปทั่วไป[ 1 ] [ 2 ]การพัฒนาเริ่มต้นที่Sun Microsystems Laboratories ในเมืองเมนโลพาร์ค รัฐแคลิฟอร์เนียและต่อมาได้ย้ายไปยังสถาบัน Hasso Plattnerในเมืองพอตส์ดัม-บาเบลสเบิร์กใกล้กับกรุงเบอร์ลิน
ภาพรวม
Lively Kernel คือสภาพแวดล้อมการจัดองค์ประกอบภาพและการเขียนโปรแกรมแบบบูรณาการที่เขียนขึ้นด้วยภาษาโปรแกรมJavaScriptโดยใช้กราฟิกมาตรฐานของเบราว์เซอร์ (W3C Canvas หรือ SVG) จึงสามารถเข้าถึงได้จากเบราว์เซอร์ใดก็ได้ในรูปแบบเว็บเพจ และจะเริ่มทำงานทันทีที่เว็บเพจโหลดเสร็จ มันสามารถแก้ไขโค้ดและกราฟิกของตัวเองได้ และด้วยการสนับสนุน WebDAV ในตัว มันสามารถบันทึกผลลัพธ์หรือแม้แต่คัดลอกตัวเองไปยังเว็บเพจใหม่ได้ นอกจากความสามารถในการพัฒนาแอปพลิเคชันแล้ว มันยังสามารถทำหน้าที่เป็นสภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) ของตัวเอง ทำให้ระบบทั้งหมดทำงานได้ด้วยตัวเองโดยไม่ต้องใช้เครื่องมือใดๆ นอกจากเบราว์เซอร์
รูปทรง วิดเจ็ต หน้าต่าง และ IDE ทั้งหมดอยู่ในหน้าเว็บเพจเดียวกัน
Lively Kernel ใช้ โมเดลกราฟิก แบบ Morphicเพื่อเพิ่มพฤติกรรมให้กับกราฟฉากที่สร้างจากกราฟิกของเบราว์เซอร์ กราฟิกอย่างง่ายจึงถูกประกอบเข้าด้วยกันเป็นวิดเจ็ตกราฟิก มาตรฐาน เช่นตัวเลื่อนแถบเลื่อนมุมมองข้อความ รายการ และกรอบตัดภาพ ระบบหน้าต่าง อย่างง่าย ที่สร้างจากวิดเจ็ตเหล่านี้มีตัวตรวจสอบวัตถุตัวจัดการไฟล์ (เบราว์เซอร์) และตัวเรียกดูโค้ดแม้แต่หน้าสาธิตพื้นฐานก็ยังสามารถแก้ไขและทดสอบโค้ดใหม่ในตัวเรียกดูโค้ดอย่างง่ายในขณะที่ระบบกำลังทำงานอยู่
Lively ถูกนำมาใช้สร้างเว็บไซต์อย่างง่าย รวมถึงบทช่วยสอนของตัวเอง และ ระบบ Wiki ฝั่งไคลเอ็นต์ ที่จัดเก็บหน้าเว็บไว้ในที่เก็บข้อมูลแบบมีเวอร์ชัน เนื้อหาอาจแตกต่างกันไป ตั้งแต่หน้าข้อความแบบคงที่ ไปจนถึงโมเดลแบบไดนามิกเต็มรูปแบบที่ดูและทำงานเหมือนกับ การจำลอง Adobe Flash Lively Kernel สามารถสร้างพฤติกรรมแบบไดนามิกที่ซับซ้อนได้โดยไม่ต้องอาศัยการรองรับแอนิเมชันเฉพาะ (ไม่ได้ใช้คุณสมบัติแอนิเมชันของ SVG) แต่ใช้การจัดตารางเวลาอย่างง่ายของกระบวนการgreen thread หลายกระบวนการ ใน JavaScript
ข้อความและการแปลง
Lively Kernel มีโปรแกรมแก้ไขข้อความแบบหลายฟอนต์ที่เขียนด้วย JavaScript ในตัว รองรับการจัดข้อความให้อยู่ตรงกลาง จัดชิดขอบ และความสามารถในการจัดรูปแบบข้อความขั้นพื้นฐานอื่นๆ การทำงานใน Lively จึงให้ความรู้สึกคล้ายกับการทำงานในโปรแกรมออกแบบเว็บเพจ ยกเว้นว่าการจัดวางข้อความแบบเรียลไทม์นั้นไม่ได้ทำในโปรแกรมจัดรูปแบบแบบออฟไลน์ แต่เป็นการทำงานแบบไดนามิกของข้อความใน Lively Kernel นั่นเอง
ความมีชีวิตชีวาของกราฟิก Lively นั้นยิ่งเห็นได้ชัดเจนขึ้นเมื่อปรับขนาดและหมุนวัตถุและข้อความ สามารถใช้งานโปรแกรมดูโค้ดได้ทั้งหมดแม้จะเอียงไปด้านข้าง 20 องศา เนื่องจากโปรแกรมแก้ไขข้อความประกอบด้วยกราฟิก Lively ทั้งหมด จึงทำงานได้อย่างถูกต้องแม้จะหมุนหรือปรับขนาด เช่นเดียวกับแถบเลื่อน กรอบตัด และส่วนอื่นๆ ของอินเทอร์เฟซผู้ใช้ทั้งหมด
ความเข้ากันได้กับเบราว์เซอร์ต่างๆ
Lively Kernel ขึ้นอยู่กับการรองรับ JavaScript และกราฟิก SVG หรือ Canvas ของเบราว์เซอร์ ซึ่งทั้งหมดนี้เป็นส่วนหนึ่งของมาตรฐาน W3C แล้ว ณ ปี 2009 หมายความว่ามันสามารถทำงานได้ในเบราว์เซอร์ Safari, Firefox, Chrome และ Opera
แม้ว่าข้อกำหนดนี้อาจดูไม่เข้ากันเท่ากับ HTML แต่ Lively นั้นกลับเข้ากันได้กับเบราว์เซอร์ต่างๆ มากกว่า HTML เสียอีก เนื่องจากมีรูปแบบการใช้งานที่สม่ำเสมอกว่าใน JavaScript, SVG และ Canvas มากกว่าการใช้งาน HTML ในรูปแบบต่างๆ ยกเว้นไฟล์เริ่มต้นขนาดเล็กไฟล์เดียว โค้ดพื้นฐานของ Lively Kernel นั้นปราศจากการทดสอบว่าเบราว์เซอร์ของลูกค้าใช้งานอยู่หรือไม่
ณ ปี 2011 Lively Kernel ทำงานได้ดีที่สุดใน เบราว์เซอร์ที่ใช้ WebKitเช่นSafariสำหรับ Macintosh หรือChromiumหรือGoogle Chromeสำหรับ Windows การใช้งานใน Internet Explorer (Windows) จำเป็นต้องใช้Google Chrome Frameการทดสอบในเบราว์เซอร์ยอดนิยมทั้งหมดมีกำหนดไว้ในเวอร์ชันถัดไป
สภาพแวดล้อมการพัฒนาแบบบูรณาการ
Lively มีสภาพแวดล้อมการพัฒนาแบบบูรณาการที่มีประสิทธิภาพสูง ออกแบบมาให้ทำงานผ่านWebDAVกับไฟล์ JavaScript ต้นฉบับประมาณสิบกว่าไฟล์ในเครื่อง ซึ่งสามารถซิงโครไนซ์กับที่เก็บข้อมูลแบบมีเวอร์ชันได้ หากผู้ใช้เปิด SystemBrowser ไฟล์ JavaScript ต้นฉบับทั้งหมดจะแสดงอยู่ในบานหน้าต่างไฟล์ของเบราว์เซอร์ หากผู้ใช้คลิกที่ไฟล์ใดไฟล์หนึ่ง ไฟล์นั้นจะถูกอ่าน วิเคราะห์ (โดยตัววิเคราะห์ JavaScript OMeta) และแสดงผลคล้ายกับ เบราว์เซอร์ Smalltalkโดยแสดงรายการฟังก์ชันหรือคำจำกัดความของคลาส และสำหรับแต่ละคลาส จะแสดงชื่อเมธอดทั้งหมด ผู้ใช้สามารถคลิกที่ชื่อเมธอด แก้ไขโค้ดในบานหน้าต่างด้านล่าง จากนั้นบันทึกคำจำกัดความใหม่ คำจำกัดความใหม่จะถูกตรวจสอบไวยากรณ์ และหากถูกต้อง จะถูกบันทึกกลับไปยังไฟล์ .JS นอกจากนี้ หากอยู่ใน "โหมดประเมินผล" (กรณีปกติ) เมธอดจะถูกกำหนดใหม่ในระบบที่กำลังทำงานอยู่ ซึ่งช่วยให้สามารถทำการเปลี่ยนแปลงที่ไม่สำคัญได้โดยไม่ต้องรีสตาร์ท Lively หรือแอปพลิเคชันใดๆ ที่กำลังพัฒนาอยู่ เมื่อโหลดไฟล์ต้นฉบับทั้งหมดแล้ว การสแกนอย่างรวดเร็วจะค้นหาการอ้างอิงทั้งหมดไปยังข้อความที่เลือก และแสดงเนื้อหาของโค้ดทั้งหมดที่ตรงกันในเบราว์เซอร์ย่อยแยกต่างหาก
โปรแกรมพัฒนาแบบ IDE ของ Lively มีตัวตรวจสอบวัตถุและแผงสไตล์มอร์ฟสำหรับควบคุมการเติมสี เส้นขอบ และรูปแบบข้อความ นอกจากนี้ยังมีฟังก์ชันสำหรับการดีบัก ณ จุดที่เกิดข้อผิดพลาดและการวิเคราะห์ประสิทธิภาพเพื่อปรับแต่งการทำงาน แต่ฟังก์ชันเหล่านี้ยังไม่ได้รับการพัฒนาอย่างเต็มที่ เนื่องจากคุณภาพการสนับสนุนรันไทม์ในเบราว์เซอร์หลักๆ ทุกตัวดีขึ้นเรื่อยๆ
วิกิที่มีชีวิตชีวา
IDE ทำงานกับไฟล์ซอร์สโค้ดในที่เก็บเวอร์ชันเพื่อจัดการวิวัฒนาการของฐานโค้ด Lively แนวทางเดียวกันนี้ถูกนำมาใช้เพื่อให้ผู้ใช้สามารถควบคุมเนื้อหาเว็บแบบแอคทีฟในรูปแบบของ Wiki ฝั่งไคลเอ็นต์ เนื่องจาก Lively มีสิ่งอำนวยความสะดวกในการแก้ไขเนื้อหาในโลก (กราฟฉากและเนื้อหาอื่นๆ) และจัดเก็บเนื้อหานั้นเป็นเว็บเพจ การเชื่อมต่อ WebDAV ช่วยให้ Lively สามารถจัดเก็บเวอร์ชันใหม่ของเนื้อหาหน้าเว็บในขณะที่กำลังพัฒนาเพิ่มขึ้น เมื่อบันทึกเวอร์ชันใหม่แต่ละเวอร์ชันแล้ว จะสามารถดูได้จากส่วนที่เหลือของอินเทอร์เน็ต และสามารถเรียกคืนเวอร์ชันก่อนหน้าได้ในกรณีที่เกิดข้อผิดพลาดหรือเปลี่ยนใจ เป็นที่น่าสังเกตว่ารูปแบบ Wiki ของเนื้อหาเว็บที่พัฒนาไปเรื่อยๆ นี้ครอบคลุมถึงเนื้อหาข้อความ กราฟิก และสคริปต์ทั้งหมดใน Lively รวมถึงรูปแบบใหม่ๆ ที่อาจกำหนดขึ้นได้ โดยไม่จำเป็นต้องมีเซิร์ฟเวอร์ Wiki ใดๆ[ 3 ] สิ่งที่จำเป็นคือเซิร์ฟเวอร์ที่ให้บริการอินเทอร์เฟซ HTTP WebDAV ปัจจุบันเนื้อหาของ Lively Project จำนวนมากได้รับการดูแลรักษาในลักษณะนี้
ตัวอย่างโค้ด
// ClockMorph: นาฬิกาอะนาล็อกแบบง่ายMorph.subclass ( " ClockMorph " , {defaultBorderWidth : 2 , type : "ClockMorph" ,// ฟังก์ชันเริ่มต้น คอนสตรัคเตอร์ : function ( $super , position , radius ) {$super ( position . asRectangle (). expandBy ( radius ), "ellipse" ); this . openForDragAndDrop = false ; // ไม่จัดการคำขอการลากและวางthis . makeNewFace (); // สร้างหน้าปัดนาฬิกาreturn this ; },// สร้างหน้าปัดนาฬิกาใหม่makeNewFace : function () {var bnds = this.shape.bounds ( ) ; var radius = bnds.width / 3 ; var labels = []; var fontSize = Math.max ( Math.floor ( 0.04 * ( bnds.width + bnds.height ) ) , 4 ) ; var labelSize = fontSize ; // เว้นที่ว่างเพื่อจัดกึ่งกลางด้วยค่า inset เริ่มต้น// เพิ่มเลขโรมันให้กับนาฬิกาสำหรับ( var i = 0 ; i < 12 ; i ++ ) { var labelPosition = bnds . center (). addPt ( Point . polar ( radius * 0.85 , (( i - 3 ) / 12 ) * Math . PI * 2 )). addXY ( labelSize , 0 ); var label = new TextMorph ( pt ( 0 , 0 ). extent ( pt ( labelSize * 3 , labelSize )), [ 'XII' , 'I' , 'II' , 'III' , 'IV' , 'V' , 'VI' , 'VII' , 'VIII' , 'IX' , 'X' , 'XI' ][ i ]); label . setWrapStyle ( WrapStyle . SHRINK ); label . setFontSize ( fontSize ) ; label.setInset ( pt ( 0 , 0 ) ) ; label.setBorderWidth ( 0 ) ; label.setFill ( null ) ; label.align ( label.bounds ( ) . center ( ) , labelPosition.addXY ( -2 , 1 ) ) ; this.addMorph ( label ) ; } // Add clock hands this.addMorph ( this.hourHand = Morph.makeLine ( [ pt ( 0 , 0 ) , pt( 0 , - radius * 0.5 )], 4 , Color . blue )); this . addMorph ( this . minuteHand = Morph . makeLine ([ pt ( 0 , 0 ), pt ( 0 , - radius * 0.7 )], 3 , Color . blue )); this . addMorph ( this . secondHand = Morph . makeLine ([ pt ( 0 , 0 ), pt ( 0 , - radius * 0.75 )], 2 , Color . red )); this . setHands (); this . changed (); }, // ตั้งค่ามุมเข็มนาฬิกาตามเวลาปัจจุบันsetHands : function () {var now = new Date ( ) ; var second = now.getSeconds ( ) ; var minute = now.getMinutes ( ) + second / 60 ; var hour = now.getHours ( ) + minute / 60 ; this.hourHand.setRotation ( hour / 12 * 2 * Math.PI ) ; this.minuteHand.setRotation ( minute / 60 * 2 * Math.PI ) ; this.secondHand.setRotation ( second / 60 * 2 * Math.PI ) ; } ,// จะถูกเรียกเมื่อวาง ClockMorph ลงในโลกstartSteppingScripts : function () { this . startStepping ( 1000 , "setHands" ); // หนึ่งครั้งต่อวินาที} });มีชีวิตชีวาสำหรับ Qt
Lively for Qtเป็นการใช้งาน Lively Kernel อีกรูปแบบหนึ่ง โดย ส่วนของ เคอร์เนลใน JavaScript จะถูกแทนที่ด้วยฟังก์ชันจากเฟรมเวิร์ก Qt ในC++ [ 4 ] [ 5 ] Lively for Qt สืบทอดฟังก์ชันพื้นฐานส่วนใหญ่ (เช่น การใช้งานวิดเจ็ต การจัดการเลย์เอาต์ การจัดการเหตุการณ์หลัก และการสนับสนุน JavaScript หลัก) จาก Qt Lively for Qt ยังคงรักษาลักษณะการโต้ตอบที่ยอดเยี่ยม ("ความมีชีวิตชีวา") ของ Lively Kernel ไว้ เช่น การอนุญาตให้แก้ไขส่วนติดต่อผู้ใช้และซอร์สโค้ดของแอปพลิเคชันได้ทันที อย่างไรก็ตาม ใน Lively for Qt งานพัฒนาจะดำเนินการโดยใช้API ( Application Programming Interface ) ที่คุ้นเคยและมีเอกสารประกอบอย่างดีของแพลตฟอร์ม Qt
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เคอร์เนลที่มีชีวิตชีวา
Lively Kernelเป็นสภาพแวดล้อมการเขียนโปรแกรมเว็บแบบโอเพนซอร์ส ซึ่งพัฒนาโดย Dan Ingallsขณะที่เขาอยู่ที่SAP Research...
ภาพรวม
Lively Kernel คือสภาพแวดล้อมการจัดองค์ประกอบภาพและการเขียนโปรแกรมแบบบูรณาการที่เขียนขึ้นด้วย ภาษาโปรแกรม JavaScript โดยใช้กราฟิกมาตรฐานของเบราว์เซอร์ (W3C Canvas หรือ SVG) จึงสามารถเข้าถึงได้จากเบราว์เซอร์ใดก็ได้ในรูปแบบเว็บเพจ...
รูปทรง วิดเจ็ต หน้าต่าง และ IDE ทั้งหมดอยู่ในหน้าเว็บเพจเดียวกัน
Lively Kernel ใช้ โมเดลกราฟิก แบบ Morphic เพื่อเพิ่มพฤติกรรมให้กับ กราฟฉาก ที่สร้างจากกราฟิกของเบราว์เซอร์ กราฟิกอย่างง่ายจึงถูกประกอบเข้าด้วยกันเป็น วิดเจ็ตกราฟิก มาตรฐาน เช่นตัว เลื่อน แถบเลื่อน มุมมองข้อความ รายการ และกรอบ ตัด ภาพ ระบบหน้าต่าง อย่างง่าย...
ข้อความและการแปลง
Lively Kernel มีโปรแกรมแก้ไขข้อความแบบหลายฟอนต์ที่เขียนด้วย JavaScript ในตัว รองรับการจัดข้อความให้อยู่ตรงกลาง จัดชิดขอบ และความสามารถในการจัดรูปแบบข้อความขั้นพื้นฐานอื่นๆ การทำงานใน Lively จึงให้ความรู้สึกคล้ายกับการทำงานในโปรแกรมออกแบบเว็บเพจ...