はじめに
Javaの案件に参加することになったため、
Javaを理解するために概要を調査しました。
ゆくゆくは環境構築するようことを目標にします。
記載内容に間違いがあればご指摘ください。
Javaについて調査
下記に基本的な内容をまとめます。
Javaの概要
Oracle公式サイト
参考サイト
主にOracleが提供するオブジェクト指向の言語です。
日本では業務システムによく使われていることは知っていましたが、
Web系システムやAndroidアプリにも使われているようです。
Java SEとJava EEやJava ME
Java SEとは
https://www.sejuku.net/blog/12902
Java SEとは、Java Platform, Standard Edition の略。
Javaの基本機能をまとめたもの。
さらに拡張したものにはJava EE(Java Enterprise Edition)などがある。
JVMとは
https://www.javadrive.jp/start/install/index5.html
JVMとは、Java Virtual Machine の略。
Javaアプリケーションを動かすための仮想マシンであり、Java仮想マシンとも呼ばれる。
OSによって専用のJVMをインストールする必要あり。
JREとは
https://www.javadrive.jp/start/install/index5.html
JREとは、Java Runtime Environmentの略。
Java のプログラムを実行するためのセットとなっている。
JREの中にJVMやJavaSEなどがセットになっている。
Java SEのバージョンに合わせて、JREのバージョンがつけられている。
JDKとは
https://www.javadrive.jp/start/install/index5.html
JDKとは、Java Development Kitの略。
JREやJVMなどが含まれるJava開発環境。コンパイルやでバックも可能。
こちらもJava SEのバージョンに合わせて、JDKのバージョンがつけられている。
OracleJDKやAdoptOpenJDKなど複数種ある。
JDKをインストールすれば、Javaの開発環境が作れる見込み。
Javaのフレームワークについて
Spring Framework、Play Framework、Apache Strutsなど多数存在するようですが、
今回はSpring Frameworkのみ記載します。
Spring Frameworkとは
https://camp.trainocate.co.jp/magazine/spring-framework/
https://camp.trainocate.co.jp/magazine/whats-aop-programming/
DI(Dependency Injection)とAOP(Aspect Oriented Programming)に優れたアプリケーションフレームワーク。
DIとは「依存性の注入」と呼ばれ、クラス同士が疎結合(独立)して保守性や再利用性に優れる。
AOPとは「アスペクト指向プログラミング」と呼ばれ、共通処理を入れ込むことができる仕組みです。
(AOPについてはあまり理解できませんでした。。。)
Spring Boot
Webアプリケーションに特化したSpringというイメージ。
Spring Frameworkは環境設定が複雑でああるが、Spring Bootはそれらを簡略化したフレームワーク。
Javaの問題点
調査中に面白いと思った問題点がありました。下記に記載します。
参照型変数のNull
https://atmarkit.itmedia.co.jp/ait/articles/1803/15/news012.html
参照型変数(=オブジェクト型)に対してNullが入っているエラーになる様子。
参照型変数はオブジェクトのアドレスを指しているため、C言語のポインタに近い概念のようです。
ライセンス問題
どのバージョンがいくらかかるのか?が分かりにくいです。
OracleJDKやAdoptOpenJDKなど使用するものによって料金外形が変わってくる。
基本的に個人利用は無料のようです。
まとめ
JavaはPythonやPHPに比べて覚える専門用語が多く、ハードルが高い言語と感じました。
しかし、専門用語の意味するところは難しくないため、覚えてしまえば使いこなせそうです。
また、文法などに細かい制約が多く扱いにくい面があり、開発時は注意する必要がありそうです。