Проект Дот42
Основная цель проекта точка42 - Создавайте приложения Android с использованием языка C# без необходимости установки интерпретатора Mono с помощью Microsoft Visual Studio или SharpDevelop. Проект вызвал большой интерес со стороны разработчиков мобильного ПО с момента публикации технической превью в январе 2013 года.
К сожалению, из-за сложности предметной области, начиная с января 2014 года, активность сообщества стала существенно снижаться.
Основной функцией и одновременно фундаментальной задачей проекта является преобразование скомпилированного кода C# (IL-кода) в байт-код Java, который исполняется в системе Android на виртуальной машине Davlik или ART. Разработка и поддержка такого проекта требует глубоких и узкоспециализированных знаний как форматов скомпилированных байт-кодов, так и глубоких знаний в области создания и поддержки компиляторов и кросс-компиляторов.
Число специалистов в этой области в настоящее время невелико.
Конвертация в DEX
Существует множество недостатков перекодирования IL-кода в Dex, которые постепенно устраняются в ходе развития проекта dot42. Сейчас принято решение расширить .Net SDK, добавив Java. Команда dot42 наняла кандидата наук в области кросс-компиляции и преобразования программного обеспечения для анализа текущего состояния проекта.
Его первая задача — решить, как преобразовать код C# в код Java. По сути, существует два подхода:
- Преобразование на уровне байт-кода (из IL в байт-код Java);
- Конвертация на уровне исходного кода (из C# в Java);
Преобразование байт-кода и преобразование исходного кода
Проблема отладки Ошибка при преобразовании байт-кода из IL в Dex часто приводит к тому, что виртуальная машина Java выдает исключение."java.lang.VerifyError" .
Это исключение генерируется, когда интерпретатор Java замечает, что предпринимается попытка загрузить класс, который ранее не прошел этап проверки.
Искать ошибки в этом коде — это все равно, что пытаться выяснить, что было испорчено в еде, роясь в туалете ресторана.
Типичным примером в этом случае является то, что код DEX успешно выполняется на виртуальной машине Davlik, но происходит сбой внутри ART. Преобразование исходного кода лишено этого недостатка; компилятор Java заботится о правильном расположении байт-кода приложения.
Ээксперименты с внедрением Представьте, что команде dot42 нужно добавить в проект новый функционал, например, поддержку async/await из C#.
Работать над PoC в байт-кодах в этом случае гораздо сложнее и затратнее, чем аналогичные улучшения при конвертации исходных кодов с C# на Java. Использование компилятора Компиляторы для разных виртуальных машин и архитектур ЦП используют разные механизмы оптимизации кода.
Код IL, созданный компилятором C#, использует стековую архитектуру.
С другой стороны, виртуальные машины Davlik и ART используют регистровую модель.
Код IL, скомпилированный компилятором C#, больше не содержит информации, которая была бы полезна для компилятора Java. Напротив, при преобразовании исходных кодов мы позволяем компилятору Java генерировать более эффективный байт-код. Рослин Теперь, когда Microsoft предоставляет компилятор C# с открытым исходным кодом Roslyn, который содержит богатый API для анализа кода, у команды dot42 есть мощный инструмент, который позволяет им конвертировать исходный код C# в Java. Прозрачное развитие В конечном итоге для разработчиков, использующих dot42, преобразование исходного кода из C# в Java сделает процесс более прозрачным и удобным в обслуживании.
Этот процесс позволит вам открыть готовый Java-код в популярной IDE Eclipse или Android Studio. Дальнейшее развитие проекта Команда dot42 планирует выпускать утилиты компилятора под лицензией GPLv2. Следует отметить, что лицензия GPL не распространяется на программное обеспечение, созданное с помощью dot42. Таким образом, благодаря проекту у разработчиков появится возможность создавать нативные приложения для Android с использованием C#.
Исполняющий код библиотеки уже опубликован в Гит лицензировано по лицензии Apache 2.0. Любой может создать форк проекта dot42 и расширить подход к преобразованию кода IL в DEX. Пользователям больше не нужна профессиональная лицензия для создания коммерческих приложений с использованием dot42. Следующее обновление удалит активацию.
Команда dot42 собирается заменить конвертер байт-кода конвертером исходного кода.
Все разрабатываемые утилиты также будут использовать лицензию GPLv2, а код среды выполнения библиотеки — лицензию Apache 2.0. Спасибо большое, что дочитали до конца! Теги: #C++ #Android #dot42 #dex #открытый исходный код #открытый исходный код #.
NET
-
Правильный Курс По Ит-Сетям — Insights
19 Oct, 24 -
Мобильная Связь
19 Oct, 24 -
Большой Выбор Инди-Игр*. Часть Третья
19 Oct, 24 -
Тел., Факс, Электронная Почта И Www.
19 Oct, 24 -
Девфест Спб 2018
19 Oct, 24