Page 1 of 9

Браузер: свой, портированный или через java vm?

Posted: Thu Jun 09, 2011 11:50 am
by SoUrcerer
Хочу иметь браузер в Колибри. Не просто браузер, а с поддержкой таблиц, div'ов и других вкусностей. Писать код с нуля интересно и полезно, но я хочу потерпеть с этим, и для начала максимально быстро заполучить работающий браузер в Колибри. Самый быстрый вариант, по всей видимости - реализация java-машины и запуск какого-нибудь браузера в ней. Например, знаменитой Opera Mini.

Я смотрел на компилятор и интерпретатор Java проекта GNU, но он просто монструозный по размеру, и тянет за собой кучу зависимостей от GCC. Кто-то когда-то грозился собрать GCC для Kolibri, но пока GCC нет - не будет и GCJ (и слава Богу, админь!). Гораздо более привлекательной мне кажется реализация J2ME через JVM от Sun/Oracle. Сама виртуальная машина в скомпилированном виде занимает менее 128 килобайт, ее расширенная версия, способная запускать Opera Mini - около 400 килобайт. Руководство по портированию прилагается - подробнейшее и увлекательное.

Для компиляции требуется C99-совместимый компилятор и некоторый набор библиотечных функций. Полная реализация потребует следующих оберток:
  • Файловая система (open close read write stat lseek ftruncate fstat mkdir opendir readdir closedir)
    Эмуляция LCDUI, включая рисование примитивов
    Сокеты (включая HTTP/1.1 и HTTPS)
    Звуковая подсистема (wav и сигналы)
    MIDI (учитывая, что сам генератор уже в коде имеется, нужно лишь сделать фронт-энд для вывода сгенерированных wav)
Думаю, если в системе будет возможность запускать Opera Mini через JVM, у многих людей найдется 500-600 лишних килобайт в образе системы на почти-полноценный-сёрфинг-из-Колибри. Собственно, в ближайшее время намереваюсь выделить время для занятий всем этим.

Аргументы "за" и "против", хорошие идеи, пожелания, помощь - приветствуются.

UPD: собрал из исходников версию для Linux - полет отличный, размер бинарника - около 512 килобайт, используются только библиотеки X-сервера. Opera Mini шустро смотрит форум Колибри, поддерживаются жесты, ввод с клавиатуры, прокрутка и нажатие на ссылки мышью.

Re: Java VM

Posted: Thu Jun 09, 2011 12:20 pm
by bw
А почему не Gecko или WebKit?

..bw

Re: Java VM

Posted: Thu Jun 09, 2011 12:24 pm
by SoUrcerer
Ковырял я и Gecko, и WebKit. Они прилично тяжелые, и у них большое количество зависимостей. ИМХО, гораздо более реально портировать dillo. Не исключаю, что займусь и чем-то из этого в будущем, но вариант с java-машиной кажется мне более перспективным.

Re: Java VM

Posted: Thu Jun 09, 2011 1:13 pm
by XVilka
Более песпективно смотриться вот это http://vmkit.llvm.org/

Re: Java VM

Posted: Thu Jun 09, 2011 2:28 pm
by lev
: А я к Lynx приглядывался.

Re: Java VM

Posted: Thu Jun 09, 2011 6:00 pm
by XVilka
lev: это к чему?

Re: Java VM

Posted: Thu Jun 09, 2011 6:07 pm
by lev
Читал сообщение через строчку и мне почему-то показалось, что оно посвящено хотелке иметь другой браузер для Колибри.
Поэтому упомянул "линкс" (кликабельно), позже сообразил, что топик-то назван "Java VM" и она-то и обсуждается, но сообщение уже удалять не стал, а взял в теги офтопика, вдруг его кто портирует.
----
зы Кстати почему на форуме офтопик так сильно выделяется? Обычно его делают чуток неприметнее основного текста. Извинясь за ещё более сильный офтопик.

Re: Java VM

Posted: Thu Jun 09, 2011 6:14 pm
by yogev_ezra
lev wrote:Читал сообщение через строчку и мне почему-то показалось, что оно посвящено хотелке иметь другой браузер для Колибри.
Browser тут тоже обсуждают, но зачем нам Lynx? Массы не оценят, да и есть он уже (HTMLV). Нам бы браузер для ламеров, типа Internet Explorer :lol:

Моё предложение - нанять программеров за деньги, и пусть напишут браузер. А Sorcerer будет им делать code reviews.

Re: Java VM

Posted: Thu Jun 09, 2011 6:17 pm
by XVilka
yogev_ezra: предложение поддерживаю, только пусть тогда сразу на fasm-е пишут.

P.S. Lynx - стар. elinks во сто раз круче.

Вот, что очень интересно смотриться http://www.w3.org/Library/

Re: Java VM

Posted: Thu Jun 09, 2011 6:30 pm
by SoUrcerer
Очень неспортивно нанимать программистов, и очень накладно. Думаю, написание браузера с нуля (минимального, без всяких излишеств) - это задачка на полгодика с оплатой в 3-4 тысячи долларов ежемесячно. Боюсь, это мало кому по карману. Дешевле нанять индусов для портирования WebKit.

XVilka, libwww устарела лет 5 назад, разве нет?

Re: Java VM

Posted: Thu Jun 09, 2011 6:34 pm
by yogev_ezra
Sorcerer wrote:Дешевле нанять индусов для портирования WebKit.
Тоже вариант, хотя ещё менее спортивно. Ты его поддержишь, если я дам денег?

Re: Java VM

Posted: Thu Jun 09, 2011 6:38 pm
by XVilka
да, это я махнул лишка насчет libwww.
Ну, тогда по чуть-чуть кода из Arachne (http://www.glennmcc.org/), Dillo (кстати тоже лого колибри http://www.dillo.org/) и Elinks (http://repo.or.cz/w/elinks.git)

Re: Java VM

Posted: Thu Jun 09, 2011 6:46 pm
by SoUrcerer
yogev_ezra wrote:
Sorcerer wrote:Дешевле нанять индусов для портирования WebKit.
Тоже вариант, хотя ещё менее спортивно. Ты его поддержишь, если я дам денег?
Если нужен позарез браузер - то почему бы и нет. Если можно потерпеть до конца лета - то лучше потерпеть до конца лета. У меня наполеоновские планы.
XVilka wrote:да, это я махнул лишка насчет libwww.
Ну, тогда по чуть-чуть кода из Arachne (http://www.glennmcc.org/), Dillo (кстати тоже лого колибри http://www.dillo.org/) и Elinks (http://repo.or.cz/w/elinks.git)
Код Arachne мне не очень понравился, он уже даже gcc не собирается. Elinks и w3c - интересные браузеры, но в Колибри они не нужны, я считаю. Dillo выглядит самым перспективным из этой тройки. За вчерашний вечер я успел собрать несколько библиотек, которые нужны для Укропчика, но самая большая зависимость - это FLTK2. Насколько я знаю, сейчас FLTK2 очень серьезно завязан на коде сторонних библиотек.

Re: Java VM

Posted: Thu Jun 09, 2011 6:51 pm
by XVilka
elinks надо рассмотреть с точки зрения отдельных кусков кода, я имел ввиду. Да и FLTK лучше выкинуть, имхо. А какие, если не секрет, библиотеки?

Re: Java VM

Posted: Thu Jun 09, 2011 7:07 pm
by SoUrcerer
Целиком только Dlib - стандартная библиотека dillo. Плюс начал наработки по dpi - системе плагинов. Кроме этого нужны будут:
dw - подсистема виджетов (поля для ввода, вывод html), она как раз и связана с fltk
lout - хз что она делает, что-то с объектами и сигналами
и собственно сам dillo.

Похоже, даже dillo потянет за собой кучу стороннего и тяжелого кода, и собственный велосипед может быть даже лучшим решением..

p.s. так как тема ушла от начального сообщения в параллельную реальность, название темы пришлось изменить.