HTML5とJSアプリがネイティブアプリと同じように機能しないのはなぜですか。


9

私が理解していることから、

  • HTMLはマークアップ言語であり、XAML、XIB、Androidが使用するもの、およびその他のネイティブUI開発フレームワークのコンテンツも同様です。
  • JavaScriptは、イベント処理、クライアント側の検証などのさまざまなフレームワークでC#、Java、Objective-C、またはC ++が行うことを含むクライアント側スクリプトを処理するためにJavaScriptと一緒に使用されるプログラミング言語です。
  • SenchaやAngularなどのフォームフレームワークで利用可能なMVC / MVVMパターンがあります。
  • 他のフレームワークと同様に、sqliteとキー値ストアの両方の形式のlocalStorageがあり、不足しているほとんどすべてのAPI仕様があります。
  • ネイティブUIフレームワークがUIをレンダリングする必要がある場合は常に、同様のマークアップを解析してUIをレンダリングする必要があります。

質問の内訳

  • HTMLとJS自体で同じことをやめるのは何ですか?
  • Webコントロールまたはブラウザーをレイヤーとして使用する代わりに、HTML(CSSと共に)とJSを同じように実行できないのはなぜですか?
  • レイヤーがある場合でも、。++ランタイムとJVMは、C ++、Cが使用されていない他の場合にそうです。
  • それでは、DalvikのようなAndroidの場合を考えてみてください。なぜ、Chromiumが(dalvikとNDKと共に)別のオプションではないのですか?

だから問題は、

現在の実装はそれほど良くない場合でも、理論的には、HTML5ベースのアプリケーションを他のモバイル用のネイティブアプリと同じように機能させることは可能ですか?


1
リファクタリングして、どのステートメントから始めたのか、そして実際の質問は何かを明確にしてください。
funkybro 2013年

「HTMLとJS自体で同じことをやめるのを止めるもの」とはどういう意味ですか?「同じ」の意味がわかりません。以前に4つの発言をしたことがあるので、その質問でどちらを指しているのかわかりません。
アプシラー2013年

新しいものではなく、HTMLをマークアップとして使用するネイティブ開発プラットフォームがある場合。言語としてJSを使用すると、パフォーマンスは向上しますか?このI / Oのグーグルは、彼らは実用的であり、Chrome OSではなくAndroidを電話で使用していたと述べました では、FF OSは実用的な概念ではないということですか?すべてのベストプラクティスに従っている場合、FFOSアプリがそれぞれのプラットフォームでAndroidアプリと同等のパフォーマンスを発揮することは可能ですか?
Amogh Talpallikar 2013年

Windows Metroアプリケーションを見てください。これらは、GUIデザインにHTMLを使用し、その背後にあるロジックにJavascriptを使用するネイティブアプリケーションです。
フィリップ

HTML / JSのパフォーマンスは一般に、情報を表示し、ユーザーのアクションに基づいて外部サーバーに要求を行うユーザーインターフェイスにとって十分なパフォーマンスです。本来はそれ以上に構築されたわけではありませんが、今では驚くほど機能が向上しています。それでも、より直接的なデバイスアクセス、ネイティブコードとのやり取り、またはオペレーティングシステムとのやり取り(通知など)が必要な状況では、汎用のWebテクノロジーを使用する良い方法はまだありません。
Katana314 2013年

回答:


11

HTML5アプリのポスターボーイであるLinkedInは2013年初めにネイティブになりました。VentureBeatでインタビューで彼らは理由を説明しています。

これはあなたの質問に最も関連する部分だと思います:

Prasad氏は、パフォーマンスの問題が原因でクラッシュが発生したり、アプリの動作が遅くなったりすることはないと述べています。彼が言ったことは、モバイルWeb用のHTML5にはまだ明るい未来があることを示しています。ただし、開発者がそれをサポートするツールを作成する用意がある場合に限ります。

...

非常に欠けているものがいくつかあります。1つはツールサポートです。実際に機能するデバッガー、メモリが不足している場所を通知するパフォーマンスツールがあります。AndroidとiOSを見ると、本番環境で問題が発生したときに多くの詳細情報を提供するツールの構築に重点を置いている2つの大企業があります。モバイルWeb側では、これらのデスクトップツールをモバイルデバイスで機能させることは非常に困難です。私たちが苦労している2番目の大きなチャンクは、操作性、ランタイム診断情報です。今でも、HTML5を作成するときは、クライアント側アプリとして作成します。これは、クライアントサーバーアーキテクチャの詳細です。…その操作性は、大量のユーザーに配布されたときに情報を提供しますが、それをサポートする優れたツールもそれほど多くありません。

[プラサードはまた、問題をすばやく解決するための開発ツールと運用ツールは「存在しない」と述べた。]

これら2つは存在しないため、人々はネイティブにフォールバックしています。HTML5の準備が整っていないわけではありません。エコシステムがそれをサポートしていないということです。…ツールはありますが、最初の段階です。人々は基本を理解しているだけです。


わかりません。私たちには非常に大きな企業があります。Google、Microsoft、AppleはChrome、Safari、IEの支援に重点を置いています。MozillaはFirefoxに取り組んでいます。Chrome Dev Tools、Web Inspector、Firebugがあります。そしてプラサドはツールはないと言っていますか?
niutech 2014年

@niutech:HTML5アプリにValgrindのようなツールが必要だとしましょう。あまりありません。
vartec 2014年

5

Javascript標準ライブラリの欠如は恐ろしい阻害剤です。いくつか挙げると、jQuery、Dojo、YUIなどの優れたフレームワークがありますが、それらはすべてプレゼンテーション層とXHRにのみ焦点を当てています。

構成可能なロギング、暗号化ツール、グラフアルゴリズム、UUIDジェネレーター、マップ、セット、ツリー、テンプレート、依存関係管理、日付操作、ローカリゼーション/国際化、マトリックス操作、依存関係注入、ユニットテスト、マップ削減、XML処理が必要ですか?JVMまたは.NET言語の場合は簡単-Javascriptでは、独自の実装をロールバックする必要があることがよくあります。


それにレポートを追加します。
アランB

ECMAScript 6は、これらの機能の大部分を追加します。Google Closure Libraryは別のソリューションです。
niutech 2014年

Angularは今、素晴らしい宣言的な方法を提供します。
Amogh Talpallikar 2014年

2

Javascriptが遅い理由の1つは、型安全性が完全に欠如していることです。どの変数もいつでもどのタイプでもかまいません。また、ほとんどの操作はさまざまなタイプで有効ですが、セマンティクスは異なります。簡単な用語

a += b;

そのためには、通訳のために容易ではありませんaし、b数値や文字列である可能性があります。両方が数値の場合、それは算術加算です。両方が文字列の場合、これは文字列の連結です。1つが文字列で1つが数値の場合、文字列の連結を実行する前に数値をフォーマットする必要があります。これらは完全に異なる操作であり、引数の解釈を変える必要があります。

種類に応じて、ab、の種類はa今かかわらず、それは前だっ入力する内容の、ダブル、または文字列の整数を指定できます。

JSの変数はいつでも型を変更できるため、インタープリターは、この命令が呼び出されるたびに型の評価を回避して、誤った操作を回避します。これには追加のCPUサイクルが必要です。

最適化をはるかに困難にする他の機能は、スパース配列またはガベージコレクションと、いつでも起動できるイベントハンドラーです。

asm.jsを見てください-これはJavaScriptのサブセットであり、一部のJS機能(特に動的型付け)を取り除くことで、はるかに優れた最適化を可能にします。


1
最新のJavascript JITコンパイラーは、実際のランタイム使用で安定している場合は、使用しているタイプの特殊なマシンコードをオンザフライで生成します。a整数、文字列、倍精度などの方法で実際にコーディングしている場合は、それで問題ありません。もちろん、インタプリタをまだ使用している古いブラウザにも、これらの最適化はありません。
エサイリヤ2013年

1
@Esailija最新のJavaScript環境は、古い環境よりもはるかに高速です。ただし、.NET、JVM、ErlangVMなどの静的に型付けされた最新の環境と比較すると、速度はまだ遅い
David Sergey

@nirthええ、私はそれを言っているのではなく、この投稿がインタプリタ/非最適化jitコンパイラがどのようにそれを実行するかを説明していて、それは非常に遅いと言っているだけです。
エサイリヤ2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.