Java言語って何?どんなことができる?オブジェクト指向とは?

Java言語って何?Java言語ってどんなことができるの?Java言語やってみたけどオブジェクト指向って結局なに?
こういった疑問に対してお答えしていきます
- Java言語って何?
- Java言語の特徴
- 動作環境を選ばない
- CやC++のプログラミングスタイルに類似
- オブジェクト指向言語
- Java言語でどんなことができる?
Java言語って何?
Java言語はC言語やC++言語の流れをくむオブジェクト指向型の高水準なプログラミング言語です

プログラミング言語には「マシン(機械)語」 「アセンブリ語」 「高水準言語」 があります
Java言語は「高水準言語」に分類されます
・マシン語(機械語)とは0と1で構成された言語で、コンピュータが理解する(操作するための)命令
・アセンブリ言語とは機械語の命令を文字に直したものです
例えば、アセンブリ言語のメモリにデータを格納するといった命令1つ機械後の命令は一対一で対応しています
・高水準言語とは人間の使用する言語に近い言語で構成された言語で
例えば、文字列を出力するにはアセンブリ言語では文字列をメモリから取り出して出力し、また格納といった複数のことをしなければいけませんが
高水準言語はアセンブリ言語やマシン語の複数の処理を少ない文字(関数等)で表現できます
高水準言語はJava言語の他にC、C++、Python、JavaScriptなどたくさんあります
Java言語の特徴
特徴として
- 動作環境を選ばない
- CやC++のプログラミングスタイルに類似
- オブジェクト指向型言語
動作環境を選ばない
Java言語でシステムを開発するシステムはJavaの仮想マシン(JVM)を用いるためプラットフォームに依存しない
超簡単に言うと
Java言語で開発されたシステムは 実行環境をインストールさえできれば、
独自の実行環境を用いて動作するためどこでも開発できる!
ということです
高水準言語で記述したコード(プログラム)は基本的にコンパイルと呼ばれる
コンピュータさんが理解できるように機械語に翻訳する必要があります
この作業をしているのが主にCPU(中央処理装置)と呼ばれるもので

intel 入ってるのCMでおなじみな core i7 i5 i3 ,celeronなどが有名なコンピュータの脳です
しかし、CPUでやってしまうとintel社と他の会社のCPUで処理の順番が異なるため実行ができない場合や独自開発している家電などでは実行することができません
そのため、CPUではなく別で実行環境を用意したのが
Java言語用の実行環境、Java仮想マシン(Java Virtual Machine)です
このマシンは
マシン(プログラム)の中で扱いやすいようにバイトコードと呼ばれる中間言語にコンパイル(翻訳作業)をして
ソースファイルを解釈しながらプログラムを実行(インタープリタ型)します
そのため、Java言語での開発は開発環境に依存しないというわけです
CやC++のプログラミングスタイルに類似
昔から使われ続けているという実績のあるC言語およびC++言語の構文を引き継いでいる
C言語やC++言語というプログラミング言語の
if文、for文、while文などの制御文などほぼ同じような構文となっています
それは、C言語やC++言語などのように可読性が高くプラットフォームに依存しないなどの設計思想を踏襲して開発された言語のためです
そのため、C言語でできること+α ができるJava言語は
C言語やC++言語を前からやってきた人にはとても理解しやすく、支持されていると思います
オブジェクト指向型言語
Java言語はオブジェクト指向プログラミングの思想に基づいて設計された言語
オブジェクト指向とは何なのか?各言葉の意味を調べると
オブジェクトとは「モノ」
指向とは 「特定の方向を目指して向かうこと」
と定義されています
プログラミングでいう「モノ」とは何なのでしょうか?
超簡単にいうと
プログラミングでいう「モノ」とは 処理などの手続きの対象となるもの
ここで無理やり簡単にまとめると
オブジェクト指向とは命令や操作ができるものを中心に考えること
「命令や操作ができるもの」 って抽象的だなと思った方いると思います
そうなのです
この「モノ」とは操作の対象として扱えるいろいろな概念なため、
定義しにくいのです
具体的に説明していきます

例えば、スーパーヒーローを主役とした映画を考えます
あなたはアシスタントとして、キャラクターの設定を決めてほしいと監督にいわれました
あなたは8時間悩みに悩んで、ヒーローの基本設定を決めました
名前はアトム
強さは100万馬力
身長は135㎝
体重は30kgなどと決めたとします

次に魔王などの悪役、ヒーローの友達、ヒロインなどなどいろいろなキャラクターを決めなくてはいけません
また、一人ひとり8時間かけてキャラクターの設定を考えるでしょうか?
違いますよね
名前 強さ 身長 体重 これらを当てはめるように考えていきますよね?
これらは何かというと「概念」です
この一度作った操作ができる「概念」をベースに考えていきますよね
ここで、オブジェクト指向について再定義すると
オブジェクト指向とは命令や操作ができる「概念」を中心に考えること
です
とても似ていますよね?
つまり、オブジェクト指向とは私たちがやっている 「概念」をベースに考えることとほぼ同じなのです
ということは
オブジェクト指向で開発ができるということは、人間がやりたいような開発がやりやすいということです
これがJava言語の特徴の一つであり、大きなメリットでもあります
Java言語でどんなことができる?

Java言語ができることは
- 家電製品の組込みシステム
- スマートフォン
- アプリ
- サーバー
- スーパーコンピュータ
- Web系システム
- 機械学習による推定や解析
といったGoogle Playでよく見るアプリなどの小さいものから
スーパーコンピュータなどの大きいものまでつくることができてしまいます
なぜ様々なシステム開発に使われているか考える&最後にまとめとして
Java言語は
- 独自の実行環境(Java仮想マシン)があればどこでも動けるのでとても汎用性がある
- 長年使われてきているC言語やC++言語と同じようなプログラミングのスタイルなため、C言語やC++言語をやってきた人は理解しやすい
- 開発や保守がオブジェクト指向によってやりやすくなるため、とても大きなシステムでも作りやすい
言語です
いかがでしたでしょうか?皆さんの理解が深まりましたら幸いです
Java言語による最近トレンドな機械学習プログラミングについて興味のある方は↓から
え?そもそも機械学習ってなに?AIってなに?と思った方は↓で超簡単に説明しました