検索
ホームページJava&#&チュートリアルJava の最大の利点は本当にクロスプラットフォームであることでしょうか?

以下の説明はPCおよびモバイル端末のみを対象としています。

Java の最大の利点は本当にクロスプラットフォームであることでしょうか?以前はそうでしたが、今はそうではありません。

クロスプラットフォーム要件があるのはクライアント アプリケーションのみであり、サーバーではありません。たとえば、デスクトップ アプリケーションの場合、顧客は Windows ユーザーまたは Linux ユーザーである可能性があり、各プラットフォームに適応するためにこれ以上投資したくない場合は、Java のいわゆる「一度書けばどこでも実行できる」機能が非常に優れたものになります。しかし、今日ではソフトウェアの世界全体が B/S アプリケーション (組み込みを除く) に傾いています。たとえクライアントがクロスプラットフォームであっても、QT などのサードパーティ フレームワークは Swing Java よりもはるかに強力です。デスクトップアプリケーションの分野では、これは議論の余地のない事実であり、Java が誇りに思っていたアプレットはとうの昔に姿を消しました。クライアントサイド Java に優れた点があるとすれば、それは Android だけです。 Android は当初、異なるハードウェア デバイス間の違いを保護するために JVM に依存し、大きな成功を収めましたが、現在、Android L の ART モードの登場によりこの状況が覆されようとしており、Google も独自の Go 言語を使用したいと考えているかもしれません。 Android プラットフォームの最初の言語としての Java。したがって、クライアント側では、Java はほぼ完全に敗北しています。

サーバー側アプリケーションはクロスプラットフォームである必要はありません。 Web サーバーを構築するときに、現在 Linux を使用し、来月には Windows に切り替える企業はないと思います。 Debian から Fedora など、Linux ディストリビューションを変更するだけの場合、基本的に Linux カーネルは変更されないため、C++ のような純粋にコンパイルされた言語では問題ありません。ゲームサーバーを構築する場合、ほとんどの人が Win プラットフォームではなく Linux を選択すると思います。 Java のクロスプラットフォームの利点は、実際には大幅に弱まっています。通常の状況では、Java がクロスプラットフォームであることを認識することはほとんど不可能であると言えます。 3 つの主要な商用 JVM の 1 つである JRockets はコンパイラ専用の JVM です。つまり、アプリケーションの起動時にすべてのバイトコードがローカル マシン コードにコンパイルされます。これにより、実際にはクロスプラットフォームが大幅に放棄され、パフォーマンスが追求されます。

今日、Java の最大の利点は、その大規模で完全なエコシステムです。 プログラミング言語が普及できるかどうかは、主にそのエコシステムによって決まります。 Java エコシステムの完成度は主に次の側面に反映されています:

Java には世界で最も多くのプログラマーがいます。農家と言っても構わないのですが、その数によっては企業が人材を採用する際にJavaプログラマーを採用しやすくなるというのが一番の効果です。想像してみてください。ソフトウェアのセットを作成したいと考えていて、C++、Scala、Ruby などの言語で実装する必要がある優れた技術ソリューションがあるにもかかわらず、十分な人材を採用できない場合、その計画は最も効果的です。おそらく無駄になるでしょう。現時点では、アプリケーション Java でもそれが可能であり、十分な人材を簡単に採用できるため、Java を選択する可能性が高くなります。

Java には多数のサードパーティ ライブラリがあります。 HTML を解析したい場合は、おそらく C/C++ などの言語で独自の解析アルゴリズム ライブラリを作成する必要がありますが、Java の場合は、Github で JSoup を簡単に見つけて、Maven を使用して依存関係をインポートし、 HTML は数分で完成します。このため、Java を風刺する言葉があります。「私たちはコードを生成しているわけではありません。私たちは単なる Github 移植者です。」この文は文字通り意味はありますが、大きな価値のあるソフトウェアの生産効率の向上を無視しています。ソフトウェア開発の場合、企業のコストは実際には「資本金」だけです。開発期間が 1 か月短縮されるたびに、数十万、数千万の研究開発費を節約できます。

Java には強力な IDE があります。 Eclipse は、プラグインを通じてほぼすべての開発ニーズに対応できます。少し遅いですが、JVM チューニングによってプログラムのスムーズさを向上させることができます。デフォルトの JVM パラメータは決して使用しないでください。しかし、IntelliJ Idea は Eclipse を完全に上回り、Idea のインテリジェンスは Win プラットフォームの VS とほぼ同等です。私は Vim なしでは生きていけないタイプの人間ですが、両方の IDE に Vim プラグインがあり、私を楽しく生きさせてくれます。

Java には多くのキラー アプリケーションがあります。 言うまでもなく、Spring、Struts、Hibernate、Hadoop、Tomcat、JBoss などです。

Java には構文機能がほとんどありません。はい、それもプラスです。 C++ は C に比べて多くの機能を追加します。学習が難しいだけでなく、使用時のコードの可読性も低下します。実際、時間と労力の無駄です。今日の世界では、プログラミング言語の要件はシンプルな構文と読みやすいコードであり、パフォーマンスが次善の策であるため、Python や Ruby などのプログラミング言語が誕生しました。 Java 構文が肥大化していると多くの人が批判しており、私もそれを認めますが、実際のところ、プログラミング言語は構文が肥大化したために廃止されたわけではなく、その生死を決めるのはエコシステムです。批評家向けに、Zhihu の言葉を引用します。「動的型はしばらくの間は優れていますが、コードのリファクタリングは火葬場です。」

Java のパフォーマンスはすでに十分に高いです。 Sun/Oracle の HotSpot JVM の組み込み JIT コンパイラは、実行時にバイトコードを最適化するために多大な努力を払ってきました。サーバー アプリケーションの起動後、JVM は十分に「ウォームアップ」され、適切な起動パラメータが与えられます。パフォーマンスに非常に敏感なシステム アプリケーションでなければ、Java は十分に高速です。これを視覚化する簡単で実行可能な方法があります。+XX:PrintCompilation を JVM 起動パラメータに追加して、JIT コンパイラのビジー度を確認します。今日の世界では、パフォーマンスが許容できる場合、開発効率が最優先され、これが Python などの動的スクリプト言語が人気の主な理由でもあります

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JVMは、Javaの「Write and、Run Anywhere」(Wora)機能にどのように貢献しますか?JVMは、Javaの「Write and、Run Anywhere」(Wora)機能にどのように貢献しますか?May 02, 2025 am 12:25 AM

JVMは、バイトコード解釈、プラットフォームに依存しないAPI、動的クラスの負荷を介してJavaのWORA機能を実装します。 2。標準API抽象オペレーティングシステムの違い。 3.クラスは、実行時に動的にロードされ、一貫性を確保します。

Javaアプリケーションでプラットフォーム固有の問題を緩和するためのいくつかの戦略は何ですか?Javaアプリケーションでプラットフォーム固有の問題を緩和するためのいくつかの戦略は何ですか?May 01, 2025 am 12:20 AM

Javaはプラットフォーム固有の問題をどのように軽減しますか? Javaは、JVMおよび標準ライブラリを通じてプラットフォームに依存します。 1)bytecodeとjvmを使用して、オペレーティングシステムの違いを抽象化します。 2)標準のライブラリは、パスクラス処理ファイルパス、CHARSETクラス処理文字エンコードなど、クロスプラットフォームAPIを提供します。 3)最適化とデバッグのために、実際のプロジェクトで構成ファイルとマルチプラットフォームテストを使用します。

Javaのプラットフォームの独立性とマイクロサービスアーキテクチャの関係は何ですか?Javaのプラットフォームの独立性とマイクロサービスアーキテクチャの関係は何ですか?May 01, 2025 am 12:16 AM

java'splatformentencentenhancesmicroservicesecturectureby byofferingdeploymentflexability、一貫性、スケーラビリティ、およびポート可能性。1)展開の展開の展開は、AllosmicRoserviThajvm.2)deploymentflexibility lowsmicroserviceSjvm.2)一貫性のあるAcrossServicessimplisimpligiessdevelisementand

GraalvmはJavaのプラットフォーム独立目標とどのように関係していますか?GraalvmはJavaのプラットフォーム独立目標とどのように関係していますか?May 01, 2025 am 12:14 AM

Graalvmは、Javaのプラットフォームの独立性を3つの方法で強化します。1。言語間の相互運用性、Javaが他の言語とシームレスに相互運用できるようにします。 2。独立したランタイム環境、graalvmnativeimageを介してJavaプログラムをローカル実行可能ファイルにコンパイルします。 3.パフォーマンスの最適化、Graalコンパイラは、Javaプログラムのパフォーマンスと一貫性を改善するための効率的なマシンコードを生成します。

プラットフォームの互換性についてJavaアプリケーションをどのようにテストしますか?プラットフォームの互換性についてJavaアプリケーションをどのようにテストしますか?May 01, 2025 am 12:09 AM

aeffectivelytestjavaapplicationsforformcompativity、followthesesteps:1)setupautomatedacrossmultipleplatformsusingsingcitoolslikejenkinsorgithubactions.2)divivisonmanualtingonrealhardwaretocatissusuessususus.3)

プラットフォームの独立性を達成する上でのJavaコンパイラ(Javac)の役割は何ですか?プラットフォームの独立性を達成する上でのJavaコンパイラ(Javac)の役割は何ですか?May 01, 2025 am 12:06 AM

Javaコンパイラは、ソースコードをプラットフォームに依存しないバイトコードに変換することにより、Javaのプラットフォームの独立性を実現し、JVMがインストールされた任意のオペレーティングシステムでJavaプログラムを実行できるようにします。

プラットフォームの独立性のためにネイティブコードを介してbytecodeを使用することの利点は何ですか?プラットフォームの独立性のためにネイティブコードを介してbytecodeを使用することの利点は何ですか?Apr 30, 2025 am 12:24 AM

bytecodeachievesplatformedentencedexedectedbyavirtualMachine(VM)、forexApplev.forexample、javabytecodecanrunrunrunnonydevicewithajvm、writeonce、runany "ferfuctionality.whilebytecodeOffersenhの可能性を承認します

Javaは本当に100%プラットフォームに依存していませんか?なぜまたはなぜですか?Javaは本当に100%プラットフォームに依存していませんか?なぜまたはなぜですか?Apr 30, 2025 am 12:18 AM

Javaは100%のプラットフォームの独立性を達成することはできませんが、そのプラットフォームの独立性はJVMとBytecodeを通じて実装され、コードが異なるプラットフォームで実行されるようにします。具体的な実装には、次のものが含まれます。1。bytecodeへのコンパイル。 2。JVMの解釈と実行。 3。標準ライブラリの一貫性。ただし、JVMの実装の違い、オペレーティングシステムとハードウェアの違い、およびサードパーティライブラリの互換性は、プラットフォームの独立性に影響を与える可能性があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境