[Homeros] I: Веб-сёрфинг, и, кажись, прямо внутри Luwrain

Michael Pozhidaev msp на altlinux.ru
Чт Фев 5 20:09:43 MSK 2015


Привет всем!

Однак, лень писать большую предысторию, просто на правах интересного
сообщения. У нас иногда попадаются красивые слова: gecko, там, или,
например, webkit. Над ними работают люди, которые иногда совершают
чрезвычайно умные поступки. Так вот, когда делали webkit, то какой-то
хороший человек распилил его на движок, который льёт страницу, пускает
на ней JavaScript, строит DOM, и на часть, которая отвечает за
визуализацию. 

Узнать про это было невозможно, а узнав толку мало, потому что поднять
webkit частным образом нереально. Но в мире появилась группа других,
видимо, чрезвычайно умных людей, которые полезные свойства webkit
просекли, и сделали на его основе библиотечный пакет на Java объёмом
около так с 30 тысяч строк. Когда нашёл вот эту ссылку, она меня привела
в трепет:

http://docs.oracle.com/javafx/2/api/javafx/scene/web/WebEngine.html

Сама по себе ссылка просто восхитительная, но сразу же порождает много
тревог. Из них первая была - при помощи чего. В тамошних раскопках как
раз и выяснилось, что это по существу JNI-обёртка для динамически
подключаемого JavaScript. Оставались другие тревоги:

1. JavaFX - новый продукт с непонятной лицензией.

2. Какое должно быть окружение, чтобы можно было бы использовать
javafs.scene.web.WebEngine?

3. JavaFX изначально был для запуска в браузере, а точно ли мы его
запустим вне окружения браузера?

Первая тревога устранилась после слития репозитория по ссылке:

http://hg.openjdk.java.net/openjfx/8u-dev/rt

Там лежат все исходники этого дела в открытом доступе. Сам-то webkit
открыт по определению.

Вторая тревога пока не устранена полностью, но даже если выяснится, что
для работы WebEngine нужно окружение JavaFX, то мы сделаем новую
реализацию интерфейса org.luwrain.core.Interaction через JavaFX, а не
через AWT, который сейчас использован для простоты. Вполне нормальный
ход.

Ну а третью тревогу я устранил просто пообщавшись в их списке.

Так что же это получается? А всё может очень неплохо получиться. Мы
заведём app-browser.git, в котором запустим javafx.scene.web.WebEngine,
вытащим из него DOM, нарисуем этот DOM в текстовом интерфейсе (и
подозреваю, что доступность у него будет предельная, поскольку в таком
виде от нас не скроешься), и будем пускать там JavaScript и вообще
работать как в webkit, но только в Luwrain. Само собой, апологеты
нативного сёрфинга сейчас вмиг воскликнут, что без RIA браузер не браузер,
но мы отсутствие Flash переживём. Кстати, вопросы доступности HTML5 здесь можно
попытаться поисследовать и даже сделать какие-нибудь предложения. Если
же выяснится, что WebEngine не работает без WebView, то будет ещё
веселее. ПРидётся сделать так, чтобы основная часть экрана была текстовой, а
в маленькой панельке снизу болталось бы картинка страницы в виде, как её
могут увидеть зрячие люди.

-- 
Michael Pozhidaev. Tomsk, Russia.
Russian info page: http://www.marigostra.ru/
English info page: http://www.marigostra.com/


Подробная информация о списке рассылки Homeros