どーもー、現在某IT系の会社でjavaエンジニアとして働ている者です。(当ブログの管理人です)
今回も、javaについて、記事を書いていきます。
当記事に辿りついた方で、javaを「プログラミング言語の一つ」として理解している方は多いと思いますが、じゃ、具体的に、
「逆に、できないことは何か?」
「javaのメリット・デメリットは・・・?」
これらについて、正確に理解している方は、少ないかと思います。
というわけで、今回はこれらについて、順に解説していこうと思います。
ちなみに、プログラミング言語は世界中に数多くのものが存在していますが、その中でも、昔から高い人気を持ち、毎年、必ずTOP3に入っているのが「java」になります。
参考:JetBrains公式HP:プログラミング言語のランキング 2020年度版
上図は、JetBrains社が調査した「開発者が利用・採用しているプログラミング言語のランキング」の2020年度の結果で、javaは第2位となっています。
さらに、求人数も非常に多く、以下、ITエンジニアに特化した求人サイトのレバテックのレポートでは、「プログラミング言語別求人案件数(2019年度)」で、断トツの1位となっています。
参考:レバテック公式:プログラミング言語別求人案件ランキング(2020年度版)
このように、非常に高い人気と、多くの求人数を誇るJavaですが、これらの理由についても、当記事を読み進めていけば理解できると思うので、よろしくお願いします。
では、以下目次となります。
- Javaでできることや作れるもの ~用途事例のまとめ
- Javaプログラム言語で、できないこと
- java言語を学習するメリット ~初心者向けの解説
- デメリットについても解説
プログラミング言語:Javaでできることや作れるもの ~用途事例5選まとめ
ではまず、javaプログラミングでできること(作れるもの)について。
どのようなシステムやサービス、アプリで利用されているのか。身近な用途や事例を元に、以下にまとめていきたいと思います。
1、Webアプリ・Webサイト ~Javaでできること
javaは、多くの大手IT企業にて採用されているプログラミング言語で、
GoogleやAmazonをはじめ、Twitter、ebay、楽天、Yahoo、Github、Lineなど、世界的に有名な企業でも採用されています。
これは、javaの特性上、大規模なシステムに最適なプログラミング言語であり、それが重要な理由の一つとなっているからです。
例えば、多くのアクセスが集中するツイッター社が、2012年頃に、システムをRubyからJavaへ移行した話は、有名なエピソードの一つとなります。
参考:InfoQ:RubyからJavaへのシフトで大統領選を乗り切った、Twitter社
また、上記のように大規模なサービス・システムでなくても、一般的なWebサイトの、サーバー側(バックエンド)のプログラムも、javaが採用されていることは多いです。
2、PCアプリ ~javaで作れるもの
PCにダウンロード&インストールして動作させるアプリにもjavaは多数利用されています。
例えば、インターネットブラウザーとして有名なFirefoxや、ワードやエクセルなどのドキュメントを編集できるOpenOffice
あとは、開発環境として有名なEclipseも、Javaで開発されています。
この他にも、様々なPCアプリケーションが、javaで作成されています。
3、スマホアプリ(Androidアプリ) ~javaの利用例
Androidの開発に用いられるプログラミング言語は、大きく2択となります。(iPhoneは、また別です)
・Java or Kotlin
Androidのスマホが世に出てから、2010年代の後半までは、Java一択でしたが、
2017年にGoogleが、KotlinをAndroidアプリの開発言語として推奨したことをキッカケに、近年では、Kotlinの採用が増えているようです。
とはいえ、これまでにJavaで開発されてきたアプリは数多く、それらの保守の観点からも需要は続くでしょうし、
今後も、一般的な人気言語としてJavaが採用されることも多いでしょう。
Kotlinについては、言語が公開されたのが、2011年ということで、まだまだ新しいモダンなプログラミング言語になりますが、Kotlinは、Javaを元にして作られています。
実行する際も、Javaを実行する際の仮想マシンと同じものでないと動作しません。つまり、Javaと100%の互換性がある。ということになります。
GoogleがAndroidアプリ開発用に提供している「Android Studio(開発ツール)」では、JavaのソースコードをKotlinに変換することも可能となっているようです。
4、企業の業務システム(基幹システム) ~javaの利用用途
多くの企業の業務システムに採用されているというのも、Javaの特徴の一つです。
例えば、金融系の取引・決済システムであったり、配送会社の配送システム、航空会社のチケット予約システム等々、多くの業務システムにjavaが採用されています。
もともと、銀行など金融系のシステムでは、「COBOL」というプログラミング言語が主流でしたが、保守コストの高さやCOBOLエンジニアの減少に伴い、現在ではjavaが主流となっています。
日本銀行や、メガバンクの三菱UFJ・三井住友銀行でも、2000年代の頃から、javaによるシステム刷新が始められています。
2000年代の前半、三菱UFJ銀行と、三井住友銀行は、共同で口座振替システムを開発。その際に、プログラミング言語として採用されたのがjavaとなります。(cobolからjavaへの変更)
ちなみに当時、両行の口座振替システムは、それぞれで1日当たり最大1000万件を超える大量データを一括処理するような規模のシステムとのこと。
ここまで大規模な勘定系システムにおいて、システムの中心となっているプログラミング言語を刷新することは、世界にも類を見ない大きなプロジェクトとして、業界ではかなり話題になったそうです。
さらに、世界50億枚以上のクレジットカードが、Javaによる決済処理を採用しているとのこと。
このように、金融系のシステムとjavaは非常に相性が良く、それは以下、JetBrains社が調査した統計結果からも知ることができます。
「Javaが利用されている業界ランキング」
参考:IntelliJ IDEA Blog:数字で見る、2020年におけるJavaの現状
これらは、高いパフォーマンスと安全性を必要とする金融系システムの開発ニーズが、「java」の特性とマッチしていることを表しています。
5、その他 ~javaでできること
-
「ゲーム」
あまり一般的には認識されてませんが、Javaはゲーム開発にも利用されており、代表的なものだと「Minecraft」は、Javaで開発されているようです。
-
「組み込みシステム」
こちらも、あまり一般的ではないですが、ブルーレイ・プレーヤーや、カー・ナビゲーションの他、家電の組み込みシステムにも、Javaが採用されています。
以上、javaでできることとして、用途事例とともにまとめてきました。
Javaプログラム言語で出来ないこと ~初心者向けのまとめ
続いて、逆にjavaでは出来ないことについて、以下にまとめてみました。
-
「iPhoneの開発」
iPhone(iOS)アプリの開発には、基本的に以下の2つが使われます。
Objective-C : C言語をベースにオブジェクト指向機能を持たせた、C言語の上位互換言語となります。Swift : Apple社が開発したプログラミング言語で、iOSアプリだけでなく、MacやAppleWatch上で動作するアプリケーション、あとは、Webアプリの開発も可能です。
iosアプリ用の開発言語として、旧来は「Objective-C」がスタンダードでしたが、2014年にApple社から「Swift」が公開されてからは、こちらの方が主流となっています。
専門的な話になりますが、厳密には、javaの実行環境である「JVM」が、ios上で動作させることができれば、javaアプリケーションもiPhone上で動作します。ただし、仮に動作しても、AppStore で公開することは出来ません。
AppStoreのガイドラインでは、JavaScript以外はネイティブコード(OS上で動作可能なプログラム)しか認められていないようです。
※javaはOS上ではなく、jvm上で動作するプログラムとなるので、ネイティブコードではありません。。
(JVMや、javaが動作する仕組みについては、以下を参考にしてください)
-
「厳密なメモリ管理」
こちらも、専門的な話になるので、初心者の方は飛ばしても良い内容にはなりますが、
javaと並ぶ、代表的なプログラミング言語として昔から存在する、「C言語」は、ハードウェア(CPU)寄りの言語として有名です。
そして、その特徴の一つに、厳密な「メモリ管理」が挙げられます。
C言語では、「ポインタ」という仕組みを用いて、メモリの割り当てと解放を(プログラム上にて明示的に)設定することができます。
逆に、javaの場合は、メモリの管理(割り当てと解放)については、自動でおこなわれるため(ガベージコレクション機能)、開発者の方で(プログラム上にて明示的に)設定することはできません。
なので、開発する際に、メモリの事を意識しなくて良くなるので、開発効率の観点では、Javaの方がメリットとなりますが、逆に、厳密にメモリ管理をおこないたい場合には、Javaではなく、C言語などを選ぶ事となります。
(javaと、C言語の違いとして、重要なポイントの一つとなるので、参考までに。)
以上、Javaプログラム言語で出来ないことのまとめでした。
java言語を学習するメリット:5選 ~初心者向けの解説
続いて、javaのメリットについて、以下にまとめていきたいと思います。
-
「ハードウェアに依存しない」
こちら、Javaの最大の特徴・メリットとなるポイントで、Javaで書いたプログラムは、どのハードウェア上でも同じように動作させることが可能です。
Javaは、Javaで書かれたプログラムを、専用の仮想マシン(JVMというソフトウェア)上で動作させることで、どのハードウェア上でも、プログラムの変更を必要とせずに同じ挙動を実現できるわけです。
要は、「JVM」をインストールさえすれば、Windowsでも、Macでも、Androidでも、同じように動作させることができるわけですね。
このように、一度プログラムを作成すれば、どこでも実行できることを、「write once, run anywhere(一度書けば、どこでも実行できる)」と呼び、Javaの最も重要な特徴となっています。
-
「オブジェクト指向言語である」
プログラミング言語は、大きく「手続き型言語」と「オブジェクト指向言語」に切り分けることができますが、
Javaは、代表的なオブジェクト指向言語の一つです。
「オブジェクト指向」については、専門的な話になるので、初心者の方は、今後プログラミングをしていく過程の中で、理解していけば良い内容となります。
(Javaのプログラミングを学んでいけば、嫌でも通る道となります。)
-
「実行速度が速くパフォーマンスが高い」
上述で記載してきた通り、Javaは、大規模なシステムや、膨大なアクセスを捌くようなシステムに向いているプログラミング言語です。
理由は、「コンパイル言語」であることや、「静的型付け言語」であること等、色々とありますが、専門的な話になるので、ここでは、「実行速度が速くパフォーマンスが高いプログラミング言語」として、覚えておけば良いです。
-
「javaに関する書籍やネット上のページ等、ソースが多い」
冒頭で書いた通り、Javaは、多数あるプログラム言語の中でも、非常に人気のある言語で、その分、書籍やWebページなどのソースも非常に多いです。
なので、勉強過程や開発過程にて、何かしら困ったことがあったとしても、ネット上を探せば、まず間違いなく解決方法が見つかるでしょう。
(よっぽど専門的な内容だったり、情報が少ない最新技術に関するもの等でなければ。。。あとは、情報の探し方(ググり方)も、大事になってきますが。)
というわけで、javaは情報が多い分、一から勉強していくことには向いている言語です。
-
「求人数が多い」
「プログラミング言語別求人案件数(2019年度)」
こちらは、冒頭でも紹介していますが、求人サイト:レバテックのレポートでは、上図の通り、断トツの1位となっています。
またこれらは、ここ最近の話ではなく、2000年代の頃からずっと長い間にかけて人気の高さは維持しており、それに比例して求人(仕事)数も増え続けています。
今後についても安定した需要が続くでしょう。
このように、求人数の多さからも、Javaを学んでいくことは、賢い選択と言っても良いと思います。
以上、java言語を学習するメリットのまとめでした。
以下の記事でも、javaのメリットについて詳細にまとめているので、良かったら参考にしてください。
→ Javaとは?プログラミング言語の特徴や歴史、人気な3つの理由をわかりやすく解説!
最後に ~java言語を学習するデメリットについても解説します
続いて、逆にjavaのデメリットについて。
-
「学習コストが高い」
Javaは、他のプログラミング言語よりも、プログラミングをする上でのルールや制約が多いです。(「静的型付け言語」であることも、その一つです。)
なので、その分覚えることが多く、他の言語と比較したら、習得する際の難易度は高い方になるでしょう。(特に、初心者の方は。)
上述で書いている、Javaの代表的な特徴である「オブジェクト指向」。
これについても、オブジェクト指向に関連する機能や文法が、Javaには多数あるので、それらを理解するのにも時間が掛かってしまいます。
また、プログラムの記述内容が、どうしても冗長になってしまうのも、Javaの特徴です。
例えば、「他の言語だと、1行で書けるのに、Javaだと、4行は書かないといけない」とか、、
-
「実行環境の準備や、実行させるまでが面倒。。。」
Javaの特徴として、大規模なシステム開発には向いているのですが、逆に、小規模なシステム開発(特にWebシステム)には、あまり向いていません。。
例えば、「簡単なWebサイトを作りたい。」とかであれば、PHPやRUBYの方が、手軽に作成できます。
Javaだと、「Webサイトを公開する」ってだけでも、「コンパイル&ビルド作業」や「パッケージング作業」が必要になるのですが、
PHPやRUBYであれば、これらの作業は必要ありません。
このように、Javaは、「簡単なWebサイトを作りたいだけ」といった、小規模なシステム開発には、向いていません。。
以上、Javaの2つのデメリットまとめでした。
というわけで、当記事では、Java言語でできることや、プログラミング学習対象としてのメリット・デメリットについて記載してきました。
ここまで読んで頂いた方は、「java」について、だいぶイメージ出来てきたかと思います。
今後、javaプログラミングを学んでいく上でのキッカケや良い参考になれれば幸いです。
では。
※プログラミング学習のスタートとして、以下にjavaのダウンロード&インストールから、プログラムが動作するまでの基本的な流れについてまとめているので、良かったらこちらもぜひ参考にしてください。