Случайный разговор: как объяснить моей девушке, как Hongmeng OS достигает кроссплатформенности?

Java Операционная система HarmonyOS
Случайный разговор: как объяснить моей девушке, как Hongmeng OS достигает кроссплатформенности?


Отдыхая дома на выходных, моя девушка была на Моментах, и вдруг она спросила меня:

Обзор ОС Hongmeng

На конференции разработчиков Huawei 9 августа 2019 года Ю Чэндун, генеральный директор потребительского бизнеса Huawei, официально объявил о выпуске собственной операционной системы Hongmeng, состоящей из ядра Linux, микроядра Hongmeng и LiteOS. В будущем он избавится от ядра Linux и LiteOS, только микроядро Hongmeng.

Hongmeng (англ. Harmony OS, код разработки Ark) — кроссплатформенная операционная система, разрабатываемая Huawei с 2012 года, которая может быть совместима с приложениями Android.

Рисунок: Четыре технических особенности ОС Hongmeng
1. Распределенная архитектура впервые используется для ОС терминала, обеспечивая бесперебойную совместную работу на терминалах.
2. Определите механизм задержки и высокопроизводительную технологию IPC для реализации естественной плавности работы системы.
3. Изменение доверенной безопасности терминальных устройств на базе микроядерной архитектуры.
4. Поддерживайте единовременную разработку и развертывание на нескольких терминалах через унифицированную среду IDE для достижения межтерминального экологического обмена.

что такое кроссплатформенность

До,平台 ≈ 操作系统. Поэтому кроссплатформенность в традиционном понимании не зависит ни от операционной системы, ни от аппаратного окружения. Приложение, разработанное для одной операционной системы, может работать и в другой операционной системе.

Но с развитием технологий平台 ≈ 操作系统Он больше не установлен.Как и операционная система Hongmeng, выпущенная Huawei, она может поддерживать различные устройства, такие как мобильные телефоны, часы, компьютеры, автомобили, устройства для умного дома и т. д.

Поэтому, когда мы сегодня говорим о кроссплатформенности, мы имеем в виду кроссплатформенность. который平台 ≈ 设备

Поэтому Huawei надеется, что ОС Hongmeng сможет работать на самых разных устройствах, поэтому ОС Hongmeng должна иметь кроссплатформенные возможности.

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

Таким образом, цель кроссплатформенной операционной системы Hongmeng состоит в том, чтобы позволить разработчикам сосредоточиться на своей собственной бизнес-логике, разрабатывать кросс-терминальные распределенные приложения, такие как разработка одного и того же терминала, а также дать конечным потребителям возможность пользоваться мощными кросс-терминальными возможностями совместной работы. для каждого сценария использования.

Java реализует кроссплатформенность

Давайте поговорим о кроссплатформенности Java.

Поддержка кроссплатформенности в Java, как и поддержка безопасности и сетевой мобильности, распределена по всей архитектуре Java. Среди них спецификация языка Java, файл классов, виртуальная машина Java (JVM) и так далее.

Во-первых, в спецификации языка Java указаны диапазон значений и поведение основных типов данных в языке Java. Во-вторых, все файлы Java должны быть скомпилированы в единый файл класса. Наконец, файл класса преобразуется в двоичный файл, соответствующий платформе, с помощью виртуальной машины Java.

Независимость Java от платформы основана на зависимости виртуальной машины Java от платформы, поскольку виртуальная машина Java скрывает различия между базовой операционной системой и оборудованием.

Если вы хотите запустить фрагмент кода Java, вам необходимо выполнить несколько шагов, чтобы преобразовать исходный код Java в машинный код, который может быть выполнен на машине.Этот процесс в основном выполняется виртуальной машиной.

В знаменитой виртуальной машине HotSpot в основном есть две формы выполнения интерпретации и компиляции точно в срок:

  • объяснить выполнение

    • Преобразуйте байт-код в машинный код один за другим и выполните

  • Своевременная компиляция (Just-in-time, JIT)

    • Скомпилируйте весь байт-код, содержащийся в методе, в машинный код перед его выполнением.

HotSpot по умолчанию использует гибридный режим, который сочетает в себе преимущества интерпретируемого выполнения и своевременной компиляции. Он сначала интерпретирует и выполняет байт-код, а затем компилирует код хотспота (обнаружение хотспота), повторно выполняемый в нем на лету по методу.

Android реализует кроссплатформенность

Android на самом деле основан на языке Java, поэтому по той же причинеЕсли вы хотите запустить часть кода Android, вам нужно пройти несколько шагов, чтобы преобразовать исходный код Android в машинный код, который может быть выполнен машиной.

Но этот процесс преобразования реализован по-разному в разных версиях Android:

Android 1.0 (2008 г.): использует виртуальную машину Dalvik и интегрирует интерпретатор. Когда приложение запускается, этот интерпретатор вызывается для интерпретации кода предложение за предложением, что очень медленно.

Android 2.2 (2010 г.): Представлен механизм мгновенной компиляции JIT (Just In Time).При запуске приложения функции, часто используемые пользователями, компилируются в машинный код 010101, который машина может выполнять напрямую, без перевода предложения за предложением. Когда есть необычная функция, вызывается интерпретатор для перевода, это ускоряет скорость, но каждый раз при запуске приложения его нужно перекомпилировать, что невозможно сделать раз и навсегда.

Android 5.0 (октябрь 2014 г.): замените виртуальную машину Dalvik на ART (Android Run Time) и замените JIT-компилятор на AOT (Ahead of Time). Таким образом, когда приложение загружается и устанавливается на мобильный телефон, код, который может быть скомпилирован, сначала компилируется в 101010, понятный машине; оставшийся код, который нелегко перевести, активирует интерпретатор для перевода, когда пользователь использует его. Таким образом, вам не нужно компилировать приложение каждый раз, когда вы его открываете, но установка приложения занимает много времени и занимает место на вашем телефоне.

Android 7.0 (2016): Принят гибридный механизм компиляции: промежуточный код не компилируется первым при установке, а часть кода, которая может быть скомпилирована в машинный код, когда пользователь бездействует, компилируется статически через компилятор AOT. Если AOT не успел скомпилироваться или не может скомпилироваться, то вызовите интерпретатор JIT+. Этот механизм эквивалентен замене пространства временем, что не только сокращает время ожидания пользователями установки APP, но и улучшает оптимизацию, которую компилятор и интерпретатор в виртуальной машине могут выполнять с максимальной эффективностью.

Проблема компиляции Android

Видно, что начиная с Android 1.0 в 2008 году Android усердно работает над компиляцией и оптимизацией.

Текущий Android использует комплексный режим интерпретации и выполнения + JIT + AOT, в котором достигнут хороший баланс с точки зрения занимаемого места + скорости установки + скорости работы.

Но проблема компиляции Android все время подвергалась критике. Хотя интерпретатор был улучшен в последующей версии Android 8.0, эффективность выполнения режима интерпретации была значительно повышена; Android 10.0 предоставляет способ предварительного размещения горячего кода, и приложение может знать, что часто используемый код будет скомпилирован в заранее, когда он будет установлен.

Однако пока, во всяком случае, Android так и не смог избавиться от такой посылки: чтоКогда приложение упаковано в APK, оно по-прежнему использует код Java.Другими словами, в процессе того, как APK становится применимым для пользователя, он также подвергается процессу компиляции внутри системы Android, что является неизбежным препятствием.

Hongmeng достигает кроссплатформенности

Итак, на что похожа компиляция кода ОС Hongmeng? Как он решает проблему кроссплатформенности?

Как видно из рисунка выше, в архитектуре ОС HongmengКовчег КомпиляториIDE для мультитерминальной разработкииграть важную роль.

Одной из самых больших проблем в кроссплатформенности является адаптация различных платформ, особенно сейчас, когда типов устройств становится все больше и больше, как отображать одно и то же приложение на мобильных телефонах, часах, автомобилях и телевизорах Шерстяная ткань? Это то, что делает многотерминальная среда разработки.

Используя многотерминальную среду разработки Huawei, многоязычную унифицированную компиляцию, распределенную архитектуру, комплект обеспечивает элементы управления компоновкой экрана и автоматическую адаптацию взаимодействия, поддерживает перетаскивание элементов управления и визуальное программирование, ориентированное на предварительный просмотр, так что разработчики могут эффективно создавать многофункциональные приложения. терминал на основе того же проекта.Автоматически запускайте приложение, реализуйте реальную одноразовую разработку, развертывание на нескольких терминалах и реализуйте общую экологию между несколькими устройствами.

На изображении выше представлена ​​среда IDE, предоставленная Huawei, в которой вы можете перетаскивать элементы управления через графический интерфейс, а среда IDE может помочь автоматически адаптироваться к различным терминальным устройствам.

С помощью IDE разработчики могут легко разработать набор кодов, которые могут быть автоматически адаптированы к различным устройствам, но машинные инструкции, выполняемые различными устройствами, различаются Как скомпилировать этот набор кодов в соответствии с потребностями каждого устройства Как насчет машинных инструкций?

Устройства Android компилируются встроенными виртуальными машинами на разных устройствах, так что вы знаете, что это за устройство перед компиляцией Итак, как это делает ОС Hongmeng? Это то, что делает компилятор Ark.

Компилятор Huawei Ark — это первый статический компилятор, заменивший режим виртуальной машины Android, позволяющий разработчикам одновременно компилировать языки высокого уровня в машинный код в среде разработки. Кроме того, в будущем компилятор Ark будет поддерживать многоязычную унифицированную компиляцию, что может значительно повысить эффективность разработки.

Причина «медленности» Android заключается в том, что процесс его компиляции осуществляется в терминале, то есть его необходимо компилировать в исполняемый машинный код через виртуальную машину на мобильном телефоне пользователя.

Компилятор Ark, используемый ОС Hongmeng, может напрямую преобразовывать язык высокого уровня (Java) в машинный код, минуя виртуальную машину.И этот процесс компиляции не завершается на мобильном телефоне пользователя, а завершается на этапе разработки приложения.

С помощью компилятора Ark приложение разработчика преобразуется в распознаваемый машиной код перед загрузкой, поэтому его можно быстро установить, запустить и запустить на телефоне без необходимости компиляции виртуальной машины - в некоторой степени, компиляция Ark. процесс компиляции на этапе разработки приложений, что значительно снижает нагрузку на смартфоны и операционные системы.

Согласно официальному представлению Huawei, компилятор Ark — это первый статический компилятор, который полностью заменяет языковую виртуальную машину и вообще не требует интерпретатора.Компилятор, учитывающий эффективность разработки Java и эффективность работы языка C.

В дополнение к компиляции кода, компилятор Ark также предоставляет более эффективный механизм памяти, который отличается от утилизации памяти Android следующим образом:

Android использует централизованный механизм перезапуска памяти, и еще более необходимо приостановить работу приложения, когда выполняется глобальный перезапуск, что также является одной из основных причин случайных зависаний. Компилятор Ark использует метод подсчета ссылок для перезапуска памяти в режиме реального времени и использует специальный алгоритм устранения колец (для устранения проблемы неперезапуска, вызванной взаимными ссылками объектов), чтобы избежать задержки системы, вызванной централизованным перезапуском GC. По сравнению с GC восстановление памяти Ark происходит в реальном времени, а не централизованно, и ему не нужно приостанавливать процесс приложения, что значительно устраняет заикание.

Кроме того, как правило, как JVM на самом деле поддерживает несколько языков, Huawei сказал, что компилятор ARK также будет поддерживать больше языков развития в будущем. Другими словами, разработчики других языков также могут разработать приложения на основе ОС Hongmeng в будущем.

Использованная литература:

https://www.jishuwen.com/d/2NN3

https://www.zhihu.com/question/339567108 https://www.cnbeta.com/articles/tech/876171.htm https://www.cnbeta.com/articles/tech/876919.htm https://juejin.cn/post/6844903817637691400