ランブリング:どのように彼のガールフレンドの無名のOSに説明するのは、クロスプラットフォームを実現する方法ですか?


週末は家で休んで、友人のブラシサークルで彼のガールフレンドは、彼女は突然私に尋ねました:

香港孟OSレビュー

2019年8月9日Huawei社開発者会議は、CEOゆうChengdong、Huawei社のコンシューマ事業は正式に独自のオペレーティングシステムのあいまいさ、カーネルのLinuxカーネル、マイクロカーネルの不分明とLiteOSのリリースを発表しました。将来はあいまいマイクロカーネル、LinuxカーネルとLiteOSを取り除くでしょう。

香港孟(英語:アークコードネームハーモニーOSは、)2012年以来、開発は互換性のあるAndroidアプリのクロスプラットフォーム・オペレーティング・システム可能性がありHuawei社です。

図:無名OSの4つの技術的な特徴
1。ターミナル間でのシームレスなコラボレーション体験を実現するためには、端末のOSのための初めてのアーキテクチャを分散
2.円滑な自然のシステムを実現するためにIPCの待ち時間と高性能エンジンテクノロジーを決定
3.端末機器の信頼できるセキュリティベースのマイクロカーネルアーキテクチャを改造
4.統一IDEサポートの開発、マルチ端子配置、クロス端末生態シェア

クロスプラットフォームとは何ですか

では平台 ≈ 操作系统過去、そのため、オペレーティングシステムに依存しない伝統的な意味でのクロスプラットフォームは、ハードウェア環境に依存しません。開発中のオペレーティングシステムのアプリケーションは、別のオペレーティングシステムにはまだ実行することができます。

しかし、科学技術の発展と、平台 ≈ 操作系统それはHuawei社は無名のOSを立ち上げましたように、彼は、携帯電話、時計、コンピュータ、自動車、スマートホームデバイスなど、さまざまなをサポートすることができ、確立していません。

だから、我々はクロスプラットフォームについて話している今日では、クロスデバイスは、を指します。その平台 ≈ 设备

そのため、Huawei社はあいまいOSは、機器のさまざまな実行することができます期待しているので、無名のOSは、必ずしも、クロスプラットフォーム機能を持っている必要があります。

また、香港孟がちょうどクロスプラットフォーム・オペレーティング・システム以上のものをやってみたかった、ユーザーと開発者が本当にプラットフォーム間感じさせるがより重要です。

そのため、クロスプラットフォーム、オペレーティング・システムの無名の目的は以下のとおりです。ターミナル使用シナリオのための強力なクロスビジネスコラボレーション機能を楽しむために、このようなターミナル間の分散アプリケーションの開発と同じ端末の開発など、だけでなく、最終消費者に、彼らのビジネスロジックに集中するために、開発者を有効にしますシームレスな経験をもたらします。

Javaのクロスプラットフォーム

まずJavaはクロスプラットフォームを実現する方法であるということです。

クロスプラットフォームをサポートするためのJavaは、セキュリティとモビリティネットワークのサポートとして、Javaのアーキテクチャ全体に分散されています。俳優が重要な役割を持っているJava言語仕様、クラスファイル、Java仮想マシン(JVM)のように。

まず、Java言語仕様で、Java言語のプリミティブデータ型の範囲と動作を定義します。第二に、すべてのJavaファイルは、単一のクラスファイルにコンパイルされます。最後に、Java仮想マシンは、クラスのプラットフォームに対応したバイナリファイルに変わります。

Java仮想マシンは、基盤となるオペレーティングシステムとハードウェアの違いを遮蔽するためにJavaのプラットフォーム独立性は、プラットフォームの上に性的Java仮想マシンに基づいて構築されています。

実行できるマシンにマシンコードに複数のステップを経るためにいくつかのJavaコード、Javaソースコードを実行したい、このプロセスは、主に仮想マシンによって行われます。

有名なのHotSpot仮想マシンでは、2つの形で存在して解釈し、時間のコンパイルされています。

  • 解釈

    • バイトコードをマシンコードを実行するための一つ一つを翻訳し、

  • タイムコンパイラ(ジャストインタイム、JIT)

    • バイトコードに含まれるすべてのメソッドは、実行前にマシンコードにコンパイル。

ホットスポットのデフォルト混在モードでは、両方の解釈と実行時のコンパイルの利点を兼ね備えています。これは、最初のバイトコード、コードが熱い(ホットスポット検出)を繰り返し時間コンパイル単位で実行される方法では、その後に行われると解釈されます。

Androidのプラットフォーム間で

実際には、AndroidのJavaベースなので、同じトークンが、あなたには、いくつかのAndroidのコードを実行したいが、また、ステップ数が適用され、マシンにマシンコードにAndroidのソースコードを実行することができます。

しかし、この変換プロセスを実現するためには、アンドロイドの異なるバージョンで異なります。

アンドロイド1.0(2008):のDalvikと呼ばれる仮想マシンを使用して、通訳を統合します。アプリケーションが実行されている場合、それは非常に遅く、説明する文で通訳、コード文を呼び出します。

アンドロイド2.2(2010):アプリケーションが実行されている場合(ジャストインタイム)JITコンパイラ即時メカニズムの導入は、ユーザーが多くの場合、コンパイラの機能は010101機械マシンコードを翻訳した文によって文なしで、直接実行することができている使用されます。一般的に使用されていない場合は機能が表示され、その後、通訳、翻訳するために呼び出す、そう速く、しかし、あなたがアプリケーションを起動するたびにではなく、一度、すべての、一度再コンパイルします。

アンドロイド5.0(2014インディアン10月):ARTへのDalvik仮想マシン(Androidの実行時間)は、(事前に)AOTにJITコンパイラを置き換えます。だから、コンパイルされたコードは101010理解できるマシンにコンパイルすることができますしながら、携帯電話にインストールアプリのダウンロード後や、ユーザーが翻訳しインタプリタを使用している場合、コードの残りの部分は良い訳ではありません、それはそれから目を覚まします。だから、あなたはあなたがアプリケーション、アプリケーションのインストール時間が、少し長いを開くたびにコンパイルする必要はありませんが、また、お使いの携帯電話上のスペースを占有します。

アンドロイド7.0(2016):混合コンパイル機構は、インストールは、最初の中間コードをコンパイルしないが、ユーザがある場合、コードのアイドル部分は静的にコンパイルするAOTコンパイラを介して、マシンコードにコンパイルすることができます。AOTコンパイルコンパイルするかしないように時間を過ごしていない場合は、JIT +インタプリタを呼び出します。このメカニズムは、APPをインストールするには、待ち時間のユーザーが短縮され、スペースのための時間と同等であり、順番に最大効率に上昇し、仮想マシンのコンパイラやインタプリタを最適化するために行うことができます。

Androidのビルドの問題

それは2008年の初めのAndroid 1.0から見ることができ、Androidのは、上記のコンパイラの最適化努力してきました。

現在Androidの採用が+のJIT + AOT統合モードを解釈され、スピードの設置占有スペース+ +走行速度は、良好なバランスを達しています。

しかし、Androidのコンパイラの問題が批判されています。後続の説明アンドロイド8.0の改善にもかかわらず、大幅に効率を説明するためのモデル、ホットコードアンドロイド10.0上に予め配置方法を提供することは、コンパイルされた予め共通コードに知ることができるようになり、インストールに適用しました。

しかし、今のところ、とにかく、Androidは、そのような前提を取り除くために失敗しましたことを、アプリケーションが使用APK、またはJavaコードにパッケージ化されています。言い換えれば、処理することができ、ユーザはAPKの、それはまた、創傷でコンパイルAndroidシステム、内に経験されたアプリケーションが、敷居になります。

プラットフォーム間で香港孟

だから、コードがコンパイルされている香港孟OSは、どのようにそれのようなものでしょうか?彼は、クロスプラットフォーム、それの問題を解決する方法ですか?

私たちは、あいまいOSのアーキテクチャでは、上の図から見ることができ、アークコンパイラマルチターミナルIDEの開発が重要な位置を担っています。

クロスプラットフォームテレビでは、上記表示するように適合させることができ、どのように同じアプリケーション、携帯電話、時計、車、特に今のデバイスタイプのより多くの様々なこと、そこに大きな課題があり、それは、各プラットフォームの問題に適合されていますそれは?これは、マルチターミナル開発IDEを行うものです。

開発者が同じプロジェクトに基づいた効率的な多くの倍を構築することができるようにHuawei社は、端末使用して、複数のIDE、統一された多言語コンパイラ、分散アーキテクチャは、キットの画面レイアウトのコントロールを提供し、インタラクティブなサポートドラッグ&ドロップコントロールの自動適応を提供し、プレビュー指向のビジュアルプログラミング自動実行アプリケーション、真の開発、展開マルチポートは、デバイス間で生態学の間で共有しました。

図は、グラフィカルインタフェースコントロールをドラッグすることができますHuawei社IDEによって提供されており、IDEが自動的に端末装置の様々な合うことができます。

IDEで、ターゲットは容易に自動的にデバイスの様々な適応コードを開発することができるが、デバイスによって実行されるマシン命令の様々なこれらのコードを必要とする各デバイスにコンパイルされる方法を設定するには、同じではありませんマシン命令それ?

Androidデバイスがコンパイル異なるデバイス上の仮想マシンを内蔵し、私たちが知っている機器、特にコンパイルする前で行われ、その後、香港孟OSは、それを行う方法ですか?これは、物事を行うアークコンパイラです。

Huawei社の箱舟コンパイラは、開発環境での開発者に利用可能な静的コンパイラは、マシンコードにコンパイル1回ハイレベル言語になります交換する最初のAndroidの仮想マシン・モデルです。また、アークコンパイラの将来は大幅に開発効率を向上させることができ、統一された多言語サポートをコンパイルします。

Androidのために彼のビルドプロセスの「遅い」理由は、その仮想マシンによってマシンコードの実行ファイルにコンパイルされた、ユーザの携帯電話に必要とされ、最後に行われます。

香港孟OSアークコンパイラの使用は、このように仮想マシンをバイパスし、直接マシンコードに高水準言語(Javaの)であってもよいです。このコンパイル処理ではなく完了するために、ユーザーの携帯電話に、しかし、アプリケーションの開発段階で完了です。

アークコンパイラによって、アプリケーション開発者ダウンロードが認識できるマシンコードに変換されているので、すぐに携帯電話にインストールすることができ、立ち上がって実行し、VMをコンパイルしなくても、前に - ある程度、箱舟のコンパイルコンパイルプロセスは、このように大幅にスマートフォンやオペレーティングシステムを実行しているの負担を軽減し、アプリケーションの開発段階を進めることです。

Huawei社の関係者はアークコンパイラはすべて通訳なしで、完全に静的言語コンパイラ仮想マシンを交換する最初のものである、報告します。Java開発の生産性とC言語コンパイラの運用効率の両方。

コードのコンパイルに加えて、コンパイラ箱舟はまた、ことを除いて回収して、Androidのメモリされ、より効率的なメモリ・メカニズムを提供します。

ランダムカトンの根本的な原因の一つであるとき、世界経済の回復、アプリケーションを中断するより必要な響き、リサイクルに集中するメモリ回復メカニズムでAndroidの採用。アークコンパイラは、カトンをもたらすGC集中回収システムを回避するために、メモリを回復するために、リアルタイム参照カウント法を使用し、リングを排除するための特別なアルゴリズムを用いて、(オブジェクトがお互いを参照することによって引き起こされる問題を解消するためにリサイクルすることができません) 。GCに比べて、メモリの回復の箱ではなく、集中よりも、リアルタイムで、かつ大幅カトンを排除し、アプリケーション・プロセスを中断する必要はありません。

同じJVMが実際に複数の言語をサポートして加えて、Huawei社は言った、アークコンパイラは、言語の開発を通じて、将来的にはより多くをサポートします。言い換えれば、他の言語の開発者が、将来は、OSベースのアプリケーション開発をあいまいすることができます。

参考文献:

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.im/post/5cb07000f265da037d4f9be6



おすすめ

転載: juejin.im/post/5d50d05ee51d4561da620117