Современный рынок разработки ИТ-продуктов чрезвычайно конкурентен. От скорости создания минимального жизнеспособного продукта (MVP) может зависеть положение на этом рынке и пользовательский охват. В последнее время популярность набирают языки и инструменты, позволяющие создавать приложения из единой кодовой базы под множество целевых платформ: начиная от настольных компьютеров под управлением операционных систем Windows, Linux и Mac OS X, и заканчивая умными часами (watchOS) или умными телевизорами (tvOS). Такими, например, являются фреймворк Flutter, который написан на языке Dart, а также Kotlin Multiplatform, который является инструментом языка Kotlin. Оба этих инструмента относительно новые — первые публичные версии стали доступны в 2017 году, — и поэтому имеют недостаток в виде отсутствия большого набора готовых библиотек для разных нужд. Одним из недостатков подобных инструментов является также ограниченность доступной из общего кода функциональности, поскольку вся такая функциональность должна иметь реализацию на всех целевых платформах.
Примером такой функциональности является работа с файлами и файловыми системами. В частности, для Kotlin Multiplatform нет стандартного способа работы с файловыми хранилищами из общего кода, а значительным недостатком многих существующих решений является отсутствие поддержки браузерной платформы. Запрос от сообщества разработчиков на подобные решения подтверждается вопросами по этой теме на популярных интернет- площадках[1, 2, 3, 4, 5]. В данной работе изучается изложенная проблема и представляется решение в виде мультиплатформенной Kotlin-библиотеки, предоставляющее доступ к файловым хранилищам и поддерживающее в том числе браузерную платформу.
Структура работы. В разделе 1 осуществлен разбор предметной области и альтернативных решений данной проблемы. В разделе 2 представлена реализованная мультиплатформенная библиотека. В разделе 3 рассказывается о технических деталях её реализации. В разделе 4 представлены примеры приложений, созданных на базе данной библиотеки.
Проведено исследование существующих решений и выявлены их достоинства и недостатки.
Основным результатом данной работы является реализованная мульти- платформенная Kotlin-библиотека multifs, позволяющая описывать логику работы с виртуальной файловой системой в общем коде. Данная библиотека предоставляет поддержку трех файловых хранилищ, среди которых одно облачное, доступное на платформах JVM, Android и JS (browser). Наличие поддержки браузерной платформы является существенным преимуществом разработанного решения.
На базе созданной библиотеки реализовано два приложения, одно из которых мультиплатформенное с клиентами на трёх перечисленных платформах и поддерживающее все три файловых хранилища. Данное приложение демонстрирует возможности и процесс использования multifs с точки зрения разработчика.