Kotlin Meta
246 subscribers
57 photos
2 videos
1 file
55 links
Всякое разное интересное про язык программирования Kotlin и около него.

Чатик: @kotlinmetachat.
Мы на YouTube: https://youtube.com/@KotlinMeta.
Мы на Twitch: https://twitch.tv/kotlinmeta.
Download Telegram
🧑‍💻 Apple объявляет о поддержке интеропа Swift <-> Java

Две новые библиотеки 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
842👍1
Media is too big
VIEW IN TELEGRAM
📹 Как сделать систему плагинов на Kotlin?

Показали основные способы реализовать возможность расширять функциональность приложения сторонними разработчиками. Посмотрели как можно сделать разработку плагинов удобнее при помощи 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
👍65🔥22
🔴 Стрим в воскресенье в 19:00

Присоединяйтесь на стрим по обсуждению Telegram-ботов! В это воскресенье мы соберёмся не только с Эмилем, но и с специальным гостем: Лёшей Овсянниковым.

Лёша – автор библиотеки 🤖 ktgbotapi, которая по моему мнению превосходит все существующие библиотеки под Kotlin в плане идиоматичности. А ещё он как-то умудряется совмещать это с фулл-тайм работой 😅️️️️️️

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

Telegram | YouTube | Twitch
Please open Telegram to view this post
VIEW IN TELEGRAM
136👍3
Live stream scheduled for
🏝 Это первоапрельская шутка полноценный пропозал, прошедший несколько итераций

В Kotlin всерьёз рассматривают добавление static-функций и ведут обсуждение с коммьюнити. Пропозал: здесь, обсуждение: здесь.

Основные мотивации две:

• Разрешить делать статические функции-расширения на типы без компаньона
• Разрешить создавать статические функции без необходимости создавать объект

На этом канале мы высказываем наше мнение, поэтому объективности не будет. Кажется, что для этих двух мотиваций фича выглядит как затычка. Буквально. Появляется 2 разных способа сделать одно и то же, весь старый код использует другой способ, и новички сойдут с ума при осознавании чем отличаются статики от компаньонов. Коммьюнити тоже находит эту фичу спорной, можно заглянуть в комментарии к пропозалу.

Самое адекватное предложение на данный момент – преобразовать статики-затычки в органичную фичу неймспейсов. Неймспейсы (пространства имён) уже есть в Kotlin: это пространство имён внутри пакета, класса, файла или даже функции. Концепция неймспейсов будет гармонично сосуществовать с объектами, и решать вышеперечисленные проблемы.

💬 Предыдущие 2 абзаца – это личное мнение. Оно не верное, оно очень упрощённое, оно может отличаться от вашего. Поэтому призываю в комментарии обсуждать! И не забудьте про ссылки на оригинальные пропозалы и обсуждение, они тоже интересные.
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Live stream started
🔴 Мы в прямом эфире!

Присоединяйтесь к стриму по обсуждению Telegram-ботов на Kotlin с нуля! Напишем простого бота заметок в прямом эфире с автором одной из популярных библиотек для написания Telegram-ботов на Kotlin – Алексеем Овсянниковым.

Telegram | YouTube | Twitch
10❤‍🔥6333
Live stream finished (2 hours)
Dependency Injection в Ktor теперь из коробки

Не так давно вышел новый релиз ktor, в котором добавили встроенный DI. Как написано на оффициальном сайте, эту фичу довольно долго ждало комьюнити и её можно добавить к себе в виде отдельного модуля. В roadmap эту фичу можно было заметить ещё с 2024 года.

В документации появилась отдельная страница с инструкцией по использованию DI. Видно, что использовать DI можно при помощи DSL в Ktor-модулях, которые используются в ktor-server. То есть, в ktor-client мы использовать DI не сможем – но там он и не нужен.

Как мне кажется, фича реализована довольно хорошо и отлично вписывается в философию Ktor – её можно не добавлять и обильно используются фишки котлина, такие как DSL. Это нашло бы хорошее применение при написании маленьких API, в которых хочется тянуть минимально количество сторонних зависимостей и при этом иметь возможность быстро инжектить зависимости в модули.
🔥5💊22
📹 Telegram Bot на Kotlin – это просто. Стрим с автором библиотеки для Telegram-ботов

В этом видео обсудили Telegram ботов, а также пообщались с автором одной из популярных библиотек для разработки Telegram-ботов на Kotlin. Присоединяйтесь к обсуждению в комментариях!

Ссылка на GitHub: https://github.com/y9san9/ktgbotapi-stream-bot

Ссылка на канал: @ktgbotapi

YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
63
🔴 Стрим в воскресенье в 17:00

В это воскресенье мы посмотрим на то, как на Kotlin можно писать приложения, которые используют AI под капотом. Рассмотрим различные инструменты, как официальную библиотеку от JetBrains – koog, так и Kotlin SDK для Model Context Protocol, а также на весь существующий тулинг для разработки таких приложений.

А ещё для хейтеров AI поразмышляем над тем, насколько нужно вообще разработчикам языка делать такие инструменты как koog и какое дальнейшее развитие может получить этот тулинг.

Telegram | YouTube | Twitch
🔥13
🏝 Доклад про Rich Errors

Не так давно у нас был стрим по этой теме, и вот он вылился в доклад. Сегодня я буду рассказывать его в Санкт-Петербурге на втором митапе сообщества Kotlin Russia.

Морали две:

• Подписывайтесь на @kotlin_russia, чтобы участвовать в бесплатных сходках котлинистов по разным городам России.

• Подписывайтесь на @kotlinmeta, чтобы слушать интересный контент, который потом выливается в доклады.

Записи конкретно этого доклада не планируется, но я либо потом запишу отдельный видос, либо всё-таки решим вопрос с записью, либо расскажу на другой конфе. Keep it up!

P.s.: По этой причине стрима сегодня не будет, он переносится на завтра.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥864🤗11
Live stream scheduled for
🔴 Мы в прямом эфире

В этом стриме мы посмотрим на то, как можно интегрировать AI-агентов в приложения при помощи новых библиотек от JetBrains. Разберём что такое Model Context Protocol, AI агенты и какое у них будущее.

Применим библиотеки kotlin-mcp-sdk и koog в тестовых проектах и посмотрим как их можно использовать. А также подумаем над тем, какое будущее ждёт этот инструментарий.

Telegram | YouTube | Twitch
10🔥3
Live stream started
Live stream finished (2 hours)
🚀 Pull Request в kotlinx.fuzz

На одном из стримов мы разбирали kotlinx.fuzz (вот он), и одним из недостатков этой библиотеки было то, что можно было генерировать только примитивные типы и далее ручками собирать их в объекты. Недавно мне в голову пришла идея подружить kotlinx.fuzz и kotlinx.serialization, чтобы можно было генерировать объекты любой сложности. Это я сделал, и создал Pull Request в kotlinx.fuzz.

Теперь можно генерировать любые объекты и они автоматически будут заполняться случайными данными, как показано на скриншоте в посте. А вы что думаете, полезное изменение? Глянуть как я это сделал можно тут: ссылка.

Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
1010👨‍💻54
⚡️ Meta присоединяется в Kotlin Foundation

Крутой прецендент, что 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
😨108👍3👎2