Я думаю, у меня есть следующие вопросы:
Если под «с нуля» вы имеете в виду, что вы не хотите просто обрабатывать ранее существующие виджеты, я бы начал с выбора фреймворка javascript, соответствующего вашим спецификациям (jquery, dojo, aria и т. Д.), А затем выяснил, может простираться так далеко, насколько вы можете их подтолкнуть. (это предполагает, что вы не против того, чтобы виджеты были с открытым исходным кодом. Также вы можете либо восполнить недостаток доступности, либо не рассматривать это как проблему.)
Я бы не стал полагаться на серверную сторону больше, чем на вывод кода, сохранение изменений и загрузку сохраненных данных для виджета. Если вам уже нужен ajax для передачи взаимодействий от клиента к серверу, зачем останавливать виджет, заставляя сервер обращать внимание на другие механизмы виджета?
Я бы не использовал Java, но по той же причине, что и Н. Шервин. Это не моя сильная сторона. Но я также думаю, что мы выходим за пределы зависимости от компиляторов и полноценных приложений для выполнения задач в Интернете. У Java будет свое место в обозримом будущем, но нам не нужно полагаться на него (или, если уж на то пошло, Flash), когда наши браузеры (и разработчики!) Могут выполнять работу быстрее и с меньшими накладными расходами. (Не говоря уже о том, что это может ПОМОЧЬ доступности и удобству использования. Подумайте, мобильные телефоны не нуждаются в специальном приложении для просмотра Facebook или Twitter!)
Все это немного меняется в зависимости от моего первого вопроса: что вы подразумеваете под виджетом? Если вы имеете в виду календарь встреч, или фоторамку, или таймер обратного отсчета (Боже, мне скучно, извините), то помните все, что я сказал выше. Используйте php или RoR для генерации кода, js через хорошую платформу, чтобы сделать его галочкой, и ajax для xml в MySQL для обработки взаимодействий помимо обработки событий.
Но если вам нужен виджет для посетителей, чтобы они могли поиграть в pac-man, или спроектировать план дома своей мечты, или что-нибудь по-настоящему тяжелое в математике / графике, то я бы поклонился тем, кто знает намного больше, чем я Java / флэш. Я думаю, что наступает день, когда я смогу ударить по барабану даже в тех случаях, но получить что-то даже близко сегодня не стоит человеко-часов.
Вот кое-что, с чем я сейчас борюсь, это может помочь уточнить ваши потребности ...
Давайте представим такой виджет, как Ding от Southwest Airlines! виджет рабочего стола, но в сети. Он предупредит вас, как только появится хорошая сделка. Время имеет большое значение, потому что есть ограниченные места. У вас есть браузер запрашивает сервер каждые полсекунды, чтобы увидеть, есть ли обновление? Вы настраиваете БД, которая при обновлении отправляет на сервер crontask для запуска сценария, обновляющего XML-файл, который браузеру намного проще проверять на наличие изменений размера файла? И все это для того, чтобы пользователь мог использовать DING без необходимости обновления (что, вероятно, приведет к созданию менее эффективной версии того же уровня на сервере)?
У меня есть js-скрипт, который запрашивает cookie для активной страницы каждые полсекунды, поэтому пользователь получает предупреждение, когда его собираются выгнать. Я уверен, что есть какой-то прослушиватель событий, который может устранить необходимость зацикливания, но есть ли эквивалент, когда что-то происходит на сервере, а браузер просто зависает?
Только мои мысли о виджетах и веб-приложениях. Надеюсь, это было полезно.