Глухих Михаил Игоревич mailto
←
→
Транскрипция содержимого страницы
Если ваш браузер не отображает страницу правильно, пожалуйста, читайте содержимое страницы ниже
HTTP request
Сервер:
Клиент:
HTTP response JVM-
Браузер (!)
программа
HTML +
JavaScript
3 HTTP = Hyper-text transfer protocol =
Протокол передачи гипертекста ~
HTML-файлов
HTML = Hyper-text markup language =
Язык разметки гипертекста !=
Язык программирования
Browser (браузер) = программа для
Интернет-сёрфинга
JavaScript = язык программирования ~
язык сценариев для Web-страниц
4 Модель из MVC – по-прежнему полезна
◦ Как правило она «живёт» на сервере
(бывают исключения)
По-прежнему есть представление –
но совершенно другое…
5 Клиент должен уметь отобразить HTML
◦ Это умеют готовые браузеры или встроенные их
варианты, например, JavaFX WebView
Сервер должен уметь сформировать HTML
◦ По своей структуре этот код +- похож на
формирование «дерева сцены».
◦ Но только по структуре, сам код другой!
6 WebView = панель мини-браузера
◦ Умеет отображать HTML
◦ Использует WebEngine для загрузки HTML-файла
◦ И WebHistory для слежения за историей
◦ Является разновидностью узла (JavaFX Node)
◦ …
https://docs.oracle.com/javafx/2/webview/
jfxpub-webview.htm
NB: JavaFX не умеет формировать HTML
7 Браузер соединяется с сервером по
указанному адресу
Загружает оттуда HTML-страницу
Отображает ее в своем окне
В процессе отображения с того же сервера
могут загружаться элементы страницы:
◦ изображения
◦ звуки
◦ видео
◦ …
8 В изначальной форме – лишь язык разметки
гипертекста
Может включать в себя описание
GUI-компонентов
Может включать в себя скрипты, например:
◦ PHP (выполняется на сервере)
◦ JavaScript (выполняется на клиенте)
◦ …
9Калькулятор: складываем два числа.
10 PHP и JavaScript – оба Тьюринг-полные
языки…
… а это значит, что на любом из них можно
написать программу общего назначения
любой сложности (как и на Java или Kotlin)
11 PHP и JavaScript – оба Тьюринг-полные
языки…
… а это значит, что на любом из них можно
написать программу общего назначения
любой сложности (как и на Java или Kotlin)
Принципиальные отличия от Java/Kotlin:
◦ Нет компилятора (есть интерпретатор)
◦ Динамическая типизация
(для переменных не задаются типы)
12 Традиционно PHP и JavaScript используются
в веб-программировании
◦ PHP для дополнительной обработки/генерации
HTML на стороне сервера
◦ JavaScript как элемент HTML-страниц на стороне
браузера
И такое их использование уже имеет мало
отношения к программам общего
назначения
13 Скриптовый язык программирования
4-е место в RedMonk ranking (Jan 2020)
Программа на PHP интерпретируется на
сервере, а её вывод передаётся в браузер
как часть HTML-файла
Программа может, например, генерировать
на сервере ответы на запросы пользователя
из браузера
14PHP sample 1
15PHP sample 2
16PHP sample 3
https://www.ict.social/php/basics
One more example: lesson 5 about forms
18 Скриптовый язык программирования
1-е место в RedMonk ranking (Jan 2020)
Несмотря на название, не имеет никакого
отношения к языку Java
Программа на JavaScript встраивается в
HTML-файл и интерпретируется
непосредственно в браузере
19 Создание всплывающих окон в браузере
◦ Фрагменты кода (сценарии, скрипты) на JavaScript
встраиваются в HTML-файлы
(тег script)
alert('Hello, World!');
20 Создание всплывающих окон в браузере
Обработка событий, связанных с
действиями пользователя на странице
◦ https://www.codeproject.com/Articles/753724/
JavaScript-Front-End-Web-App-Tutorial-Part
21 Создание всплывающих окон в браузере
Обработка событий, связанных с
действиями пользователя на странице
◦ NB: PHP это тоже может
◦ NB2: JS (в отличие от PHP) в процессе обработки
не имеет доступа к информации на сервере
22 Создание всплывающих окон в браузере
Обработка событий, связанных с действиями
пользователя на странице
Анимации: см.
◦ https://habr.com/ru/company/ruvds/blog/354438/
Посылать запросы на сервер
…
23 Сервер
◦ Приложение пишем на Java/Kotlin
◦ На сервере находится модель, контроллер и
«генератор» для представления – HTML
Клиент
◦ В простом случае это браузер + HTML,
принимаемый с сервера
◦ В сложном случае это ещё и скрипты
Хорошо подходит JavaScript
Они могут лежать прямо в HTML
Либо быть отдельными файлами
24 И сервер и клиент пишем на Kotlin…
◦ Сервер компилируем в JVM байт код
◦ Клиент компилируем в JavaScript
25 https://github.com/mglukhikh/job-scheduler
◦ См. пакет web
◦ Маленькое web-приложение, моделирующее запуск
«задач» нажатиями клавиш из браузера
◦ Написано на обычной Java без дополнительных
библиотек
◦ Использует com.sun.net.httpserver.HttpServer для
реализации простого HTTP-сервера
26 https://github.com/mglukhikh/PK
◦ Пакет ktor
◦ Игрушечное web-приложение на Kotlin
◦ Использует библиотеку kotlinx.html для более удобной
генерации HTML
◦ … и библиотеку Ktor для реализации клиент-серверного
взаимодействия
27 Рассмотрели
◦ Общие принципы построения Web-приложений
на Java / Kotlin
Далее
◦ Многопоточность
28Вы также можете почитать