Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Lively Kernel является открытым исходным кодом окружающей среды веб - программирования. Он поддерживает настольные приложения с богатой графикой и возможностями прямого управления, но без проблем с установкой или обновлением обычных настольных приложений. [1] [2] Разработка началась в Sun Microsystems Laboratories в Менло-Парке, Калифорния , а затем переехала в Институт Хассо Платтнера в Потсдаме-Бабельсберге недалеко от Берлина.

Обзор [ править ]

Lively Kernel - это графическая композиция и интегрированная среда программирования, полностью написанная на языке программирования JavaScript с использованием стандартной графики браузера (W3C Canvas или SVG). Таким образом, он доступен для любого браузера как веб-страница и начинает работать, как только веб-страница загружается. Он может редактировать свой собственный код и графику, а благодаря встроенной поддержке WebDAV может сохранять свои результаты или даже клонировать себя на новые веб-страницы. Наряду со своими возможностями разработки приложений, он также может функционировать как собственная интегрированная среда разработки (IDE), делая всю систему самодостаточной без каких-либо инструментов, кроме браузера.

Фигуры, виджеты, окна, IDE - все на веб-странице [ править ]

Lively Kernel использует морфическую графическую модель для добавления поведения к графу сцены, построенному на основе графики браузера. Таким образом, простая графика собирается в такие стандартные виджеты, как ползунки, полосы прокрутки, текстовые представления, списки и рамки обрезки. Простая оконная система, построенная на основе этих виджетов, предлагает инспекторы объектов, браузеры файлов и браузеры кода. Таким образом, даже элементарные демонстрационные страницы имеют возможность редактировать и тестировать новый код в простом браузере кода во время работы системы.

Lively использовался для создания простых веб-сайтов, включая собственный учебник, а также клиентскую систему Wiki, которая хранит свои страницы в репозитории с поддержкой версий. Контент может варьироваться от относительно статичных страниц текста до полностью динамических моделей, которые выглядят и ведут себя как симуляции Adobe Flash . Lively Kernel обеспечивает сложное динамическое поведение без какой-либо конкретной поддержки анимации (оно не использует функции анимации SVG), а путем простого планирования нескольких процессов зеленого потока в JavaScript.

Текст и преобразования [ править ]

Lively Kernel включает собственный текстовый редактор с множеством шрифтов, написанный на JavaScript. Он включает поддержку центрирования, выравнивания и аналогичных элементарных возможностей композиции текста. Таким образом, работа в Lively во многом похожа на работу в программе дизайна веб-страниц, за исключением того, что макет текста на лету не выполняется в автономной программе компоновки, а является встроенным динамическим поведением текста в Живое ядро.

Живость графики Lively становится еще более очевидной при манипулировании ручками масштабирования и поворота для объектов и текста. Можно использовать весь обозреватель кода при наклоне на 20 градусов на бок. Поскольку текстовый редактор полностью состоит из живой графики, он отлично работает при повороте или масштабировании, так же как и полосы прокрутки, обрезки кадров и весь остальной пользовательский интерфейс.

Кроссбраузерная совместимость [ править ]

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 отображаются на панели файлов браузера. Если пользователь щелкнет один из этих файлов, он будет прочитан, проанализирован (парсером OMeta JavaScript) и отображен аналогично Smalltalk.браузер с перечисленными функциями или определениями классов, и для каждого класса показаны все имена методов. Пользователь может щелкнуть имя метода, отредактировать его код в нижней панели, а затем сохранить новое определение. Новое определение будет проверено на синтаксис и, если оно верное, будет сохранено обратно в файл .JS. Более того, если он находится в «режиме eval» (обычный случай), метод будет переопределен в работающей системе. Это позволяет вносить некритические изменения без необходимости перезапуска Lively или какого-либо из разрабатываемых приложений. Когда все исходные файлы загружены, быстрое сканирование найдет каждую ссылку на выбранный текст и представит все совпадающие тела кода в отдельном суббраузере.

Lively IDE включает инспекторы объектов и панели стилей морфинга для управления заливками, границами и стилями текста. Существуют также средства для отладки в точках ошибки и профилирования для настройки производительности, но они не были продвинуты из-за повышения качества такой поддержки во время выполнения во всех основных браузерах.

Lively Wiki [ править ]

IDE работает с файлами исходного кода в репозитории с поддержкой версий, чтобы управлять развитием базы кода Lively. Тот же подход был использован для предоставления пользователям возможности контроля над активным веб-контентом в форме клиентской Wiki. Поскольку Lively включает в себя средства для редактирования контента в своих мирах (графы сцены и другой контент), а также для хранения этого контента в виде веб-страниц, соединение WebDAV позволяет Lively сохранять новые версии контента своей страницы во время его постепенной разработки. Поскольку каждая новая версия сохраняется, ее можно просматривать из остальной части Интернета, а предыдущие версии могут быть извлечены в случае ошибки или изменения мнения. Примечательно, что этот стиль развивающегося веб-контента Wiki распространяется на все текстовое, графическое и скриптовое содержимое в Lively, а также на любые новые формы, которые могут быть определены,но без необходимости в каком-либо сервере Wiki.[3] Все, что требуется, - это сервер, обеспечивающий интерфейс HTTP WebDAV. Таким образом теперь поддерживается все большее количество контента Lively Project.

Lively для Qt [ править ]

Lively для Qt - это новая реализация Lively Kernel, в которой части «ядра» заменены функциональностью, предлагаемой фреймворком Qt . [4] Lively для Qt наследует большую часть основных функций (таких как реализация виджетов, управление компоновкой, обработка основных событий и поддержка основного JavaScript) от Qt. Lively for Qt сохраняет исключительно интерактивный характер («живость») Lively Kernel, например, позволяя редактировать пользовательский интерфейс и исходный код приложения «на лету». Однако в Lively for Qt разработка выполняется с использованием знакомых, хорошо документированных API платформы Qt.

Пример кода [ править ]

// ClockMorph: простые аналоговые часыМорф . подкласс ( « ClockMorph » ,  { defaultBorderWidth :  2 ,  тип :  "ClockMorph" , //  Инициализация конструктора :  function ( $ super ,  position ,  radius )  { $ super ( позиция . asRectangle (). expandBy ( радиус ),  "эллипс" );  это . openForDragAndDrop  =  false ;  // Не обрабатывать запросы перетаскивания  this . makeNewFace ();  // Создаем циферблат  return  this ;  }, //  Создаем новый циферблат makeNewFace :  function ()  { var  bnds  =  this . форма . границы ();  var  radius  =  bnds . ширина / 3 ;  var  label  =  [];  var  fontSize  =  Math . макс ( Мат . этаж ( 0.04  *  ( bnds . ширина  +  bnds . высота )), 4 );  var  labelSize  =  fontSize ; // место для центра со вставкой по умолчанию // Добавляем римские цифры к часам  for  ( var  i  =  0 ;  i  <  12 ;  i ++ )  {  var  labelPosition  =  bnds . центр (). addPt ( Point . полярный ( радиус * 0,85 ,  (( i - 3 ) / 12 ) * Math . PI * 2 )). addXY ( размер метки ,  0);  вар  этикетка  =  новый  TextMorph ( пт ( 0 , 0 ). Степень ( пт ( labelSize * 3 , labelSize )),  [ 'XII' , 'I' , 'II' , 'III' , 'IV' , 'V' , «VI» , «VII» , «VIII» , «IX» , «X» , «XI» ] [ i ]);  этикетка .setWrapStyle (WrapStyle . УСИЛИТЬ );  этикетка . SetFontSize ( FontSize );  этикетка . setInset ( pt ( 0 , 0 ));  этикетка . setBorderWidth ( 0 );  этикетка . setFill ( нуль );  этикетка . выровнять ( метка . границы (). центр (), labelPosition . addXY ( - 2 , 1 ));  это. addMorph ( метка );  }   // Добавляем стрелки часов  this . addMorph ( this . hourHand  =  Morph . makeLine ([ pt ( 0 , 0 ), pt ( 0 , - radius * 0.5 )], 4 , Color . blue ));  это . addMorph ( this . minuteHand  =  Morph . makeLine ([ pt ( 0 , 0 ), pt( 0 , - радиус * 0,7 )], 3 , Цвет . синий ));  это . addMorph ( this . secondHand  =  Morph . makeLine ([ pt ( 0 , 0 ), pt ( 0 , - radius * 0,75 )], 2 , Color . red ));  это . setHands ();  это . измененный();  },   // Устанавливаем углы  стрелок часов в зависимости от текущего времени setHands :  function ()  { var  now  =  новая  дата ();  var  second  =  сейчас . getSeconds ();  var  minute  =  сейчас . getMinutes ()  +  секунда / 60 ;  var  hour  =  now . getHours ()  +  минута / 60 ;  это . hourHand . setRotation ( час / 12 * 2 * Math . PI ); это . минутаРука . setRotation ( минута / 60 * 2 * Math . PI );  это . secondHand . setRotation ( секунда / 60 * 2 * Math . PI );  }, // Будет вызываться, когда ClockMorph помещается в мир  startSteppingScripts :  function ()  {  this . startStepping ( 1000 ,  "setHands" );  // раз в секунду  }  });

Ссылки [ править ]

  1. ^ Живое ядро ​​Самостоятельная система на веб-странице
  2. ^ The Lively Kernel Application Framework.
  3. ^ Lively Wiki A Development Environment для создания и совместного использования активного веб-контента , Krahn Ingalls Hirschfeld Lincke Palacz, WikiSym '09, 25–27 октября 2009 г.
  4. ^ Лайвли для Qt: платформа для мобильных веб - приложений , Mikkonen Taivalsaari Terho, мобильность 2009, сентябрь 2-4

Внешние ссылки [ править ]

  • Официальный веб-сайт