<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Xamarin</title>
    <description/>
    <link>https://tproger.ru/tag/xamarin</link>
    <atom:link href="https://tproger.ru/tag/xamarin/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sun, 04 Oct 2026 13:14:27 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Xamarin</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Типы языков программирования: от низкоуровневых до высокоуровневых — как выбрать для новичка</title>
      <link>https://tproger.ru/articles/tipy-yazykov-programmirovaniya--ot-nizkourovnevyh-do-vysokourovnevyh---kak-vybrat-dlya-novichka</link>
      <comments>https://tproger.ru/articles/tipy-yazykov-programmirovaniya--ot-nizkourovnevyh-do-vysokourovnevyh---kak-vybrat-dlya-novichka?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Татьяна Жукова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/tipy-yazykov-programmirovaniya--ot-nizkourovnevyh-do-vysokourovnevyh---kak-vybrat-dlya-novichka</guid>
      <description><![CDATA[<p>Выбираете первый язык программирования? Узнайте о низкоуровневых (C, C++), среднеуровневых (Java, C#) и высокоуровневых (Python, JavaScript) языках: плюсы, минусы и примеры применения. Чек-лист от экспертов поможет новичкам выбрать язык для веб, мобильной разработки или игр.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/tipy-yazykov-programmirovaniya--ot-nizkourovnevyh-do-vysokourovnevyh---kak-vybrat-dlya-novichka">Типы языков программирования: от низкоуровневых до высокоуровневых — как выбрать для новичка</a>»</p>]]></description>
      <category><![CDATA[Низкоуровневое программирование]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Ruby]]></category>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[.NET]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[TypeScript]]></category>
      <category><![CDATA[Xamarin]]></category>
      <category><![CDATA[Data Science]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[Бэкенд]]></category>
      <category><![CDATA[Аналитика]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Библиотеки]]></category>
      <category><![CDATA[Dart]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 28 Oct 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Для погружения в программирование нужно всего 3 вещи:</p><ul><li>Решить, с какого языка/технологии вы хотите начать.</li><li>Решить, на каком ресурсе вы хотите обучаться.</li><li>Выделить время на само программирование.</li></ul><p>Звучит просто, однако у вас уйдёт много времени на исследования, чтобы решить, что вам подходит и на каком ресурсе обучаться.</p><p>Некоторые люди начинают с относительно низкоуровневого программирования на C и C++. Другие выбирают более традиционный путь, изучая Java или C#. Есть и те, кто начинает с высокоуровневых или скриптовых языков вроде Python, Ruby или JavaScript.</p><p>Мы классифицируем языки по уровню абстракции. Для новичков: низкоуровневые — как ручная сборка машины (контроль, но сложный); среднеуровневые — как готовый конструктор с инструкцией (сохраняем баланс); высокоуровневые — как приложение на смартфоне (быстро, но меньше контроля). Ниже разберём плюсы и минусы и поможем сделать правильный выбор.</p><h2>Низкоуровневые языки: близко к «железу»</h2><p>Это языки, где вы напрямую работаете с памятью компьютера. Нет автоматической уборки ненужных данных, <b>всё под вашим контролем</b>. Подходят для системного ПО, игр или устройств (например, микроконтроллеров).</p><p>Примеры: C (для ОС вроде Linux), C++ (для игр на движке вроде Unreal Engine), Assembler (для оптимизации критических частей кода).</p><p><b>Плюсы:</b></p><ul><li>Полный контроль: вы решаете, как использовать ресурсы. Так, в C++ можно вручную выделять память для массивов, избегая ненужных копий данных.</li><li>Высокая скорость: прямой доступ к памяти позволяет писать код, который работает быстрее (это важно для работы с играми или серверами).</li><li>Основы основ: такие языки учат, как компьютер работает изнутри, чтобы в будущем ценить удобства других языков. Например, вы узнаёте, почему «утечка памяти» — это проблема.</li><li>Эффективность: низкоуровневые языки мотивируют думать об оптимизации заранее, снижая расход батареи или CPU.</li><li>Компактность: минимальная библиотека, приложения получаются лёгкими (идеально для embedded-систем, как в IoT-устройствах).</li></ul><p>Минусы:</p><ul><li>Всё-таки это сложно: рутинные задачи (например, чтение файла) требуют больше кода и внимания к деталям, рискуя ошибками вроде переполненного буфера.</li><li>Ручное управление памятью: можно легко «забыть» освободить память, вызвав утечки или краши. Например, в C нужно использовать malloc/free, иначе программа съест всю RAM.</li><li>Много копипасты: придётся писать шаблонный код, и делать это часто.</li><li>Платформо-зависимость: код для Windows может не работать на Linux без правок.</li></ul><h2>Среднеуровневые языки: баланс контроля и удобства</h2><p>Эти языки предлагают готовые инструменты, упрощающие работу, но требуют строгой проверки типов данных. Для их запуска нужна специальная программа (среда выполнения). Они идеальны для приложений, серверов и игр.</p><p>Примеры: Java (для Android-приложений), C# (для Unity-игр или .NET-серверов).</p><p>Плюсы:</p><ul><li>Автоматическая память: память очищается автоматически благодаря сборщику мусора, что избавляет от ручной работы и снижает вероятность ошибок, вроде утечек памяти в больших проектах. При этом можно получить доступ к низкоуровневым функциям для особых задач, например, через специальные инструменты в Java.</li><li>Богатые библиотеки: готовые инструменты для сетей, GUI или баз данных. Пример: Java’s Spring для веб-серверов.</li><li>Кроссплатформенность: компиляция в байт-код (JVM для Java) позволяет запускать код везде. Например, пишешь на Windows, запускаешь на Linux.</li><li>Безопасность: язык проверяет типы данных перед запуском программы, помогая заранее найти ошибки. Среда выполнения защищает от опасных сбоев, например, от переполненной памяти.</li><li>Масштабируемость: встроенные инструменты для параллельных вычислений позволяют легко создавать программы, которые одновременно выполняют много задач (серверы для тысяч пользователей и т.п.).</li></ul><p>Минусы:</p><ul><li>Дополнительная нагрузка от рантайма: Среда выполнения и автоматическая очистка памяти создают дополнительную нагрузку. Сборщик мусора может ненадолго останавливать программу, что заметно в играх или при обработке видео.</li><li>Меньше контроля: абстракции скрывают детали памяти, усложняя оптимизацию (например, в Java сложно избежать боксинга примитивов).</li><li>Повторяющийся код, которого много: приходится писать повторяющийся код и тренировать свою усидчивость, например, для доступа к данным объекта. Кстати, инструменты вроде Lombok могут упростить эту задачу.</li><li>Зависимость от среды: для запуска программ нужна специальная среда (например, JVM для Java), что влияет на размер программ и замедляет их старт.</li><li>Сложность интеграции: подключение кода на других языках, например, на C, требует писать специальные обёртки, что усложняет работу и снижает скорость.</li></ul><h2>Высокоуровневые языки: удобство и скорость разработки</h2><p>Эти языки скрывают технические детали, позволяя сосредоточиться на создании <b>логики программы</b>. Подходят для веба, data science или скриптов.</p><p>Примеры: Python (для ML), Ruby (для веб-разработки), JavaScript (для фронтенда).</p><p>Плюсы:</p><ul><li>Простота: сложные задачи решаются в пару строк. Так, в JS async/await упрощает API-запросы.</li><li>Быстрая разработка: динамическая типизация позволяет быстро писать и тестировать код без необходимости его компиляции.</li><li>Богатые экосистемы: есть библиотеки для всего (к примеру, NumPy для данных в Python).</li><li>Гибкость: легко менять код, идеально для прототипов или стартапов.</li></ul><p>Минусы:</p><ul><li>Низкая производительность: абстракции добавляют нагрузки. Например, циклы в Python медленнее, чем в C.</li><li>Ошибки на рантайме: из-за слабой типизации ошибки выявляются только при запуске программы, что усложняет отладку.</li><li>Риск «спагетти-кода»: лёгкость изменений может привести к хаосу без дисциплины.</li><li>Скрытые проблемы: абстракции маскируют баги.</li><li>Зависимость от интерпретатора: программы требуют установленного интерпретатора, что замедляет их запуск и добавляет зависимость от дополнительного ПО.</li></ul><h2>Чек-лист: как выбрать язык программирования для новичка</h2><p>Этот чек-лист основан на советах экспертов, чтобы помочь новичкам выбрать первый язык программирования. Каждый пункт включает конкретные рекомендации.</p><ol><li><b>Определите, что вас вдохновляет, и выберите сферу.</b> Подумайте, что вы хотите создавать: сайты, игры, мобильные приложения или серверы. Разные сферы требуют разных языков. Например, для веб-разработки подойдут JavaScript или Python, для мобильных приложений — Java, Kotlin, Swift или Dart, а для игр — C# или C++. Составьте список идей (например, сайт-визитка, игра, аналитика данных) и найдите, какие языки для них используют. <br />— Аня Жаркова, руководитель мобильной разработки в USETECH</li><li><b>Ищите язык с широким применением.</b> Выбирайте языки, которые используются в разных областях, чтобы легче переключаться между задачами. Например, Kotlin подходит для мобильной разработки, веба и серверов, а C# — для десктоп-приложений, игр (Unity) и бэкенда. Это даёт гибкость и упрощает изучение новых языков в будущем.<br />— Аня Жаркова, руководитель мобильной разработки в USETECH</li><li><b>Проверьте спрос на рынке труда. </b>Если цель — смена профессии, изучите вакансии на HH.ru или LinkedIn. Введите «junior Python», «junior Java» и сравните, где больше предложений и какие требования. Избегайте языков с низким спросом, если хотите быстро найти работу. Например, Java, Kotlin, Python и JavaScript популярны для найма.<br />— Владислав Масунов, Head of Development</li><li><b>Опробуйте языки на практике.</b> Напишите простые программы (например, "Hello World" или калькулятор) на нескольких языках, чтобы понять, какой синтаксис вам ближе. Используйте онлайн-редакторы вроде Replit или CodePen. Например, попробуйте TypeScript для веба (он поддерживает типизацию и разные подходы к программированию) или C++ для понимания работы с памятью. Это поможет почувствовать, к чему лежит душа.<br />— Рома Троицкий, фронтенд-инженер в Сбер B2C, член ПК HolyJS &amp; MoscowCSS; Евгений Антонов, ИТ-консультант, автор тг-канала <a href="https://t.me/general_it_talks">@general_it_talks</a></li><li><b>Выберите язык с хорошей документацией и сообществом.</b> Убедитесь, что у языка много обучающих материалов и активное сообщество. Например, TypeScript имеет богатую документацию и поддержку, что упрощает старт. Проверьте ресурсы вроде LearnPython.org, freeCodeCamp для JavaScript или Telegram-чаты для C++. Это поможет быстрее решать вопросы.<br />— Рома Троицкий, фронтенд-инженер в Сбер B2C, член ПК HolyJS &amp; MoscowCSS</li><li><b>Учитывайте сложность и карьерные цели.</b> Для небольших проектов или быстрого старта берите Python или PHP — они проще и подходят для веб-разработки или скриптов. Для сложных задач с высокой нагрузкой (например, серверы или оптимизация) попробуйте C++ или Go. Если цель — работа в крупных компаниях, Java и Kotlin востребованы и часто используются с ИИ-инструментами. Выбирайте, исходя из сложности и ваших амбиций.<br />— Евгений Антонов, ИТ-консультант, автор тг-канала <a href="https://t.me/general_it_talks">@general_it_talks</a></li><li><b>Смотрите на универсальность и переход к другим языкам. </b>Выбирайте язык, который учит основам программирования и упрощает переход к другим. Например, изучение C# может помочь освоить Java, а затем — Android-разработку. TypeScript учит объектно-ориентированному и функциональному программированию, что полезно для разных задач. Это создаёт базу для дальнейшего роста.<br />— Аня Жаркова, руководитель мобильной разработки в USETECH; Рома Троицкий, фронтенд-инженер в Сбер B2C, член ПК HolyJS &amp; MoscowCSS</li><li><b>Не гонитесь за гилти плежа.</b> Избегайте языков, которые изучают «для удовольствия» без практического применения. Выбирайте те, которые можно применить в реальных проектах или которые востребованы в индустрии. Например, вместо нишевых языков берите Python, Java или Kotlin: они имеют чёткие сценарии использования.<br />— Аня Жаркова, руководитель мобильной разработки в USETECH</li><li><b>Практикуйтесь с ИИ-инструментами.</b> Если хотите работать в крупных компаниях, освойте язык, который хорошо сочетается с ИИ-инструментами (например, Go или Java). Практикуйтесь с ИИ-агентами по типу GitHub Copilot для автоматизации задач — это ценится работодателями.<br />— Евгений Антонов, ИТ-консультант, автор тг-канала <a href="https://t.me/general_it_talks">@general_it_talks</a></li><li><b>Составьте план развития.</b> Создайте roadmap: определите, какие проекты хотите делать через 3-6 месяцев (например, мобильное приложение или веб-сервис), и подберите язык под эти цели. Если выбрали C#, начните с десктоп-приложений, затем попробуйте Xamarin для кроссплатформенной разработки. Постепенно добавляйте новые языки, опираясь на первый.<br />— Аня Жаркова, руководитель мобильной разработки в USETECH</li></ol><p>Если не определились, предлагаем пройти квиз и расставить всё по полочкам:</p>]]></content:encoded>
    </item>
    <item>
      <title>Сравниваем подходы нативной и кроссплатформенной мобильной разработки в 2021 году</title>
      <link>https://tproger.ru/articles/sravnivaem-podhody-nativnoj-i-krossplatformennoj-mobilnoj-razrabotki-v-2021-godu</link>
      <comments>https://tproger.ru/articles/sravnivaem-podhody-nativnoj-i-krossplatformennoj-mobilnoj-razrabotki-v-2021-godu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/sravnivaem-podhody-nativnoj-i-krossplatformennoj-mobilnoj-razrabotki-v-2021-godu</guid>
      <description><![CDATA[<p>За последние годы кроссплатформенная разработка сделала рывок вперед. Посмотрим, как обстоят дела на рынке кроссплатформенных решений сейчас.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/sravnivaem-podhody-nativnoj-i-krossplatformennoj-mobilnoj-razrabotki-v-2021-godu">Сравниваем подходы нативной и кроссплатформенной мобильной разработки в 2021 году</a>»</p>]]></description>
      <category><![CDATA[Мобильная разработка]]></category>
      <category><![CDATA[Xamarin]]></category>
      <category><![CDATA[Kotlin]]></category>
      <category><![CDATA[Гостевая публикация]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 20 Apr 2021 11:38:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Не так давно наткнулся на статью былых времён про кроссплатформенную разработку. Она начиналась примерно так: «Не буду томить, давайте сразу проясним, кроссплатформенная мобильная разработка никогда не достигнет уровня нативных решений в плане производительности, опыта пользования и/или разработки». На дворе 2021 год, и за последние несколько лет кроссплатформенная разработка сделала заметный рывок вперед. Посмотрим, как обстоят дела на рынке кроссплатформенных решений сейчас.</p><p>В начале десятых годов на рынке смартфонов было много игроков со своими подходами к разработке. Вспомнить хотя бы Symbian, история которого закончилась в 2012 году, и Blackberry OS, с которым мы попрощались в 2013 году. Или Windows Phone, поддержка которого прекратилась в 2015 году. История свела всё к тому, что на рынке остались две доминирующие платформы — Android и iOS. Они заняли в совокупности 99% рынка, не оставив остальным практически ни единого шанса.</p><p>Нативными языками для разработки под Android и iOS являются Java/Kotlin и Objective-C/Swift соответственно. Языки (по крайней мере, Kotlin и Swift) поддерживаются компаниями-владельцами платформ: Google и Apple. И разработчики получают доступ ко всем возможностям и «фишкам» платформ, as fast as they can. У нативной разработки тем не менее есть одна существенная проблема – стоимость. При выборе нативной разработки придётся поддерживать минимум две платформы раздельно. Это может привести к трудностям не только с финансовой стороны, но и со стороны дальнейшей поддержки и развития. Для подобной проблемы достаточно быстро нашлось решение – разработка кроссплатформенных решений с единой кодовой базой.</p><p>Есть достаточное количество различных фреймворков для создания кроссплатформенных решений. Существуют такие решения, как гибридные платформы/PWA (Progressive Web Applications). Их я предлагаю не рассматривать, так как они (e.g. PhoneGap, Cordova, Ionic) не только не могут отвечать современным требованиям к производительности мобильных приложений. А также заставляют испытать крайне негативный опыт как пользователей, так и разработчиков. Про Cocos2d-x или Unity упоминать в рамках данной статьи тоже не стану. Мы можем получить приложение, которое выглядит схоже на обеих платформах, но нативным не будет выглядеть ни на одной из платформ.</p><p>Из оставшихся решений можно выделить три самых многообещающих: Xamarin, Kotlin Multiplatform, Flutter (спойлер: я бы выбирал из последних двух). Предлагаю рассмотреть каждое подробнее.</p><h2>Xamarin</h2><p>Фреймворк, созвучный с названием компании-разработчика, которая была приобретена в 2016 году компанией Microsoft, был разработан в 2011 году. Он позволяет войти в мобильную разработку людям, которые пишут на С#. Благодаря возможности при необходимости совмещать кроссплатформенный код с использованием части нативных решений, Xamarin-проект может предоставить пользователю полностью нативный опыт использования. При том, что кодовая база может оставаться практически единой.</p><p>Официальная поддержка от Microsoft по сей день также является монетой в копилку достоинств данного решения. Благодаря универсальности стоимость разработки для выхода продукта на рынок и дальнейшей поддержки может сократиться в разы. Плюс есть встроенные инструменты для тестирования. Это позволит упростить монотонное ручное тестирование на каждой из платформ (хотя бы отчасти).</p><p>Однако есть и свои подводные камни. Один из самых очевидных: для работы с платформой всё ещё необходимы навыки работы с нативными решениями, так как Xamarin-библиотеки зачастую не покрывают весь необходимый функционал. Нередко можно столкнуться с тем, что библиотека устаревает, а за её обновление никто не берётся. Найти в наше время разработчиков, прилично работающих одновременно с C#, Kotlin, Swift, сложно, но можно. Однако стоимость таких специалистов будет в большую сторону отличаться от нативщиков.</p><p>Подводя итоги, можно сказать, что хоть данное решение и может выглядеть привлекательно на первый взгляд, в проектах с длительной поддержкой это скорее доставит массу головной боли. Рано или поздно код всё равно придётся переводить в нативный. А сделать это будет не так-то просто. В 2021 году я не стал бы рекомендовать выбор данного фреймворка для кроссплатформенной разработки.</p><h2>Kotlin Multiplatform</h2><p>Самое молодое из описанных решений — Kotlin Multiplatform (KMP), разработанное компанией JetBrains (они же создатели языка Kotlin, который является официальным языком для разработки под Android). В концепции это не фреймворк для создания кроссплатформенных приложений, а именно SDK, позволяющий создавать модули с единой кодовой базой, которые впоследствии подключаются к нативным приложениям.</p><p>Решение очень привлекательно с точки зрения того, что большая часть Android-разработки уже ведётся на Kotlin, а по своему синтаксису язык очень похож на Swift (и чем дальше, тем больше). Однако всё же некоторое время может уйдёт на обучение. Не стоит ожидать, что любая команда сможет пересесть на работу с KMP за условный час.</p><p>Платформа идеально подходит в случае, если уже есть рабочее приложение. Можно объединить части и получить значительное упрощение процесса поддержки и развития. Однако если требуется вести разработку приложения «с нуля», тут я скорее бы обратился к Flutter.</p><h2>Flutter</h2><p>Самый быстроразвивающийся фреймворк для кроссплатформенной разработки. Он был представлен в 2017 году компанией Google и успел наделать немало шума. Разработка с использованием этого фреймворка ведётся на довольно-таки бывалом языке Dart, история которого началась ещё в далёком 2011 году (трава была зеленее, а смартфоны разнообразнее).</p><p>Язык сам по себе очень похож на Java. Переход на него не представляет особой сложности для бывалых Android-разработчиков, которые знают не только Kotlin, но и ту самую Java. Остальным будет чуть тяжелее, однако сомневаюсь, что критично. На сайте фреймворка представлена простая и понятная документация, так что разобраться вполне реально.</p><p>С помощью Flutter создаётся единый UI (с помощью декларативного подхода) для обеих платформ. И тут не будет ограничений по кастомизации нативных UI-компонентов (в Xamarin с этим было туговато). Есть три категории виджетов:</p><ul><li>Material Widget;</li><li>Cupertino Widget;</li><li>остальные (обобщённые) виджеты.</li></ul><p>Команда Flutter изрядно постаралась, чтобы виджеты были неотличимы от нативных компонентов. Благодаря этому можно получить отличный пользовательский опыт от приложения. И даже мысли не возникнет, что приложение разработано с использованием какого-либо кроссплатформенного фреймворка.</p><p>Ещё один плюс — достаточно далёкий и прозрачный — в том, что в данный момент Flutter является единственным способом разработки под мифическую Fuchsia OS от Google. Если она когда-нибудь выйдет (а это не точно), Flutter предоставляет возможность быть к этому готовым.</p><p>Нельзя не упомянуть о парадигме Everything is widget, которая используется в Flutter. Там нет привычного разделения на какие-то условные Activity и Fragment. Всё, что мы видим перед собой — это виджет. Мы создаем другие виджеты, складывая их вместе. Я считаю этот подход масштабируемым, мощным и простым для понимания.</p><p>Однако для раскрытия полного потенциала всё ещё необходимо взаимодействие с нативными компонентами. То есть разработчику помимо языка Dart необходим опыт работы с Kotlin/Swift. И мы снова в тупике с проблемой того, что знания специалиста должны покрывать три языка. А это может выйти боком для бюджета (благо, такие специалисты стоят не в три раза дороже обычных нативщиков).</p><p>Есть также проблемы более мелкого плана, вроде проблем с кодогенерацией, работы с Media и JSON. Но надо учитывать, что, во-первых, Flutter всё ещё на стадии активного развития, а во-вторых, эти незначительные проблемы с головой покрывают возможности и перспективы, которые перед нами открывает этот фреймворк.</p><p>У Flutter есть огромный потенциал в мире кроссплатформенной разработки, и его можно смело выбирать как фреймворк для разработки в 2021 году. Однако стоит быть готовым к столкновению с некоторыми ограничениями и тем, что может «затормозить» работу.</p><h2>Итоги</h2><p>Подводя итоги, можно сказать, что необходимость в нативных решениях была, есть и будет оставаться (по крайней мере ещё долгое время). Я нисколько не умаляю её востребованность и прошу её поклонников не кидать в меня камнями. Однако те времена, когда создание кроссплатформенных решений было сильно в ущерб производительности или опыту использования уже подходят к концу. Выбор в пользу нативной или кроссплатформенной разработки можно делать, исходя из стоящих перед вами задач.</p><p>Если необходим доступ к глубоким платформенным возможностям, «свобода» в выборе пути развития или решения проблем ПО, и — наверное, так будет всегда — стабильность, то ваш выбор — Native (Kotlin / Swift). Если необходимо минимальное время выхода на рынок (TTM), бюджет сжат или уже есть рабочее приложение и возможность пойти на некоторый риск с новым программным продуктом – кроссплатформенная разработка ждёт Вас. Что же до статистики по возможности сэкономить при выборе кроссплатформенной разработки, официальной статистики нет. Но как правило, удаётся сэкономить 25%-30% времени на разработку по сравнению с нативными решениями.</p>]]></content:encoded>
    </item>
    <item>
      <title>Cравнение фреймворков для кроссплатформенной мобильной разработки: React Native, Flutter, Ionic, Xamarin и PhoneGap</title>
      <link>https://tproger.ru/translations/cross-platform-frameworks-for-mobile-development</link>
      <comments>https://tproger.ru/translations/cross-platform-frameworks-for-mobile-development?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/cross-platform-frameworks-for-mobile-development</guid>
      <description><![CDATA[<p>Пять кроссплатформенных фреймворков для мобильной разработки: React Native, Flutter, Ionic, Xamarin и PhoneGap и случаи их применения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/cross-platform-frameworks-for-mobile-development">Cравнение фреймворков для кроссплатформенной мобильной разработки: React Native, Flutter, Ionic, Xamarin и PhoneGap</a>»</p>]]></description>
      <category><![CDATA[Мобильная разработка]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Xamarin]]></category>
      <category><![CDATA[React]]></category>
      <category><![CDATA[Фреймворки и библиотеки]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 28 Jan 2020 12:50:44 GMT</pubDate>
      <content:encoded><![CDATA[<p>Автор перевода Мария Багулина</p><p>В чём разница между мобильным приложением и хорошим мобильным приложением? Ответ подскажет личный опыт — вы наверняка замечали, что игры и программы с приятным, быстрым и удобным интерфейсом более популярны.</p><p>Но это ещё не всё: на успех приложения также влияет скорость разработки и внедрения новых «фич». Улучшить этот показатель можно, используя кроссплатформенные инструменты. Мы рассмотрим пять фреймворков — React Native, Flutter, Ionic, Xamarin, PhoneGap — и разберёмся, в каких случаях выгодно их использовать.</p><ul><li><a href="https://tproger.ru/#1">React Native</a></li><li><a href="https://tproger.ru/#2">Flutter</a></li><li><a href="https://tproger.ru/#3">Ionic</a></li><li><a href="https://tproger.ru/#4">Xamarin</a></li><li><a href="https://tproger.ru/#5">PhoneGap</a></li><li><a href="https://tproger.ru/#6">Сравнительная таблица</a></li><li><a href="https://tproger.ru/#7">Так что выбрать?</a></li></ul><h2>React Native</h2><p>Его цель — сделать кроссплатформенные приложения такими же производительными, как нативные.</p><h3>Язык программирования</h3><p>JavaScript + библиотека React.</p><h3>Кто использует</h3><p>React Native достаточно популярен, поскольку его уже применяют технологические гиганты. Среди них популярные соцсети, Walmart, Tesla, Pinterest, UberEats и другие.</p><h3>IDE и написание кода</h3><p>С момента запуска React Native прошло около 5 лет, поэтому его поддерживают почти все ведущие IDE. Изучать React Native и писать код на нём довольно просто благодаря использованию JavaScript (разумеется, если вы знаете JavaScript).</p><h3>Архитектура и исполнение кода</h3><p>«Learn once, write anywhere», что можно трактовать как «научись один раз, используй везде» — главный принцип React Native, который подразумевает применение одного и того же кода для разных платформ. Также в Native есть функция Hot Reloading, позволяющая добавлять новый код и вносить правки прямо во время выполнения — это очень полезно, когда вы настраиваете пользовательский интерфейс. Среда поставляется с большим набором готовых компонентов, однако они не всегда адаптируются под разные платформы, что требует дополнительных корректировок в коде. Благодаря обширной поддержке сообщества также есть богатый выбор сторонних библиотек.</p><h3>Производительность</h3><p>Так как React Native нацелен на результат, сопоставимый с нативной разработкой, в погоне за производительностью чаще всего отдают предпочтение именно этому фреймворку. Native также позволяет разработчикам использовать кастомные модули на языках для нативной разработки, но их придётся писать отдельно для каждой платформы.</p><h2>Flutter</h2><p>Flutter — детище Google, уже завоевавшее хорошую репутацию в кроссплатформенной разработке. Его принцип — создание приложений с единой кодовой базой для мобильных платформ, веба и десктопа.</p><h3>Язык программирования</h3><p>Dart — объектно-ориентированный язык, разработанный Google.</p><h3>Кто использует</h3><p>Flutter появился на рынке не так давно, но его популярность выросла за очень короткое время. Приложения на нём можно увидеть у Alibaba, Hamilton Musical, Greentea, Google Ads.</p><h3>IDE и написание кода</h3><p>Flutter поддерживается Android Studio / IntelliJ и Visual Studio Code. Что касается программирования на Dart — если вы знаете C++ или Java, вам будет проще его освоить. Однако изучение любого нового языка требует времени.</p><h3>Архитектура и исполнение кода</h3><p>Flutter использует один и тот же код для всех платформ. На нём легко создавать красивые интерфейсы. Но если вам нужны разные стили для разных ОС, придётся немного поработать, поскольку автоматическая адаптация для этих целей не предусмотрена. Это связано с тем, что вместо нативных компонентов Flutter применяет свой графический движок. Однако он не отстаёт от React Native и также предлагает функцию Hot Reloading (добавление нового кода без повторной сборки) и большой набор готовых виджетов. Зато с Flutter можно выпускать приложения для разных версий Android и iOS без дополнительных телодвижений: программы спокойно запускаются даже на таких старых версиях, как Android Jelly Bean и iOS 8.</p><h3>Производительность</h3><p>При прочих равных можно сказать, что Flutter превосходит конкурентов и демонстрирует самую высокую производительность благодаря современному языку Dart и собственному движку рендеринга.</p><h2>Ionic</h2><p>С Ionic можно создавать кроссплатформенные гибридные приложения. Он тесно взаимодействует с фреймворком Apache Cordova, который преобразовывает веб-приложения в мобильные программы.</p><h3>Язык программирования</h3><p>JavaScript + HTML, CSS.</p><h3>Кто использует</h3><p>Из наиболее известных: MarketWatch, Pacifica, Sworkit, Nationwide.</p><h3>IDE и написание кода</h3><p>Ionic завоевал признание среди разработчиков мобильных приложений, потому что с ним просто работать. Фреймворк построен на ECMAScript 6 и TypeScript, поэтому его можно использовать в любой IDE, поддерживающей эти языки, например в Visual Studio Code, Atom или Angular IDE. Кстати, если вы уже знакомы с Angular, React или Vue, то с освоением Ionic не возникнет особых трудностей.</p><h3>Архитектура и исполнение кода</h3><p>Ionic, как и React Native и Flutter, предлагает концепцию единого кода для разных платформ, но на новом уровне. Все его компоненты автоматически адаптируются к платформе, на которой запускается приложение — а значит, разработка становится быстрее. Также с Ionic вы можете свободно использовать JavaScript, Angular, React или Vue.</p><h3>Производительность</h3><p>А вот здесь Ionic проигрывает и сильно отстаёт от React Native и Flutter, поскольку для визуализации приложений он использует веб-технологии и совсем не применяет нативные компоненты. Такой подход значительно снижает скорость.<br />Но со стороны разработки есть и плюсы: Ionic позволяет проводить быстрое тестирование, которое можно запустить прямо в браузере.</p><h2>Xamarin</h2><p>Xamarin — платформа для создания мобильных приложений от Microsoft, которая также поддерживает разработку для Windows.</p><h3>Язык программирования</h3><p>C# + .NET.</p><h3>Кто использует</h3><p>На Xamarin сделаны приложения Olo, The World Bank, Storyo и другие.</p><h3>IDE и написание кода</h3><p>В качестве IDE можно использовать, например, Visual Studio 2019 или Rider. C# достаточно распространён, поэтому с написанием кода и освоением Xamarin проблем возникать не должно.</p><h3>Архитектура и исполнение кода</h3><p>У Xamarin есть два основных инструмента: Xamarin.Android/iOS и Xamarin.Forms. По части кроссплатформенной разработки Xamarin предлагает использовать единый API Xamarin.Essentials.</p><p>Xamarin.Android и Xamarin.iOS наделяют приложение теми же возможностями и интерфейсом, которые есть у нативных решений. В случае Xamarin.iOS программа компилируется непосредственно в машинный код (AOT-компиляция), тогда как в Xamarin.Android сначала происходит компиляция в байт-код, который затем интерпретируется виртуальной машиной (JIT-компиляция).</p><p>Если же нужно ускорить процесс написания кода, лучше использовать Xamarin.Forms — более простой инструмент, в котором почти все элементы полностью совместимы с любыми платформами.</p><h3>Производительность</h3><p>Производительность Xamarin также считается близкой к нативной, но зависит от того, используете вы Xamarin.Android, Xamarin.iOS или Xamarin.Forms. У Xamarin.Android/iOS хорошая оптимизация благодаря нативным компонентам. Xamarin.Forms же основан на 100% совместном использовании кода, что в целом снижает его производительность по сравнению с Xamarin.Android/iOS.</p><h2>PhoneGap</h2><p>Как и Ionic, PhoneGap позволяет использовать веб-технологии в мобильной разработке. Он является дистрибутивом Apache Cordova.</p><h3>Язык программирования</h3><p>JavaScript + HTML, CSS.</p><h3>Кто использует</h3><p>Среди примеров приложений на PhoneGap: Logitech Squeezebox Controller, Localeur, Untappd, HealthTap.</p><h3>IDE и написание кода</h3><p>Для более комфортной кроссплатформенной разработки и тестирования можно использовать Adobe Dreamweaver (версии 5.5 и выше), MyEclipse 2013, Tiggzi, ApplicationCraft. Разработка на JavaScript не должна вызывать затруднений, особенно если раньше вы уже писали на нём.</p><h3>Архитектура и исполнение кода</h3><p>Приложение PhoneGap, по сути, представляет собой набор HTML-страниц, обёрнутых в нативную оболочку. Страницы хранятся в локальном каталоге или в облаке, а во время запуска на смартфоне они получают доступ к функциям устройства через плагины. Это делает приложения PhoneGap довольно лёгкими, но они выглядят менее естественно, а качество пользовательского интерфейса будет в большей степени зависеть от веб-представления конкретной ОС.</p><h3>Производительность</h3><p>PhoneGap отличается невысокой производительностью по сравнению с нативными инструментами — и в этом снова виноваты веб-технологии.</p><h2>Сравнительная таблица</h2><figure><img src="https://media.tproger.ru/uploads/2020/01/29-1.jpg" alt="" /></figure><h2>Так что выбрать?</h2><ul><li>Если вы знаете Dart и хотите получить высокую производительность, выбирайте Flutter.</li><li>Используйте React Native, если вам важна поддержка зрелого сообщества, разработка на JavaScript и проверенное временем решение.</li><li>Выбирайте Ionic, когда вам требуется ускорить цикл разработки и тестирования приложения за счёт полной кроссплатформенной адаптации.</li><li>Xamarin подойдёт тем, кто хочет писать на C#, получить хорошую производительность и преимущества нативных инструментов.</li><li>Для создания небольших и простых приложений с помощью веб-технологий применяйте PhoneGap.</li></ul><p>Помните, что каждый инструмент имеет свои особенности, и делать выбор следует исходя из конкретной задачи. Всегда стоит обсуждать проект с опытной командой разработчиков, которая рассмотрит различные подходы и предложит наилучший вариант.</p>]]></content:encoded>
    </item>
    <item>
      <title>Xamarin: что это такое, кому стоит использовать и ответы на другие важные вопросы о фреймворке</title>
      <link>https://tproger.ru/articles/xamarin-answers</link>
      <comments>https://tproger.ru/articles/xamarin-answers?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Антон]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/xamarin-answers</guid>
      <description><![CDATA[<p>Кроссплатформенная разработка на Xamarin переносит бизнес-логику на C# между платформами и подходит приложениям со стандартным интерфейсом.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/xamarin-answers">Xamarin: что это такое, кому стоит использовать и ответы на другие важные вопросы о фреймворке</a>»</p>]]></description>
      <category><![CDATA[Мобильная разработка]]></category>
      <category><![CDATA[Xamarin]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 02 Oct 2016 17:54:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>При кроссплатформенной разработке код и элементы дизайна для одной платформы используются при работе над следующей, и это обещает неплохую экономию. Xamarin позиционируется как лучший инструмент для таких решений. Рассказываем, как он работает и для кого.</p><h3>Кто выигрывает с Xamarin?</h3><p>Бизнес-логика приложения редко меняется при смене платформы. Ваш любимый интернет-банкинг проводит платежи и сообщает баланс вне зависимости от того, работаете вы на смартфоне или ноутбуке. Подобные приложения со сложной бизнес-логикой и стандартным интерфейсом — прерогатива Xamarin.</p><p>Алгоритмы, разработанные на C# для одной платформы, программисты используют и для всех остальных платформ. Например, при работе на Xamarin.Android и Xamarin.iOS, до 75% кода можно переиспользовать: приложение работает одинаково и на iPhone, и на Android-смартфоне.</p><p>Если в приложении главное — функциональность, а из дизайна всего пара кнопок и красивый график — вам повезло, Xamarin подходит. На проектах со сложным интерфейсом стоимость доработки иногда сопоставима с разработкой двух-трёх нативных решений. Но бизнес-логика равно не меняется и с каждой новой версией приложения разрабатывать ещё будет проще — все нюансы требований заказчика уже известны. В сухом остатке затраты на доработку зависят от команды и сложности дизайна.</p><h3>Какие плюсы?</h3><p>Экономия ресурсов, переиспользование кода и простота добавления версий для новых платформ. Код на C# доступен всей команде и при достаточной квалификации может быть использован на любой другой платформе: как мобильной, так и десктопной.</p><h3>Ваша команда подходит?</h3><p>Для программистов, уже работающих с несколькими платформами отдельно, переход на кроссплатформенные решения покажется рутиной. Разобраться в Xamarin легко, а вот изучить документацию, гайдлайны, SDK и API каждой платформы с нуля — гораздо сложнее.</p><p>Для тех же Xamarin.Android и Xamarin.iOS требуется знание iOS Storyboards и синтаксис Android XML. Конечно, обучать сотрудников всегда полезно, но готовы ли вы делать эти вложения прямо сейчас? В любом случае, лучше иметь на проекте пару iOS-Android разработчиков, которые ускорят процесс обучения коллег. В команде одни десктоп-специалисты, а приложение должно работать и на смартфонах? Без дополнительной помощи мобильных разработчиков вы вряд ли почувствуете экономию от Xamarin.</p><h3>Сколько это стоит?</h3><p>Ещё в начале 2016 года разработчики тратили на лицензию Xamarin до $999 в год. Но после поглощения компанией Microsoft большая часть продуктов Xamarin стала доступна по лицензии Visual Studio 2013 или Visual Studio 2015. Скачивайте всё необходимое с официального сайта Xamarin или прямо в Visual Studio 2015 (Update 2) и начинайте работу.</p><p>Доплачивать надо, например, за Xamarin Test Cloud. Но будем честны: без этого сервиса может обойтись подавляющее большинство проектов.</p><p>Стоит учитывать стоимость оборудования. Вам понадобятся устройства с macOS для разработки на iOS SDK и Windows для Windows Phone SDK, а Android SDK работает и там, и там.</p><h3>О чем стоит беспокоиться?</h3><p>Xamarin сравнительно молодой — на специфические вопросы не всегда удаётся найти ответы в документации или на форуме. Но можно спросить у разработчиков на конкретных платформах. В Xamarin используются нативные SDK, даже название методов и классов в Xamarin наследуется, так что проблем с поиском возникнуть не должно.</p><p>Раздел для разработчиков на сайте Xamarin содержит детальную документацию, API и примеры всех методов и процедур — этого достаточно, чтобы начать разработку. Для всего остального есть Stackoverflow с ответами на любые вопросы по Xamarin, iOS, Android.</p><p>Первые Xamarin-специалисты жаловались на проблемы при работе со сторонними библиотеками. Сегодня SQLite.NET, loC фреймворки Autofac, MVVC фреймворки и другие популярные библиотеки поддерживают кроссплатформенную разработку. Если вы не собираетесь использовать на проекте исключительно редкие инструменты, то волноваться не о чем.</p><h3>Xamarin.Forms или Xamarin.IOS + Xamarin.Android?</h3><p>Зависит от возможностей и желаний. Xamarin.Forms — это инструмент для разработки единого интерфейса для всех платформ. Дизайн описывается в XML-файле, используя синтаксис XAML. Это оценят .NET-разработчики, которые обычно уверенно работают с XAML.</p><p>Проблема в том, что программисту будет доступен всего лишь небольшой набор стандартных элементов управления, внешняя оболочка, связанная с нативными кнопками, чекбоксами и прочим. Теоритически, в Xamarin.Forms используется до 100% общего кода, но только для приложений с совсем уж простым интерфейсом, вроде «Hello world». Если вам захочется что-то, чего нет в наборе, то придётся перерабатывать и сами элементы на каждой платформе по-отдельности. Выбирайте Xamarin.Forms для проектов, где вы готовы сэкономить на гибкости настройки интерфейса.</p><p>Чаще «схалявить» не получается и нужно использовать Xamarin.iOS и Xamarin.Android. Так у вас будет прямой доступ к API платформ и полный набор элементов управления, а каждая платформа будет представлена отдельным решением.</p><h3>Так подойдет мне Xamarin или нет?</h3><p>Ответьте на три вопроса и станет ясно, подходит ли вам Xamarin:</p><ul><li>Интерфейс приложения без сложной логики взаимодействия и нестандартных элементов управления?</li><li>У вас в команде есть мобильные разработчики?</li><li>Вы планируете другие кроссплатформенные проекты (пусть даже не на Xamarin) в ближайшее время?</li></ul><p>Если вы ответили «да» на все вопросы, тогда Xamarin — хорошее вложение для вашей команды и проекта в долгосрочной перспективе.</p><p>Автор: Мария Куликовская, веб-разработчик, Itransition</p><p>Мария работает в <a href="http://www.itransition.com/">Itransition</a> более трех лет, отвечая за планирование проектов, выбор  технологий под бизнес-требования заказчика, управление развертыванием и  пост-проектной поддержкой и т.п. Участвовала в разработке самых разных систем, как мобильных, так и десктопных. Сфера особого интереса — базы данных.</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft купила Xamarin</title>
      <link>https://tproger.ru/news/microsoft-acquired-xamarin</link>
      <comments>https://tproger.ru/news/microsoft-acquired-xamarin?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/microsoft-acquired-xamarin</guid>
      <description><![CDATA[<p>О покупке объявил в блоге вице-президент Microsoft Скотт Гатри: у Xamarin более 15 000 клиентов в 120 странах и около 1,3 миллиона разработчиков.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/microsoft-acquired-xamarin">Microsoft купила Xamarin</a>»</p>]]></description>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Xamarin]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 24 Feb 2016 20:47:57 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сегодня Скотт Гатри (Scott Guthrie), вице-президент облачной и корпоративной группы корпорации Microsoft, <a href="http://weblogs.asp.net/scottgu/welcoming-the-xamarin-team-to-microsoft">объявил</a> в своём блоге, что Microsoft купила Xamarin — компанию, разработавшую одну из самых популярных платформ для кросс-платформенной разработки мобильных приложений.</p><p>У Xamarin есть более 15 000 клиентов в 120 странах, из них более сотни входят в список <a href="http://fortune.com/fortune500/">Fortune 500</a>, а также порядка 1,3 миллионов разработчиков, так или иначе работавших с их решением. Компания ранее уже сотрудничала с Microsoft: вместе были разработаны интеграции с Visual Studio, Azure, Office 365 и некоторыми другими сервисами. В планах Microsoft углубление этих интеграций и дальнейшее развитие всей платформы в целом. Другие технические детали обещают сообщить на предстоящей конференции <a href="http://build.microsoft.com/">Microsoft //Build</a>.</p><p>Напомним, основная идея Xamarin состоит в кросс-платформенной разработке под iOS, Android и Windows Phone на языке C#. Вы пишете код на своем любимом языке, с применением всех привычных для вас языковых особенностей вроде LINQ, лямбда-выражений, Generic и async. При этом имеете полный доступ ко всем возможностям SDK платформы и родному механизму создания UI, получая на выходе приложение, которое, строго говоря, ничем не отличается от нативных и (по крайней мере по заверениям) не уступает им в производительности (<a href="https://habrahabr.ru/post/188130/">подробнее</a>).</p>]]></content:encoded>
    </item>
  </channel>
</rss>