Articles

Pythonよりもコード行数が多いJavaを使う理由

Pythonよりもコード行数が多いJavaを使う理由

さて、Pythonよりも多くのコード行数と労力を必要とする冗長な言語でありながら、なぜ今でも広く使われているのかを説明します。

静的型付け

静的型付け言語であることには、上で述べたようにいくつかのデメリットがありますが、多くのメリットもあります。 Java は、Python のような実行時ではなく、コンパイル時にすべての潜在的なエラーを捕捉する型安全性を提供し、したがって、実行時の潜在的なエラーの可能性を低減します。 この機能により、大規模なアプリケーションの管理が容易になります。 一方、Pythonは動的型付け言語であり、実行時にエラーを検出するため、実行時エラーはコンパイル時エラーよりもデバッグが困難です。 Java プログラマは、すべてが明示的に宣言されているので、互いのコードをすぐに理解できますが、Python プログラマは、変数の型またはシグネチャが判明したときに、すべてが実行時に定義または表示されるので、コードを分析する際にいくつかの問題に直面することになります。 とはいえ、パフォーマンスと速度に関する限り、Java は Python よりも優位に立っています。 JIT (Just-in-Time Compiler) が Java バイトコードを非常に高速にネイティブのマシンコードに変換するおかげで、Java のパフォーマンスは C/C++ と同等に高速化されます。 Python の開発者は、さまざまなプログラミング言語の実装を通じて、Python コードのパフォーマンスを高速化することもできます。 たとえば、Cython を使用して Python コードを C/C++ コードにコンパイルしたり、Jython を使用して Python コードを Java コードにコンパイルしたりすることができます。 しかし、Python は Java のようなネイティブなパフォーマンスと速度を提供しません。

Better Portability and Cross-Platform Support

どちらの言語もプラットフォーム非依存型です。 Python は Java よりもはるかに遅いため、Python 開発者はしばしば、C++ や Fortran などの他の高速な言語で書かれたライブラリにいくつかのタスクを委ねる必要があります。 したがって、Python を使用する企業は、例えば C でいくつかの部分を開発するか、少なくとも既存の C/C++ ライブラリをラップするためのスタッフ、ツール、およびインフラストラクチャを必要とするかもしれません。 これは、純粋なPythonで得られるプラットフォームの独立性を失う可能性があることを意味します。

並行処理と並列プログラミング

Java は初期バージョンから並行処理の完全なサポートを提供しています。 また、同時実行とマルチスレッドに関して、時間の経過とともにいくつかの素晴らしい機能を追加してきました。 また、JavaはPythonと比較して、並列プログラミングをよりよくサポートしています。

エコシステム

PythonとJavaには、確かに多くの堅牢なライブラリやフレームワークがあります。 しかし、エンタープライズレベルのアプリケーション開発では、エンタープライズや大量生産アプリケーション向けの成熟したライブラリやフレームワークの豊富なセットを持つJavaが明らかに勝者です。 これらのライブラリやフレームワークは、エンタープライズ開発者の大規模なコミュニティによって維持・サポートされています。 したがって、エンタープライズ・アプリケーションの開発ははるかに容易になります。 強力なエコシステムが、Scala、Kotlin、Clojure、および Groovy など、ほとんどの言語が JVM をターゲットにしている理由です。

さらに、Java に見られる Gradle や Maven などの強力な依存性管理ツールもあります。 データ解析の分野では Python がより優位であるという事実に触れつつ、これらの分野でどちらが優れているか議論することができます。 しかし、モバイルは、この時代のどのプログラミング言語よりも、Javaが確固たる地位を占めている分野の1つであり、Pythonはどこにもないようなものです。

注目すべきは、JavaがKotlinと並んでAndroidモバイルプラットフォームの公式プログラミング言語の1つであることです。 そして、スマートフォンやタブレットを含むAndroidデバイス上で動作するアプリの多くは、Javaで開発されています。 さらに、何百万もの組み込みデバイスがJavaを使用しています。

一方、Pythonはモバイル空間ではそのようなサポートはありません。 ただし、KiwiというPythonのライブラリを使えば、モバイルアプリを開発することは可能です。

強力なデータベース接続性

Javaは、データベース接続性においてPythonに勝っています。 JDBC (Java DataBase Connectivity) のおかげで、Java は SQOOP や SQL のような異なるデータベースと Java プログラムの接続に広く使用されている Java Database Connectivity (JDBC) のような強力なデータベース接続レイヤーで構成されています。 一方、Pythonのデータベースアクセス層は、JavaのJDBC

に比べると弱いです。