Как стать автором
Обновить

Комментарии 16

Поскольку код, отвечающий на события, выполняется на сервере, может возникнуть небольшая задержка между действием, вызывающим событие, и любыми изменениями в DOM, вызванными обработчиком событий. Это была обычная жалоба на предыдущие серверные веб-фреймворки, такие как Vaadin, что препятствовало их внедрению.

Сейчас есть Vaadin Fusion, где фронт можно писать на TypeScript, причем можно комбинировать обычный Vaadin и Vaadin Fusion, соответственно критичные по производительности участки можно не на стороне сервера обрабатывать, а на клиенте. А можно вообще всё на Vaadin Fusion написать если не нужен SSR, короче очень удобно.

Но Kotlin как язык банально лучше Java. И писать на нем по ощущениям большинству попробовавших программистов приятнее. Да и для DSL Kotlin лучше подходит, а тут у нас как раз HTML-подобный DSL.

Самое главное что меня отталкивает в котлине это его неясное будущее, например есть такая проблема:

Что-то, чего в Java раньше не было, но теперь появилось. Если Kotlin очень повезло, то в Java это сделали достаточно похоже, и разработчику в процессе переучивания с Java на Kotlin это не создаёт проблем. Но что, если это не так?

со временем всё больше и больше фич Kotlin будут попадать под эту проблему, и поэтому подход «как Java, только лучше» — обречён

Ну и ещё конечно других проблем хватает в котлине, так что насчёт того что "котлин банально лучше джавы" я бы поспорил.

Автор этой статьи путает причину со следствием)
Наоборот, это Java отчаянно пытается догнать Kotlin, но не догонит, так как несет груз обратной совместимости и новые возможности прибиваются страшными синтаксическими костылями.

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

Уже давно большинство новых проектов под Android - сплошь Kotlin. С этого плацдарма он переползает на бекенд (например в Яндекс Банке все новые микросервисы сразу начинают на Kotlin). Подозреваю не у дел останется именно Java (как старый си после появления плюсов).

Мне почему-то покойный ASP.NET вспомнился (который еще без MVC). Главный девиз программистов всех времен и народов: зачем изучать чужие велосипеды, если можно изобрести свой собственный, с блекджеком и ... (сюда вписать любимую игрушку)?!!! :)

Посмотрел. Здесь больше вкусовщины. KWeb мне больше нравится.

ul {
li().text("One")
li().text("Two")
}

Правильно ли я понимаю, при необходимости поправить вёрстку, надо залезть в код Котлина, поправить, и скомпилировать?

Да. Котлин же компилирующий язык.

Создание полнофункциональных веб- приложений обычно требует навигации по ужасной экосистеме Javascript, выбора между огромным множеством инструментов, транспиляторов, минификаторов, специалистов по сопровождению состояния и т.д., Большинство из которых устареют через 6 месяцев.

Что в ней такого ужасного? Разве плохо, что появляются новые инструменты и платформа развивается? "устаревают" – что устаревает-то? Фреймворки React/Vue/Angular и популярные тулы по типу Redux/Vuex или сборщики (Webpack) живут себе годами. И ничто вам не мешает их использовать. Если выйдет новая версия, никто не заставит вас сразу же на нее обновляться.

Этот простой пример уже показывает некоторые важные особенности Kweb:

* Установить и запустить веб-сайт очень просто, не нужно возиться с сервлетами или сторонними веб-серверами.

* Ваш код Kweb будет примерно отражать структуру генерируемого HTML-кода.

Чем это лучше аналогичных примеров на других языках программирования? Например, на Go https://tproger.ru/translations/go-web-server/ или Node.js https://expressjs.com/ru/starter/hello-world.html ?

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

KWeb исправляет это.

Современные веб-сайты состоят как минимум из двух тесно связанных компонентов, один из которых работает в браузере, а другой — на сервере. Они часто написаны на разных языках программирования и должны связываться друг с другом через HTTP-соединение.

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

Какая конкретно боль между взаимодействием клиента и сервера? Что плохого в разделении на клиента и сервера (один из принципов REST, между прочим).
Слабо себе представляю бекендера, который будет писать фронтовую логику, HTML и стили (если приложение больше, чем обычный TO DO list).
Фронту для этого придется учить котлин и делать исправления на бекенде?
Как вы потом искать людей будете под такой стек?

Это перевод. Автор фреймворка вас не услышит :-).

Чем это лучше аналогичных примеров на других языках программирования? Например, на Go https://tproger.ru/translations/go-web-server/ или Node.js https://expressjs.com/ru/starter/hello-world.html ?

Ничем. Фреймвор для тех, кто хочет писать на Котлине.

Какая конкретно боль между взаимодействием клиента и сервера? Что плохого в разделении на клиента и сервера (один из принципов REST, между прочим).

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

Как вы потом искать людей будете под такой стек?

Подойдет любой Kotlin программист. Или Java программист с небольшим периодом адаптации. И такой стек в отличие от JS будет стабильно актуален еще с десяток лет, в отличие от "прогрессивного" мира JS, где фреймворки и инструменты сменяют друг друга каждые полгода.

Интересная идея серверного рендеринга, однако к сожалению, годится только для небольших автономных веб страничек. Уже давно пишу на Vaadin бизнес приложения, и идея серверного state management-а на порядки упрощает разработку, позволяя ограничиться только одной платформой/языком и убирая рудиментарную прослойку ввиду API.

Но проблема в том, что в современном фронтэнде сложно ограничиться только библиотекой стилей и виджетов -- так или иначе потребуется интеграция с мощной экосистемой JS. Это было основным и правильным решением для Vaadin Flow: теперь там можно достаточно просто интегрировать JS-библиотеки, при этом не теряя возможности серверного state-management-а.

Спасибо! А главное, это очень удобно для бекенд разработчиков. Написал логику и быстро в том-же сервисе прикрутил UI (как я понимаю библиотека стилей в комплекте даст возможность не тратиться на дизайн).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории