Проект Dot42 Переходит В Новый Формат (C# 2 Java).



Проект Дот42

Проект dot42 переходит в новый формат (C# 2 Java).
</p><p>

Основная цель проекта точка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);


Проект dot42 переходит в новый формат (C# 2 Java).
</p><p>



Преобразование байт-кода и преобразование исходного кода

Проблема отладки Ошибка при преобразовании байт-кода из 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

Вместе с данным постом часто просматривают: