Java はクロスプラットフォーム言語だと言われていますが、クロスプラットフォーム言語とは何ですか? PHP C 言語は異なるプラットフォームでも開発できると思いますが、クロスプラットフォームな言語はありますか?
返信内容:
Java のクロスプラットフォームは「一度コンパイルすれば、どこでも実行できる」という特徴があります。Java がコンパイルされるとき、Java は指定された CPU タイプのアセンブリ コードにコンパイルされず、特定のオペレーティング システムのシステム コールにも関連付けられないため、コンパイルされた結果は CPU やオペレーティング システムに依存しません。 Java がコンパイルするのは一種のバイトコードであり、Java 仮想マシン上で実行する必要があります。Java 仮想マシンは、さまざまなオペレーティング システムと CPU 間の違いを保護します。
C がコンパイルされた後、CPU タイプを指定するのはアセンブリ コードです。コンパイル プロセスは特定のオペレーティング システムのシステム ライブラリに関連する必要があるため、Java のようにクロスプラットフォームにはできません。ただし、記述された C コードがシステム コールを直接呼び出さない場合は、このコードをコンパイルして別のプラットフォームで実行できます。 Java との違いは、C は異なるプラットフォームで個別にコンパイルする必要があることです。
JavaScript や Python などの一部の言語はコンパイル処理を行わずに解釈・実行されるため、対応するインタプリタが存在することが前提となります。も解釈されます。
クロスプラットフォーム言語は、クロスプラットフォームではない基盤となる機能に基づいて構築されます
たとえば、C/C++ 標準ライブラリ
Java 仮想マシン、.NET ランタイム
これらはクロスプラットフォームではありません
実際、今クロスプラットフォームについて議論することはあまり意味がありません。いわゆるクロスプラットフォーム言語とは、作成したコードを変更せずに別のオペレーティング システムや CPU に直接適用できることを意味します。
しかし今では、ほぼすべての言語がこのようになっています...C/C++、Java、C#、Python、PHP、JS、Ruby、Go...など。
Java がクロスプラットフォームであると言うのは、C と比較して、コンパイルされたバイナリ ファイルが Java ランタイム環境がインストールされている他の
プラットフォーム 上で実行できるためです。インストールされていない場合は、野菜を停止してください。 。 C に関しては、コンパイルされたものは通常、特定のオペレーティング システム上でのみ実行でき、場所を変更すると動作しません。ただし、
を実行する場合、追加のオペレーティング環境 をインストールする必要はありません。ただし、CPU とオペレーティング システムを個別にコンパイルするように指定することもできます。
さらに、C#、Python、php、js などはすべて、1 つのコードで複数のプラットフォーム上で直接実行できます。ただし、いずれも
対応する動作環境が必要です。
私の JavaScript スキルを披露する時が来ました!
インターネットにアクセスできる限り、js を使用する必要があります。
携帯電話で WebView を実行する場合、当然、より高度なものは React-native です。
Game Canvas
は、機能は比較的弱いですが、マイクロコントローラー上に記述することもできます。
PC 側では、現在電子を使用している人がたくさんいます。
ブラウザ。 。 。どの言語で虐待されたいのか教えてください。
「クロスプラットフォーム」の意味はインターフェースの観点からのみであるべきだと思います。
結局のところ、サーバーサイドは Linux がほぼ独占しています。サーバーサイドソフトウェアを作成する際にWindows版を作成する必要はありません。
信じてください!インターフェイス UI は、js またはその派生言語によって支配される必要があります。
Java クロスプラットフォーム開発者はコストが最も低く、一度コンパイルすればどこでも実行できます。 C言語、Python、phpの一部の機能はいずれも一部のOSの固有機能を使用しており、開発コストが比較的高くなります。
実際、現在では多くの言語がある程度のクロスプラットフォーム機能を備えていますが、実際にはそれらは一般に役に立ちません。たとえば、Java と h5 は無料でクロスプラットフォームで使用できます。彼らは悪い経験をしています。
全体的に作れるかどうかはあまり意味がありません。まず最初に、パフォーマンスを重視したモジュールを C で書き換えます。
厳密に言えば、クロスプラットフォームに対応できる言語はありません。 C# について話しましょう。C# はオープンソースです。Swift について話しましょう。これもオープンソースです...
まず、ポータブルはクロスプラットフォームとは呼ばれません。この概念を混同しやすい人がいます。
クロスプラットフォーム言語の最大の特徴は、マシンコードをコンパイルせず、システム API を使用しないことです。
1. CPU は環境によって異なるため、マシンコードをコンパイルしないでください。PC はすべて x86 ですが、PC ではなく携帯電話の場合、CPU の命令セットは x86 ではありません。コードはまったく役に立たず、プラットフォームを越えることもできません。
2. オペレーティング システム API を使用しないでください。これは非常に簡単です。システム API が異なれば、定義、使用法、ソフト割り込みベクトルが異なります。システム API を使用してスレッドやプロセスを作成するコードは、汎用的ではありません。 。
Java は仮想マシン上で実行され、コンパイルされたコードは JVM によって実行されます。JVM がハードウェアにインストールされている限り、CPU は気にする必要はありません。 CPU も同様に、システム API をユニバーサル JAVA ライブラリにカプセル化します。システムは異なりますが、システム カーネルは同様のことを行い、カプセル化してどこでも使用できるため、問題はありません。前述の QT は、クロスプラットフォームや移植性を実現するためにそのようなカプセル化と統合に依存していますが、問題は QT がプログラミング言語ではないため、その答えは間違っています。 。 。
しかし、クロスプラットフォーム言語自体は、コードがクロスプラットフォームであることを意味するものではありません。そうしないと、多くのシステム リソースを統一された方法でカプセル化する必要があるため、PC と Android は 2 つのバージョンの Java を作成する必要がなくなります。ワークロードは膨大であり、実行は簡単です。 いくつかの悪影響に対して支払う代償はありますが、報酬はありません (たとえば、Microsoft は Android システムをサポートし、PC 上で実行できる VS を作成します。その報酬は何ですか)。これはプログラム開発者にとっては無意味なことだと考えられるかもしれません。2 つの APP を作成するのは問題ではありません。2 つの間の互換性の問題です。報酬がなければ、誰もこの作業を行うことはできません。したがって、Java の 1 つのコンパイルはどこでも実行されます。見た目は美しくても、実際にはナンセンスです。ただし、これは Java がクロスプラットフォーム言語であると言われることを妨げるものではありませんが、作業は適切に行われていません。
別のタイプのクロスプラットフォームはマクロ言語と呼ばれます。このような言語の多くはコンパイルを必要としません。通常、これらの言語は、Web ページに特化したもの、データベースに特化したもの、フラッシュなど、機能が限定されています。スクリプトなど。 HTML を例に挙げると、最終的には、この言語の目的は、テキストを使用して Web ページのプレゼンテーションを記述することです。 Android バージョン、PC バージョン、Apple バージョンのブラウザを実装していますが、いずれも HTML スクリプトを認識するため、HTML はクロスプラットフォーム言語です。 。 。比喩的に言えば、これらの言語は抽象的なプロトコルであり、開発者が合意されたプロトコルに従ってプログラムを作成する限り、そのアプリやサービスを実行する必要があります。 -platform ですが、この種のマクロ言語は、機能範囲が制限されています。 。 。
それはqtでなければなりません。
プログラミング言語の役割はアルゴリズムを記述することだけであり、それが最適化や翻訳を目的としないのであれば、それがどのように翻訳されるかは私には関係ありません。