Johnikum я подобного оптимизма не разделяю: более/менее сложное взаимодействие с браузером и код уже точи под бравзер, язык нетипизирован. в общем яваскрипт устарело: будущее за системами 3d - векторной графики, но, на первых порах, это будет 2д аля флэш.
Все можно было проще сделать. Такие "ОСи" применяют для создания сложных web-ориентированных приложений, в основном в интранете. Я делаю так: 1. Определяю 2 аспекта загрузки a) Системные тесты (1) b) Создание необходимых объектов (1) c) Определение Основной подсистемы (2) 2. Прохожу тесты, создаю объекты и передаю управление базе. Код (Text): var display=document.getElementById("display"); document.getElementById ("dxc").style.background="black"; var HTTPClient; var HTTPClientBridge; var LoaderCounts=0; var LoginForm; var ClientMain; display.style.color="white"; display.style.background="black"; function addHT(re){ display.innerHTML+=re; } addHT("<b>SilentOS v0.1</b>"); addHT("<br /><br /><b>Определение отсутствия InternetExplorer... </b>"); var ua = navigator.userAgent.toLowerCase(); var isIE = (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua.indexOf("webtv") == -1); if (isIE){ addHT(" <font color='red'>[ IE ]</font>"); addHT("<br />Данная система работает только с открытыми продуктами"); }else{ addHT(" <font color='lime'>[ Отсутствует ]</font>"); nextBoot(); } function nextBoot(){ addHT("<br /><b>Создание компонента для обмена данными по HTTP протоколу...</b>"); HTTPClient = document.createElement ("iframe"); HTTPClient.id="HTTPClient"; display.appendChild(HTTPClient); HTTPClientBridge = document.createElement ("form"); HTTPClientBridge.target="HTTPClient"; HTTPClient.style.visibility="hidden"; HTTPClientBridge.style.visibility="hidden"; display.appendChild (HTTPClientBridge); HTTPClientBridge.style.width="0"; HTTPClient.style.width="0"; HTTPClient.style.position="absolute"; HTTPClientBridge.style.position="absolute"; addHT("<b>[ Сделано ]"); addHT("<br /><br /><b>Загрузка основной подсистемы...</b>"); continueBoot(); } ... В ContinueBoot создается объект Console, куда копируется содержимое display, затем display уничтожается, устанавливаются шрифты, загружаются изображения (массив), создаются механизмы обмена данными между клиентом и сервером (функции работы с файламми, БД, сокеты и тп), создаются виджеты. Это все читается из архива SilentKernel.zip. После распаковки SilentKernel определяется формат запроса. Это бинарные данные следующего вида Заголовок - 6байт Версия 4байта Размер структуры импорта 8байт далее - Структура импорта id - 4 байта addr - 4 байта nextAddr - 4байта После структуры - секция выполнения. Там разные команды реализуются в виде очереди вызовов. Это моя альтернатива XML-RPC Все запросы именованные, любой можно выполнить из консоли (display) Рабочая область - это запущенный запрос Main
osrootd это все в браузере? круто... я так понимаю, эта система не работает с самым популярным браузером?
z_x_spectrum Нет. Разработчики IE пусть идут и читают стандарт DOM W3C им в помощь. Блин, ну все браузеры как браузеры, IE выпендрился как мог.
Тут смыл: Есть ядро. Оно на сервере. Оно умеет (пока): - Работать с ФС - Работать с сокетами - Работать с БД. Есть клиент. Клиент умеет общаться с ядром. Причем, способ общения не очень важен. Ядро принимает двоичные данные (номер ф-ции, параметры, callback). Можно по HTTP протоколу. Callback - это у клиента: то, куда ядро запишет результат работы ф-ции. Общаться с ядром можно только через callback и больше никак. Однако, я щас думаю над форматом запроса, который бы позволял программировать некоторые функции ядра с клинтской машины (я думаю, все представляют как это). Только типы будут уже другие и функции тоже. Завтра как раз тестирование СДО (документооборот) на базе SilentOS. Ядро генерирует в любом случае следующий код: window.parent.[имя_callback_функции](список_параметров) вот пример проверки пользователя и пароля (Все предельно просто ): Код (Text): //callback var DL; var LFD = document.getElementById("LFD"); //Ядро пишет false или true в параметр lg_state ф-ции login function login(lg_state){ if (l){ Main.setLogged(true); LoginForm.setEnabled(false); mf.removeChild(NoLogin); LFD.style.visibility="hidden"; LoadContent(); }else{ alert ("Неправильный ввод"); } } //Вызов авторизации function doLogin(){ xform.method="POST"; xform.action="login"; var l = document.createElement("input"); l.type="hidden"; l.name="l"; l.value=LoginForm.UserLogin; var pp = document.createElement("input"); pp.type="hidden"; pp.name="p"; pp.value=LoginForm.UserPassword; xform.appendChild(pp); xform.appendChild(l); __syscall(91,xform); xform.removeChild(pp); xform.removeChild(l); } doLogin динамически создает форму с полями l и p __syscall - вызывает функцию 91 (УпаковкаИОтправка) ядро принимает l и p: Код (Text): LOGIN = request.getParameter("l"); PASSWORD = request.getParameter("p"); dbproc dbp = new dbproc ("SELECT * FROM users WHERE login=\""+LOGIN+"\" and password=\""+PASSWORD+"\";"); ResultSet RS = dbp.executeAndGet(); try { if (RS.next()){ out.println("<script>" + "window.parent.login(true);" + "</script>"); }else{ out.println("<script>" + "window.parent.login(false);" + "</script>"); } } catch (Exception ex) { } out.close(); Всего-то делов. Ajax тут нет, но страница не перезагружается. Вместо XMLHttpRequest используется скрытый фрейм.
А вот вы говорите, что будущее за 3D. Интересно, а будет ли иметь хоть какую-нибудь популярность проект сайта на OpenGL? Это ведь реально! Но тут размер страницы будет как минимум метр. И плагин. Он 1 раз качается, но займет: 24+7 мегабайт 24 - это или BlackBox или IcedTea, 7 - сама OpenGL Но зато эффекты...
3D под флэш пока убогое, чисто самопальные движки наподобие alternativa3d. И внедрять полное аппаратное 3d во флэше вряд ли будут (не в ближайшее время точно), хотя в 10 версии уже получше с этим делом. Все упирается в кроссплатформенность.
keYMax Ну так кто спорит. В кроссплатформенность, в кроссброузерность, в кроссбоузерверсийность итд. Имхо эту болезнь веба в лоб не преодолеть. Кросс пытаются сделать уже давно (>10 лет), но все попытки накрываются медным тазом, тк выходит новая версия или новый поп броузер и на ровном месте выростает куча глюков. Жаба - не выход, иначе за >10 лет активной рекламы распространилась бы больше.
По-моему, будущее в грамотно написанном ActiveX. Еще плюс ASP можно на серваке юзать, жаль немногие хостинги сию вещь добровольно предоставят, поэтому, если и создавать перспективный сайт, то на своем компе с выходом в инет.
slavanap Все это старые и очень старые технологии. Ихнее будущее - настоящее настоящее. Перечислите на бумажке их текущие временные недостатки и неудобства. И вы получите список их абсолютно непреодолимых ограничений. Наиболее интересна идея у жабы. Но только идея, да и то не полностью. Также интересно, что делают процы с аппаратной жабой. Но тк разрабы больше внимания уделили фронтендовой части - имхо, жаба глухая ветка.
У нее второе дыхание открылось с проектом java.net А глухая она из-за коммерции. Из-за флеша. Флеш весит 7 метров. Java >24. Флеш удобней, на нем быстрее писать. Можно рисовать. Java сложнее но возможностей в 100 раз больше. Java нет для x64 Java.net есть для x64, но нет для Windows Скоро будет. На флеш давит Microsoft. Помогает развиваться. Java.net крышуется OpenSource, которое красиво отобрало коммерческую лицензию у SUN. И еще 1 аспект. Всем тварям нужна скорость разработки. Флеш - нарисовал баннер и готово (+скрипт). В Java надо знать геометрию, арифметику, алгоритмы, буферизацию, устройства вывода графики ( метод getGraphicsDevice() ) и прочую программерскую утварь. Java3D - не то что надо. Это просто набор алгоритмов для работы с тремя измерениями. JOGL - OpenGL с Java. Вот это стоит поюзать.
Ага, и так уже покусала. Причем чем дальше топает тем более неповоротливей становится. Вот firebug в нем весчь, это да.
osrootd сравнение весьма левое: у флэша нет того богатства либ, что в явике. опять же неверно: флэш даёт выбор в разработки - "мануальная терапия" либо же программная реализация, но во втором случае нужно тоже, что и в явике: насчёт того, что ie убог тоже не соглашусь: делаю сейчас сайт с флэшем, externalinterface.call нормально пашет в разных бравзерах и в осле тоже, а вот с оперой упёртость какая -то - пахать нормально не хочет.