こんにちは! フリーライターの翁長です。
これからプログラミング言語を学習する際、どの言語を選ぶかは非常に重要な問題です。今後のエンジニア人生が決まるともいわれる大事な選択となります。
最近の傾向として、人気のプログラミング言語の定番ともいえるJavaと、人工知能(AI)などで有名になったPythonの2つで迷う人が増えています。そこで今回は、JavaとPythonについて、
- それぞれの特徴と得意分野
- プログラミングの文法比較
- 勉強のしやすさ
- 現在の需要
などの4つの観点から比較してみました。最後までお読みいただければ、どちらがより自分に向いているかが分かるでしょう。
なお、Javaの記事については、こちらにまとめています。
JavaとPythonそれぞれの特徴と得意分野
Javaの特徴と得意分野
Javaは、Sun Microsystems社(2010年にOracle社が買収)が1996年に正式バージョンを発表したプログラミング言語です。バージョンアップを重ねて進化を続けていて、現在の最新バージョンはJava 9です(2017年10月時点)。
Googleが主に開発に用いているGoogle三大言語(Java、C++、Python)のひとつでもあります。Javaの特徴を一言で表すと環境に依存しないということです。JavaではJava仮想マシン(JVM)によって環境の違いを吸収してもらうことで、どんなコンピュータ上でも動くことを可能にしています。
Javaは、携帯電話やスマートフォンなどで使われる小規模なアプリケーションから、銀行で使われるような大規模な業務システムを開発する際にも用いられます。特に、他の言語と比べて大規模な業務システムを作る際に採用されることが多いのが特徴です。
Javaで開発されているシステムの代表例の1つが業務システムです。金融業の取引システムや小売業の在庫管理システムなどがあります。Javaはインターネットと相性がよく、Twitterなどの大規模なWebサービスも開発できます。
また、Googleが提供するAndroid自体がJavaで動いていて、Android端末向けのアプリ開発にも利用されています。その他、家電製品や従来の携帯電話、Blu-rayプレーヤーなどに搭載されているソフトウェアもJavaで開発されています。
Javaについて、より詳しく知りたい方は以下の記事を参考にしてください。
Pythonの特徴と得意分野
Pythonとは、1991年にオランダ人のグイド・ヴァン・ロッサム氏によって開発されたプログラミング言語です。Pythonという名前は、イギリスのBBCが制作したコメディ番組空飛ぶモンティ・パイソンから来ているといわれています。
現在、Pythonではバージョン2.x系と3.x系という2つのバージョンがあり、それぞれが今でも利用されています。Pythonの特徴として、文法がシンプルで読みやすい・書きやすいという点が挙げられます。他人の書いたコードも比較的読みやすいものになります。
その可読性の高さから、プログラミング初心者でも学びやすい言語だと言われています。Pythonで作れるものはWebアプリ・データ解析/分析ツール・人工知能(AI)などが挙げられます。Pythonで作られたWebアプリとしてはYouTube・Instagram・Dropboxなどがあります。
また、統計学などを用いて解析、分析を行いデータを活用するツールを開発する際にも使われています。Pythonを使った有名なサービスとしてtableauのようなデータ解析/分析サービスがあります。
Pythonが他の言語と一番違う点は、人工知能を作りやすいことです。Pythonは以前から人工知能の研究で利用されていて、機械学習やディープラーニング(深層学習)専用のライブラリが用意されているなど、人工知能を作りやすい環境が整っています。
人工知能の中でも機械学習やディープラーニング(深層学習)という技術が、注目されています。そうした技術を搭載している身近な例としては、Pepperロボットがあります。
Pythonについては、以下の記事でも詳しく解説しています。ぜひ一度目を通しておいてください。
JavaとPythonの比較
プログラミングの文法比較
Javaではデータ型というものを最初に固定で決める形式(静的型付)を取ります。また、Javaはプログラムを実行する前に、コンピュータが実行できる形式に翻訳する(コンパイル)必要があります。
一方、Pythonではデータ型がプログラムが実行するときに決まる(動的型付)という形式をとります。Pythonではコンパイルを必要とせずにプログラムを実行できます。簡単なプログラムの書き方と実行の手順の違いを見ていきましょう。
ここでは、定番のHello worldという文字列を出力するプログラムを使います。Javaの場合、
(1)ソースコードを記述します(Sample.java)。
public class Sample { public static void main(String[] args){ System.out.println("Hello world"); } }
(2)ソースコードをコンパイルします。
javac Sample.java
(3)プログラムを実行します。
java Sample
(4)実行結果が出ます!
Hello world
一方、Pythonの場合、
(1)ソースコードを記述します(Sample.py)
print 'Hello world'
(2)プログラムを実行します
python sample.py
(3)実行結果が出ます!
Hello world
ライブラリの違い
ライブラリとは、ある程度まとまった機能を提供するプログラムの部品のことです。ライブラリは独立した部品として提供されていて、ある処理をしたい時に必要な分だけ読み込んで使うことができます。Java、Pythonともに多くの種類のライブラリが用意されています。
Javaは汎用性の高いライブラリが用意されているのに対して、Pythonは数値処理や化学計算用のライブラリが充実しています。
Javaのフレームワーク
フレームワークとは、プログラミングでアプリ開発をする際に土台として提供されているものです。アプリ開発に必要なものをまとめて提供してくれるので、フレームワークを利用することはスムーズにアプリを開発するためのスタンダードな方法になっています。
Javaには、以下のようなフレームワークが用意されています。
Struts
Javaでもっとも有名です。Apacheソフトウェア財団によって開発されているWebアプリケーションフレームワークです。
JSF(JavaServer Faces)
ユーザーインターフェイス(ユーザーが操作する見た目の部分)を簡単に作ることができるフレームワークです。
Play Framework
Javaおよび関数型言語のScalaというプログラミング言語をサポートしているフレームワークです。
Spring Framework
カバーしている範囲がとても広い万能型フレームワークです。
SAStruts
日本のオープンソースプロジェクトであるSeaserプロジェクトがStrutsをベースとして開発されたフレームワークです。
Java EE
1999年に登場したJava標準仕様の大規模システム向けのフレームワークです。
Dropwizard
アメリカのSNSであるyammerのWebサービス提供のために作られた、比較的新しいフレームワークです。
Javaのフレームワークについては以下の記事でも紹介しています。
Pythonのフレームワーク
Pythonには、以下のようなフレームワークが用意されています。
Bottle
初学者がWebフレームワーク入門として利用するにもおすすめのフレームワークです。
Flask
小規模なフレームワークで、Jinja2というツールとWerkzeugというプログラミングに使用するフレームワークです。
Django
実用的に作られた素早く精錬された開発環境を提供する、多機能な万能型フレームワークです。
Tornado
拡張性が高いWebフレームワークです。Tornado単体でWebサーバとして使用することもできます。
CherryPY
オブジェクト指向のWebアプリケーションフレームワークです。
Pyramid
非常に洗礼された設計がされていて、大規模開発に向いているフレームワークです。
Plone
Webコンテンツ管理が得意なCMS(コンテンツ管理システム)機能を備えたフレームワークです。
勉強のしやすさ
プログラミング初心者からの学習しやすさ
Javaは、システム開発で非常に応用がきく言語です。汎用性が高いと言い換えることができます。プログラミングをしっかりと身につけたい人におすすめですが、初心者にとっては覚えることが多く、学習するのに比較的難易度が高いという点が挙げられます。
一方、Pythonは読みやすい・書きやすい点が特徴で学習コストが比較的低く、初心者でもわかりやすいため、学びやすい言語の1つです。
他言語からの学習しやすさ
Javaと同じような言語形式を持っているのは、C、C♯、C++などのC系と呼ばれるプログラミング言語だといわれています。Javaは、C++のバグを生みやすい仕様を削除し、代わりにガーベジコレクションなどの新しい機能を取り入れた言語として設計されています。
そのため、C系言語からはJava学習が比較的しやすいでしょう。また、Pythonはその場で書き換えがしやすいスクリプト言語という種類に分類されます。スクリプト言語には、Pythonの他にJavaScript・Perl・Ruby・PHPなどがあります。
細かい文法上の違いはありますが、Pythonを学習した後でも取り掛かりやすい言語の種類だといえます。
公式ドキュメントの比較
Java、Pythonどちらも公式ドキュメント(日本語)が公開されています。Java公式ドキュメントではツールや仕様、コア・ライブラリ、セキュリティ、管理とトラブルシューティングなどの章立てで細かく分かれています。
Python公式ドキュメントもチュートリアル、ライブラリーリファレンス、FAQなどのカテゴリに分かれ、豊富な情報を盛り込んでいます。
どちらも学習の参考になりますが、Pythonの公式ドキュメントの方が比較的体系的にまとまっていて、使いやすくなっています。
無料教材の比較
汎用性が高く日本でも人気のあるJavaは、無料で学べる学習サイトや書籍が豊富にあります。様々なものがたくさんあって、どう学べば良いのか迷ったりするくらいです。その質も玉石混合で、より学びやすい、知識やスキルが身に付きやすい教材を探すのにも一苦労だといえます。
以下の記事では、Java初心者に絶対おすすめな学習方法や教材を、サイトや本などジャンル別に紹介しています。効率よく効果的に学習したい方の参考としておすすめです。
一方、Pythonにも学習サイトや書籍はありますが、Javaに比べるとその数は少ないのが現状です。そんな中から、効率的に学習できる教材を見つけるのも難しいこともあります。
以下の記事では、Pythonの練習を超効率的にしてくれる無料の学習サイトを紹介しています。
また、他の言語を含めてプログラミングの勉強により役立つおすすめのサイトもあります。以下の記事で詳しく紹介しています。ぜひ一度確認してみてください。
仕事の獲得しやすさ
Javaは世界的に見ても非常に人気の高いプログラミング言語の1つです。幅広く活用できるJavaの国内での求人は多岐にわたり、その数は他の言語と比べて圧倒的に多いのが特徴です。また、システム保守の現場でも需要が高く、多くの仕事があります。
一方、Pythonは近年注目を集めているとはいえ、Javaに比べると国内での案件数はまだ少ないというのが現状です。仕事獲得で悩んでいる方がもしいらっしゃいましたら、以下の記事を読んで参考にしてみてくださいね!就職や転職を考えている場合でも参考になるヒントを詰め込みました!
JavaとPythonの現在の需要と向いている人
日本ではJava、海外ではPythonの需要が高い
現在の需要の話でいうと、今のところJavaの方が国内では圧倒的に案件数が多いです。
一方、Pythonは米国の一流大学で言語学習の導入段階において最も学ばれています。そのため、海外(特にアメリカなど)で仕事をする場合に重宝されます。英語が強く海外にも通じる人にとっては汎用性が高い言語だといえるでしょう。
AIとIoTの影響でPythonが大注目されている
最近、日本でもPythonが注目され始めています。その理由とは、新しい技術動向として、ビッグデータやIoT(モノのインターネット)、AI(機械学習)などの分野での需要が高まっているからです。
特に数学・統計処理に強いPythonは、データ分析・解析処理に向いているため、今後さらに普及が進むといわれています。
英語が得意な人はPython、英語が苦手な人はJava
ここまででJava、Pythonの特徴や違いが分かってきたと思いますが、実際どちらを選べばよいのでしょうか。日本でも開発案件が多いJavaは、日本語の情報も豊富にあります。そのため、今後も継続的なスキルアップが可能だといえます。
Pythonは、まだ国内の案件数は少ないですが今後増えていく可能性があります。すでに海外では大人気で、仕事の案件数も多くなっています。
ただ、公式ドキュメントを離れると、日本語の情報が少ないため、英語のチュートリアルなどを読むスキルも求められます。
システム系に進むならJava、学術分野に進むならPython
どの言語を学ぶかは、やはり何を開発するのかで決まってきます。汎用性が高いJavaは、大型の業務システムを作る際に採用されることが多いしっかりした言語です。システム系を開発したいなら、Javaを学習した方がよいでしょう。
一方、数学や統計解析に強いPythonは、コンピュータサイエンスやデータ解析、生物情報学などの学術系の分野で使用するのに適しているといえます。
まとめ
今回は、JavaとPythonの特徴などを比較してみました。Javaには、
- 世界的に人気があって、国内で多くの仕事がある
- 大規模なシステムを開発する際に使用できる
- 日本語のドキュメントが豊富
といった特徴があります。
Pythonには、
- 文法がシンプルで初心者でも取り組みやすい
- AIやIoTなどこれから時代に需要が伸びる
- 海外での人気が高く、学術系にも強い
などの特徴がありました。
どちらを選んでも損はありません。これからプログラマーとして活躍する際の土台となるでしょう。