プログラマ、エンジニアを目指している方の中で、どんな言語がいいのか?
という悩みをもっている方に向けて、Javaに向いている人と向いていない人という観点でお話しします。
Javaができること
Javaは基本的になんでもできます。
できることを上げると以下のことができます。
- Webサービス開発
- PC向けアプリ開発
- Androidアプリ開発
- 基幹システム開発
- 組み込みシステム開発
- IoT開発
うん、ほぼすべてのことができます。
なのでJavaは汎用的な言語と言われている所以(ゆえん)です。
色々と挑戦してみたいなぁ
と思っているのであれば、Java向きと言えます。
これがやりたい!
と決まったものがあり、Javaよりも向いた言語があるというのであればJava向きではありません。
Javaができないこと
基本的にはないと思って頂いてよいです。
機械学習はできないと言われていますが、そんなこともありません。
2020年9月15日、Oracle社がJavaによる機械学習ライブラリ「Tribuo」をオープンソースで公開しています。
また、機械学習のフレームワークとして有名なTensorFlowもJavaに対応していますし、Deeplearning4jはJavaで開発されています。
そう、Javaでできないことはないと言っても過言ではないのが現状です。
とは言っても機械学習関連はPythonの方が優位なところはありますので、あとは好みでわかれるとことかなと思います。
機械学習だけにこだわらず、広く技術を追求したい方はJava向き。
機械学習・Ai関連だけに特化したスキルとキャリアを磨きたい方はJavaには不向きという感じでしょうか。
Javaが得意なこと
①Javaは静的型付け言語
これは必ず型を宣言する言語のことです。
Java8以降は随分と使いやすくなっており、Java5以前よりは柔軟に宣言できる仕組み(ジェネリクス型)がありますので、Javaは使いにくいというイメージは過去のものになりつつあると個人的には思っています。
静的型付け言語の反対で動的型付け言語と呼ばれるものがあります。
代表的なものだと、PHP、Ruby、Pythonが挙げられます。
動的型付け言語は型の宣言は不要ですが、どんな型の値が入っているかわからないことで予期しない処理結果になることがあります。
Javaはその点では予期しない値が入ることが少なく、一般的には安全に運用可能な言語です。
②並列処理
Javaは並列処理もできますので、処理速度を求められるアプリケーションにも有用です。
並列処理の実装は難しいとされていますが、研究心や探求心のある方にとっては魅力的な技術ですし、使いこなせると重宝されます。
③ガベージコレクション
使用しなくなったメモリを自動的ン解放してくれる仕組みです。
Java以前の言語であるCではメモリ解放は実装に含めるものでしたが、Javaではこれを自動で行ってくれる仕組みとしてガベージコレクションができました。
とはいえ、ガベージコレクションでメモリ解放を完全にコントロールすることはできませんが、メモリ解放といった次元の実装を意識しなくていいのはプログラマにとっては有難いものです。
Javaは静的型付けでかっちり実装しますので、型があるから安全だと思う人に向いています。
型付けって面倒だし動けばいいし、そんな凝ったものは作らないという人には向いていません。
Javaが不得意なこと
手軽なツール作成という分野は不得意かなと思います。
そういった分野がVBAやJavaScriptが得意な分野です。
ただ私の場合はJavaでフォーム自動入力ツールを作ったりして、ちょっとした作業を効率化しています。
同じものを作るとなるとPythonとかの方が情報もあるので簡単に作れるとは思います
なので、不得意だけど作ることは可能です。
ちょっとしたツールはJavaでなくてもいいので、知見を広げるために別の言語を使ってみるためにPythonやJavaScriptを触ってみればいいと思います。
それでもJavaで作ってみたいという、Java好きな方は向いています。
好きこそ物の上手なれです。
いや、効率重視でいきますという方は言語にこだわらない思考をお持ちなのでJavaでなくても大丈夫でしょう。
Javaに向いている方
・Javaは技術の適用範囲が広いので、色々と挑戦してみたい方
・広く技術を追求しつつ、機械学習にも関わりたい方
・静的型付け言語であることが安全だと思う方
・そもそもJavaが(何となくでも)好きな方
Javaに向いていない方
・やりたいことが決まっており、Javaよりも向いた言語が他にある場合
・機械学習・Ai関連だけに特化したスキルとキャリアを磨きたい方
・型付けが面倒、動けばよい、凝ったものは作らないという方
・効率重視で言語にこだわらない思考をお持ちの方
まとめ
Javaに向いている方と向いていない方を整理してみました。
Javaはどんな分野にも適用できるのと案件も最も多い言語であることから、エンジニアのキャリアを長い視点でとらえている方はJavaに向いているとも言えます。
ただ、今後のIT業界で1つの言語だけで食べていくというのは非現実的です。
複数の言語を使えて当然で、なおかつ上流や下流も含めて経験しているなどのキャリアの豊富さも武器になります。
Javaは仕事が多いという点で経験を積みやすいので、エンジニアを真剣に考えているのであれば第1言語とすることをお奨めします。
学習プラン
Javaを学習したい方はチュートリアルを順に学んでみて下さい。