Две новые библиотеки
SwiftKit
и JavaKit
сделают проще вызов Java
-функций из Swift
и наоборот. Почему это интересно нам, Kotlin
-разработчикам? Ну, потому что будут всё больше распространяться новости, что Swift
идёт по пути Kotlin
и можно будет писать кроссплатформенные приложения под Java
также, как и на Kotlin
под Swift
. И это не так. В чём главное различие?
Swift
решает вопрос интеропа на уровне библиотеки. Kotlin
же – на уровне компилятора. Основной бонус, который мы из-за этого получаем, – это очень гладкая интеграция. Если в настроенном проекте есть Kotlin
и Swift
файлы, то их декларации будут общими между двумя файлами. Swift
будет видеть все функции/классы/интерфейсы Kotlin
и сможет их вызывать/реализовывать. И наоборот. Swift <-> Java Interoperability
работает по другому принципу. Для каждого вызова Java
из Swift
(и наоборот) необходимо написать специальный метод-обёртку, который работает через JNI
. Что можно было делать и раньше, но занимало больше кода. Никакой новой возможности не появлось.Это означает, что в Kotlin для использования
Swift
-библиотеки достаточно подключить её из spm
или cocoapods
. И т.к. пространство имён становится общее между Swift
и Kotlin
, никаких дополнительных действий делать не надо. И такое удобство возможно только в Kotlin
, ибо он компилируется под нужную платформу, а, соответственно, имеет доступ к пространству имён этой платформы. Swift
же не компилируется и не будет компилироваться в Java-bytecode
, а в таком варианте уровень интеропа всегда будет отставать.Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Показали основные способы реализовать возможность расширять функциональность приложения сторонними разработчиками. Посмотрели как можно сделать разработку плагинов удобнее при помощи Kotlin DSL и в целом разобрали подходы к проектированию таких вещей.
00:00 – Что за плагины мы будем смотреть?
04:22 – Схематично разбираем систему плагинов
21:40 – Рассматриваем Raycast как пример приложения с плагинами
23:34 – AIDL: объективно самый лучший способ создавать плагины
39:00 – Альтернатива Raycast от Эмиля под Android (Gester)
1:10:44 – Kotlin DSL: теория
1:17:48 – Kotlin DSL: практика
1:24:50 – Exteragram: плагины для Telegram-клиента на Python
1:28:30 – Рассматриваем плагин для поиска приложений в Gester
1:33:03 – Всем удачи, всем пока
YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6 5🔥2 2
🔴 Стрим в воскресенье в 19:00
Присоединяйтесь на стрим по обсуждению Telegram-ботов! В это воскресенье мы соберёмся не только с Эмилем, но и с специальным гостем: Лёшей Овсянниковым.
Лёша – автор библиотеки🤖 ktgbotapi, которая по моему мнению превосходит все существующие библиотеки под Kotlin в плане идиоматичности. А ещё он как-то умудряется совмещать это с фулл-тайм работой 😅️️️️️️
Напишем тестового бота, поговорим о библиотеке и о жизни опенсорс разработчика. Ставьте уведомление, делитесь с друзьями, и до встречи на стриме!
Telegram | YouTube | Twitch
Присоединяйтесь на стрим по обсуждению Telegram-ботов! В это воскресенье мы соберёмся не только с Эмилем, но и с специальным гостем: Лёшей Овсянниковым.
Лёша – автор библиотеки
Напишем тестового бота, поговорим о библиотеке и о жизни опенсорс разработчика. Ставьте уведомление, делитесь с друзьями, и до встречи на стриме!
Telegram | YouTube | Twitch
Please open Telegram to view this post
VIEW IN TELEGRAM
Как бы вы отнеслись к добавлению статиков в Kotlin? (смотрите пост ниже)
Anonymous Poll
9%
Не знаю, что такое статики
38%
Что? В Kotlin же есть компаньоны, разве статики не в Java?
38%
Понимаю, какие кейсы могут покрыть статики, но решение – затыкание дыр, а не полноценная фича
15%
Статики – нужная фича
В Kotlin всерьёз рассматривают добавление static-функций и ведут обсуждение с коммьюнити. Пропозал: здесь, обсуждение: здесь.
Основные мотивации две:
• Разрешить делать статические функции-расширения на типы без компаньона
• Разрешить создавать статические функции без необходимости создавать объект
На этом канале мы высказываем наше мнение,
Самое адекватное предложение на данный момент – преобразовать статики-затычки в органичную фичу неймспейсов. Неймспейсы (пространства имён) уже есть в Kotlin: это пространство имён внутри пакета, класса, файла или даже функции. Концепция неймспейсов будет гармонично сосуществовать с объектами, и решать вышеперечисленные проблемы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Собираем метрики, проводим А/Б эксперименты
Anonymous Poll
14%
Стрим интересный, удалось посмотреть
0%
Тема стрима интересная, но не раскрыта полностью (предложения в комменты)
54%
Тема стрима интересная, не удалось посмотреть, жду записи в среду
14%
Тема стрима мне не интересна
17%
Я и сам своего рода стример
Dependency Injection в Ktor теперь из коробки
Не так давно вышел новый релиз ktor, в котором добавили встроенный DI. Как написано на оффициальном сайте, эту фичу довольно долго ждало комьюнити и её можно добавить к себе в виде отдельного модуля. В roadmap эту фичу можно было заметить ещё с 2024 года.
В документации появилась отдельная страница с инструкцией по использованию DI. Видно, что использовать DI можно при помощи DSL в Ktor-модулях, которые используются в ktor-server. То есть, в ktor-client мы использовать DI не сможем – но там он и не нужен.
Как мне кажется, фича реализована довольно хорошо и отлично вписывается в философию Ktor – её можно не добавлять и обильно используются фишки котлина, такие как DSL. Это нашло бы хорошее применение при написании маленьких API, в которых хочется тянуть минимально количество сторонних зависимостей и при этом иметь возможность быстро инжектить зависимости в модули.
Не так давно вышел новый релиз ktor, в котором добавили встроенный DI. Как написано на оффициальном сайте, эту фичу довольно долго ждало комьюнити и её можно добавить к себе в виде отдельного модуля. В roadmap эту фичу можно было заметить ещё с 2024 года.
В документации появилась отдельная страница с инструкцией по использованию DI. Видно, что использовать DI можно при помощи DSL в Ktor-модулях, которые используются в ktor-server. То есть, в ktor-client мы использовать DI не сможем – но там он и не нужен.
Как мне кажется, фича реализована довольно хорошо и отлично вписывается в философию Ktor – её можно не добавлять и обильно используются фишки котлина, такие как DSL. Это нашло бы хорошее применение при написании маленьких API, в которых хочется тянуть минимально количество сторонних зависимостей и при этом иметь возможность быстро инжектить зависимости в модули.
🔥5💊2 2
В этом видео обсудили Telegram ботов, а также пообщались с автором одной из популярных библиотек для разработки Telegram-ботов на Kotlin. Присоединяйтесь к обсуждению в комментариях!
Ссылка на GitHub: https://github.com/y9san9/ktgbotapi-stream-bot
Ссылка на канал: @ktgbotapi
YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔴 Стрим в воскресенье в 17:00
В это воскресенье мы посмотрим на то, как на Kotlin можно писать приложения, которые используют AI под капотом. Рассмотрим различные инструменты, как официальную библиотеку от JetBrains – koog, так и Kotlin SDK для Model Context Protocol, а также на весь существующий тулинг для разработки таких приложений.
А ещё для хейтеров AI поразмышляем над тем, насколько нужно вообще разработчикам языка делать такие инструменты как koog и какое дальнейшее развитие может получить этот тулинг.
Telegram | YouTube | Twitch
В это воскресенье мы посмотрим на то, как на Kotlin можно писать приложения, которые используют AI под капотом. Рассмотрим различные инструменты, как официальную библиотеку от JetBrains – koog, так и Kotlin SDK для Model Context Protocol, а также на весь существующий тулинг для разработки таких приложений.
А ещё для хейтеров AI поразмышляем над тем, насколько нужно вообще разработчикам языка делать такие инструменты как koog и какое дальнейшее развитие может получить этот тулинг.
Telegram | YouTube | Twitch
🔥13
Не так давно у нас был стрим по этой теме, и вот он вылился в доклад. Сегодня я буду рассказывать его в Санкт-Петербурге на втором митапе сообщества Kotlin Russia.
Морали две:
• Подписывайтесь на @kotlin_russia, чтобы участвовать в бесплатных сходках котлинистов по разным городам России.
• Подписывайтесь на @kotlinmeta, чтобы слушать интересный контент, который потом выливается в доклады.
Записи конкретно этого доклада не планируется, но я либо потом запишу отдельный видос, либо всё-таки решим вопрос с записью, либо расскажу на другой конфе. Keep it up!
P.s.: По этой причине стрима сегодня не будет, он переносится на завтра.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8 6 4🤗1 1
🔴 Мы в прямом эфире
В этом стриме мы посмотрим на то, как можно интегрировать AI-агентов в приложения при помощи новых библиотек от JetBrains. Разберём что такое Model Context Protocol, AI агенты и какое у них будущее.
Применим библиотеки kotlin-mcp-sdk и koog в тестовых проектах и посмотрим как их можно использовать. А также подумаем над тем, какое будущее ждёт этот инструментарий.
Telegram | YouTube | Twitch
В этом стриме мы посмотрим на то, как можно интегрировать AI-агентов в приложения при помощи новых библиотек от JetBrains. Разберём что такое Model Context Protocol, AI агенты и какое у них будущее.
Применим библиотеки kotlin-mcp-sdk и koog в тестовых проектах и посмотрим как их можно использовать. А также подумаем над тем, какое будущее ждёт этот инструментарий.
Telegram | YouTube | Twitch
10🔥3
Привет! Как я могу помочь вам сегодня?
Anonymous Poll
9%
Стрим интересный, удалось посмотреть
3%
Тема стрима интересная, но не раскрыта полностью (предложения в комменты)
62%
Тема стрима интересная, не удалось посмотреть (жду записи в среду)
12%
Тема стрима мне не интересна
15%
Я и сам своего рода стример
На одном из стримов мы разбирали kotlinx.fuzz (вот он), и одним из недостатков этой библиотеки было то, что можно было генерировать только примитивные типы и далее ручками собирать их в объекты. Недавно мне в голову пришла идея подружить kotlinx.fuzz и kotlinx.serialization, чтобы можно было генерировать объекты любой сложности. Это я сделал, и создал Pull Request в kotlinx.fuzz.
Теперь можно генерировать любые объекты и они автоматически будут заполняться случайными данными, как показано на скриншоте в посте. А вы что думаете, полезное изменение? Глянуть как я это сделал можно тут: ссылка.
Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
10 10👨💻5 4
Крутой прецендент, что Google становится всё менее монополистом в этом плане. Сейчас де-факто Kotlin это симбиоз Google и JetBrains, и тенденция на вступление большего количества игроков в консорциум Kotlin Foundation добавляет влияния JetBrains в своём же продукте. Также это хорошая новость из-за того, что на наш любимый язык будет всё больше ресурсов и фичи будут катиться быстрее.
Meta стала золотым участником Kotlin Foundation и берёт на себя дополнительные проекты такие как программа грантов для Kotlin-разработчиков и образовательные программы Kotlin Multiplatform.
(Новость перебивает предыдущий пост, потому что важная)
Kotlin Foundation | Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
😨10 8👍3👎2