Глухих Михаил Игоревич 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-файла Программа может, например, генерировать на сервере ответы на запросы пользователя из браузера 14
PHP sample 1 15
PHP sample 2 16
PHP 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
Вы также можете почитать