[LJ2ME]Универсальный клиент
Году в 98
catpad нашел в какой-то книге гениальную фразу "Браузер это универсальный клиент". Мы этой фразой прониклись и с тех пор пытались любой GUI делать с помощью браузера. В наше время ее истиность по-моему вызывать сомнений не может - у значительного числа людей браузер это едиственная запущенная программа.
Но я не об этом - я недавно понял, что такой подход, т.е. одна программа, которая может быть интерфейсом к чему угодно, не нов - так давным давно начал вести себя Emacs.
Но я не об этом - я недавно понял, что такой подход, т.е. одна программа, которая может быть интерфейсом к чему угодно, не нов - так давным давно начал вести себя Emacs.
no subject
no subject
no subject
no subject
Но меня удивило, что этот процесс, когда одна программa пытается заменить все, уже один раз был. Как писал
no subject
Ну вот с Эклипсом то же самое. Явление нездоровое, потому что каждая такая универсальная штука обязательно получается убогой в каком-то смысле. Вот я, например, пользуюсь всё время Goolge Docs. С одной стороны удобно, но это всё-таки какой-то недо-Word, много чего не хватает.
То же самое в Эклипсе - для Джавы он идеален, но во многом другом - убожество. Хотя здесь это просто потому, что только Джаве они уделили столько времени и сил. А вот в броузере, я боюсь, сделать программы лучше уже не получится, там и так уже извращение на грани фантастики.
Вот, сейчас писал и понял, что же на самом деле мне не нравится во всей этой истории: это же какая-то полная путаница причинно-следственных связей получилась - броузер изначально не предназначен для интерактивного GUI (так же, как и весь http protocol). Но из него путём страшных извращений пытаются всё-таки такой полномасштабный GUI соорудить. И всё это вместо того, чтобы как-то радикально изменить технологию.
no subject
А зачем?
> То же самое в Эклипсе
Удивительно, что я, проработав 5 лет в ИБМ, ни разу живого Эклипса не видел
> И всё это вместо того, чтобы как-то радикально изменить технологию.
Поди измени, это ж надо сначала о стандарте договориться, потом еще заставить пользователей что-то новое сгрузить. А так все тихой сапой.
Хотя идея, что нужен новый протокол GUI-over-IP мне нравится. И чтоб открытый и простой, чтобы все могли сами своих клиентов писать.
no subject
Ну всё за тем же: документы доступны отовсюду и никогда не теряются. Двух этих причин достаточно, чтобы только этим и пользоваться.
> Поди измени, это ж надо сначала о стандарте договориться...
А я не имею в виду ничего настолько радикального. Идеальным вариантом для меня было бы вот что:
1) Встроить в броузер такую штуку наподобие Java или Flash, но только чтобы она ни в коем случае не называлась плагином, а была бы именно частью броузера. Это, по-моему, очень важный психологический момент (ничего не надо загружать, всё существует по определению и концептуально является частью броузера).
2) Штука эта должна быть чем-то средним между Java и Flash, потому что оба они не соответствуют требованиям: Джава слишком уродливо выглядит и очень медленно грузится, а Flash наоборот слишком гламурный. Эта GUI-часть должна быстро грузиться и выглядеть точь-в-точь как native OS application.
И чтобы программировать на ней можно было на нормальном Джава-подобном языке.
А внутренний протокол пусть будет AJAX, сколько угодно.
Я не вижу, почему это нельзя сделать. Тот же Майкрософт - если он так боится, что Гугл отнимет у него Office и вообще Windows - пожалуйста, воплотите такую вещь, встройте её во все свои новые версии IE, договоритесь в конце концов с Firefox'ом - и будет всем универсальный клиент и полное щастье.
no subject
А вот это кстати, возможно, заблждение. Люди уже прикыкли и look an feel'у т.н. "интернет"-аппликаций. Нативный гуй -- не всегда лучше.
no subject
no subject
no subject
Если вы знаете такие технологии - расскажите.
no subject
Интересно, можно ли от него перейти как-то к другим языкам. Писать например на JRuby, которые бы как-то через джаву компилировались бы в аякс.
no subject
Спасибо за информацию!
no subject
Теперь надо думать, что дальше, и куда это нас ведет.
no subject
А чем это отличается от того, что уже всть в браузере ? Ваша "штука" называется джавасрипт. Ну разве что аппликации на нем не совсем нативно выглядят. А то, что писать на нем, может, и не так удобно. Так это дело наживное.
Ну и еще возникнут всякие другие языки, компилируемые в браузерный джаваскрипт. Сейчас в него джава вроде только компилируется через GWT. Но можно себе представить и какие-нибудь Руби с Питоном.
В результате браузер вырождается в javascript-engine, на котором бегут разные javascript-аппликации, загружаемые локально и из сети. Каковые пишутся на самых разных языках, а не только на самом javascript'е. (Собственно зародышами таких аппликаций являются гугловские "гаджеты" с их десктопа и google home page).
А когда такое произойдет, можно уже думать о смене underlying технологии и переходе от аякса к чему-нибудь большому, светлому и чистому.
Как-то так. Извиняюсь за спам.
no subject
GUI over network кстати уже было, X называется. Вышло вроде неудачно.
Да и вообще, по-моему, это неправильная идея. Правильно, по-моему, это по сети передавать только б.-м. структурированные данные. А гуем будут заниматься бегущие в браузере аппликации.
Эта аппликации ("гаджеты") либо сгружаются автоматически с сети (навроде аплетов) либо изначально сбандлены с браузером. Причем один и тот же сайт может показываться разными "гаджетами" по-разному.
У браузеров будут разные "дистро": в зависимости от прибандленных к ним "гаджетов". Например я часто пользуюсь фликром, гуглом и ЖЖ, и поставлю себе бразуер с прибандленными к ним соответствующими "гаджетами".
Можно ли будет все это построить на ajax'е, как технологии ? Гугл вроде именно ajax толкает, так что может быть. Но это конечно только внутри. Программистам "гаджетов" никакого ajax'а конечно не видно.
no subject
Апплеты как-то воспринмаются как что-то изолированное от бразузера.
> один и тот же сайт может показываться разными "гаджетами" по-разному.
это уже XML какой-то
> У браузеров будут разные "дистро": в зависимости от прибандленных к ним "гаджетов"
скорее плагины, потому что кто ж заранее знает
> Программистам "гаджетов" никакого ajax'а конечно не видно.
хорошо бы
no subject
Это в смысле, что клиент говорит серверу "set pixel (0,0) to color (0xff, 0xff, 0xff)" ?
Если так, то вроде нет. Оно, по-моему, по-другому работает. Так клиент говорит серверу что-то типа, "create button in widget (id=1234) : position (0,0), size (10, 10)". А сервер ему возвращает "new button (id=1235) created". А когда юзер кнопку нажал, сервер клиенту говорит "button (id=12345) pressed".
>> один и тот же сайт может показываться разными "гаджетами" по-разному.
> это уже XML какой-то
Наверное.
>> У браузеров будут разные "дистро": в зависимости от прибандленных к ним "гаджетов"
> скорее плагины, потому что кто ж заранее знает
И плагины тоже. Такое кстати уже есть.
>> Программистам "гаджетов" никакого ajax'а конечно не видно.
< хорошо бы
Так как этому все и идет. Если уже не пришло.
no subject
>Наверное.
Мой опыт работы с XML скорее отрицательный - вроде правильная идея и так положено , а на практике каждый раз непонятно в чем выигрыш по сравнению с custom plain-text based format и почему такая морока, когда ин пользуешься
"X provides the basic framework, or primitives, for building GUI environments: drawing and moving windows on the screen and interacting with a mouse and/or keyboard".
Видимо Вы правы, хотя не знаю, имеет ли Х понятие о кнопках или он говорит "mouse clicked at X,Y".
Я скорее думал о чем-то, что с точки зрения программиста выглядит как какой-нибудь swing, но вся оконная часть реально выполняется у пользователя, а вся логика на сервере.
> Так как этому все и идет. Если уже не пришло.
Я не очень видимо в курсе последних технологий. Мне представлялось, что сейчас очень мног приходится делать "вручную"
no subject
Может быть. Ну, пусть будет не XML, а какой-нибудь другой текстовый формат, пригодный для представления структурированных данных.
Главное, чтобы эти данные не содержали presentation logic
типа, комманд (draw window (pos=0,0; size=10,10)) или event'ов (button (id=0000) pressed).
Это мне так кажется.
> Видимо Вы правы, хотя не знаю, имеет ли Х понятие о кнопках
> или он говорит "mouse clicked at X,Y". [..]
Может и не имеет кстати.
> Я скорее думал о чем-то, что с точки зрения программиста
> выглядит как какой-нибудь swing, но вся оконная часть реально
> выполняется у пользователя, а вся логика на сервере.
Это мне и кажется сомнительным.
Интересно было бы в этой связи посмотреть на опыт (отрицательный) X11.
> Я не очень видимо в курсе последних технологий.
> Мне представлялось, что сейчас очень мног приходится делать "вручную"
Я и сам не в курсе. Но GWT же есть.
no subject
Ну да, сейчас же JSON в моде.
no subject
Я еще раз об этом подумал, сегодня за обедом, и понял, почему мне эта идея не нравится.
По-моему, дело в том, что эта самая граница, между тем, что в гуе должно делаться на клиенте, а что на сервере, зависит от аппликации и для разных аппликаций очень разная. Например в бизнес-аппликации для заполнения формочек (то, чем я как раз занимаюсь), можно каждый клик возить по интернету. А вот в игрушке какой-нибудь уже нельзя. Поэтому эта граница должна быть подвижная. И двигать ее должна аппликация. Это, по-моему, основное требование к технологии remote gui.
Дальше уже можно подумать, какая технология для этого лучше подходит.
P.S. Заканчиваю спамить. Постараюсь свои умные мысли писать в своем журнале.
no subject
Зато отсутствие стандарта поощряет делать разный интерфейс для разных аппликаций. В моем подходе все быстро станет одинаковым, как все аппликации на Яве похожи.
Да ладно спамить, зачем люди посты пишут, как ни для того, чтобы их комментировали.
no subject
ну хорошо, тогда я продолжу.
ajax это всего лишь какой-то набор хаков (зачеркнуто) технология. Что и как мы делаем с ajax'ом во многом зависит от нас. Скажем, если использовать GWT (см. моя ссылку catpad'у), то у всех аякс-аппликаций, на нем написанных, look and feel будет одинаковым.
В этих аппликациях граница между клиентом и сервером проводится явно. Но так как и клиент и сервер пишутся на джаве, это в принципе позволяет (по крайней мере в build-time), решать какая логика будет на сервере, а какая на клиенте. При наличии определенной методологии работы с GWT, разумеется.
Ваша модель например мне не очень нравится, но ее вроде тоже можно имплементировать на аяксе (e.g. с помощью GWT).
no subject
И веб-сервисы кстати туда же.
То что технология должна поменяться наверное многие понимают. Но единого vision'а вроде бы пока ни у кого нету. Но что-то должно измениться.
То есть пока ныне существующая технология, пусть и покрытая толстым слоем страшных хаков, как-то выдерживает и не трескается, никто ничего менять не будет. Должно произойти "что-то" (compelling event), что бы заставило ее поменять.
Как скажем, сначала анимация, а потом видео и аудио стриминг обеспечили нишу флешу. Но это только ниша конечно.