見出し画像

【絶対に挫折しないJava超入門】これ以上簡単に教えるのは無理①【サポート付き】


どうも、エンジニアの陽翔です。

SNS界隈を見てると「Java=難しい」と感じてる人が多そうですね。オブジェクト指向言語であるJavaは確かに取っ付き難いですが、Javaは誰でも習得可能なプログラミング言語です。


このnoteではJavaに挫折した人や、Now挫折しかけている人 、これからJavaの勉強を始めたいという人に向けて「これ以上簡単に教えるのは無理!!」と言える内容を目指して執筆しています。


✓想定読者
・Javaの習得を目指すも挫折した事がある人
・今まさにJavaを挫折しかけている人
・これからJavaの勉強を始める人
・別にJavaに拘ってないけどプログラミングを簡単に始めてみたい人
✓必要なもの
・Windows 10のPC
・インターネット環境


このnoteを執筆した理由

世の中にはJavaの入門書は無数に存在しています。良書も沢山あります。しかしそれでも挫折する人が後を絶たないのは、書籍というモノの性質上、何かにつまずいた場合、読んでる人が自己解決するしか方法がないから、だと思うのです。

少し上からの言い方にはなりますが、その"つまずき"というのは経験者からしてみれば些細な事。ちょっとしたアドバイスで、その先に進める事がほとんどです。

私はTwitterでキャリア相談をお受けしていて、この1年で50名以上の方にアドバイスする機会があったのですが、テクニカルな事でも同じようにアドバイスできれば、このつまずきを解決できるのでは?と思い至ったんです。


このnoteはTwitterと併用する事で「つまずいてもちょっとしたアドバイスを受けられる入門書」という位置づけを目指しています。


このnoteの内容で「上手く進める事ができない」、「どうしても理解する事ができない」という場合、ツイッターのDMから問い合わせください。私のキャパの関係でTwitterのフォロワーさん限定にはなりますが、サポートさせて頂きます。(何かを保証するものでは無い点はご理解くださいませ)


このnoteの学習の進め方

このツイートをご覧ください。


Javaを挫折する人の多くは、最初からオブジェクト指向の細かい仕様を理解しようとして、そこで苦しんでいると感じます。私もそうでした。

オブジェクト指向は概念が難しい上に、入門書でも最初に細かい事がたくさん書いてあって、なかなかページが進まないんですよ。最初の10ページくらいを何度も行ったり来たりする中で、「ああ、Javaは難しいかもな・・・」って、思い始めてしまいます。


先ほどのツイートで言ったように、このnoteでは難しい事や理屈は後回しにして、まずはJavaのWebアプリケーションを動かします。その為にバリバリと手を動かしてもらいます。


繰り返しですが、このnoteでは

①動くものをつくりしみじみ感を得る

②理屈の理解

という順番で説明していきます。


プログラムが動き始めると俄然楽しくなります。そして、実際に動く環境やソースコードがあるのとないのとでは、理屈の理解度は飛躍的に向上します。


このnoteは「第1回」という位置づけで、今後「第2回」「第3回」と執筆するつもりです。第1回である今回はJavaのWebアプリケーションを動かす為の最低限の準備と、プログラミング習得の最初の一歩「Hello World」までをやっていきます。


このnoteの手順どおりに手を動かせば、あなたのPC上でJavaのWebアプリケーションを動かせるという事です。細かな事は最低限しか触れていないので、きっと「Javaにしては随分簡単だな」って感じると思います。それが狙いです。

オブジェクト指向の難しい部分、面倒な部分はまずは基礎が理解できたところで積み上げていけば良いですから。


では、早速はじめていきましょう。


1.準備作業

まずは、JavaでWebアプリケーションを動かす為の準備作業をやってきます。冒頭でも説明した通りこのnoteではまずは手を動かしてもらいます。理屈や説明はモノが動いてからしていきます。じゃんじゃん行きますよ。最初は理解できなくて良いですからね。


1-1.JDKのインストール

Javaを動かすにはJVM(Java Virtual Machineの略)と呼ばれる実行環境が必要なのはご存知ですかね?あ、現時点で知らなくても全く問題ないです。

今からあなたのPCでJavaのWebアプリを動かす上で必要なモノなので、まずインストールしましょうという事です。詳しくは分からなくてでOKですが、今回はJVMやJavaの開発ツールをひとまとめにしたJDK(Java SE Development Kitの略)というものをインストールします。


①Oracle社のサイトへアクセス

JDKにはOracle社製、IBM社製、オープンソースのOpenJDKなどいくつか種類がありますが、今回はOracle社のJDKを使います。無料で使えます。

https://www.oracle.com/java/technologies/javase-downloads.html


②JKDをダウンロード

2020年7月時点で最新である Java SE 14のJDKをダウンロードします。

画像3

画像2

画像18


画像3

「jdk-14.0.1_windows-x64_bin.exe」というファイルがダウンロードできればOKです。


③JDKのインストール

画像4

「次(N) >」をクリック。


画像5

「変更...」をクリック。


画像6

「フォルダ名:」にJDKをインストールするフォルダを指定。今回は上記の通りで行きましょう。そして「OK」をクリック。

画像7

「インストール先:」が指定の通りのフォルダになっている事を確認して、「次(N) >」をクリック。


画像8

しばしお待ちを。


画像9

ここ画面がでればJDKのインストールは成功です。「閉じる(C)」をクリックして閉じましょう。


1-2.JDKの環境変を設定

環境変数にJDKのパスを登録します。ここでも難しい事は考えなくて良いです。この手順のまま実施してください。


①環境変数の編集画面を表示

画像13

Windows 10のデスクトップの左下の「検索するには、ここに入力します」に「環境変数」と入力。


画像10

すると検索結果に「環境変数を編集」が表示されるのでクリック。


②環境変数を設定

画像11

環境変数画面が表示されるので、上のセクションの「新規(N)…」をクリック。


画像12

変数名(N)に「JAVA_HOME」、変更値(V)に「C:\Java」と入力してOKをクリック。


画像14

「JAVA_HOME」という変数が追加されていればOK。続いて「Path」という変数を選択して、「編集(E)...」をクリック。


画像15

この画面は人によって若干違うかもしれません。気にしなくてOKです。「新規(N)」をクリックすると新しい行ができるので、「%JAVA_HOME%\bin」と入力。そしてOKをクリック。


画像16

OKをクリックして設定は完了。ここまで大丈夫でしょうか?


③動作確認

ではJDKのインストールと環境変数の設定が正しくできているか動作確認をしましょう。


まず、コマンドプロンプトを開きます。

画像17


コマンドプロンプトに「java -version」と入力してEnterを押下。以下のような表示になったら、JDKのインストールと環境変数の設定は正しくできています。

C:\Users\yosho>java -version
java version "14.0.1" 2020-04-14
Java(TM) SE Runtime Environment (build 14.0.1+7)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.1+7, mixed mode, sharing)

C:\Users\yosho>


ここまでご苦労様でした。お茶でも飲んで一息いれてください。次はTomcatのインストールと設定をやって頂きます。


1-3.Tomcatのインストール

Tomcatって何?って思っても大丈夫です。TomcatとはJavaのWebアプリケーションを動かす上で必要となる、Webアプリケーションサーバーの1つです。このnoteでは無料で利用できるTomcatを使っていきます。


①Tomcatのダウンロードページへアクセス

http://tomcat.apache.org/index.html


②Tomcatをダウンロード

2020年7月時点で最新版である Tomcat 9をダウンロードします。

画像19

画像20


画像21

「apache-tomcat-9.0.36-windows-x64.zip」というファイルがダウンロードできればOKです。


画像22

「apache-tomcat-9.0.36-windows-x64.zip」を解凍してください。「apache-tomcat-9.0.36」というフォルダが入っているので、Cドライブの直下にコピーします。(パスはどこでもいいのですが、ここでは余計な事を考えなくても良いようにC直下にしましょう。)


画像42

こんな感じの見た目になるはずです。Tomcatのインストールはこれで完了です。


1-4.Tomcatの環境変を設定

さて、Tomcatのパスを環境変数に登録しましょう。先ほどと同じように難しい事は考えなくて良いです。この手順のまま実施してください。


①環境変数の編集画面を表示

画像23

さっきと同じ要領です。Windows 10のデスクトップの左下の「検索するには、ここに入力します」に「環境変数」と入力。


画像24

「環境変数を編集」が表示されるのでクリック。


画像25

環境変数画面が表示されるので、上のセクションの「新規(N)…」をクリック。


画像26

変数名(N)に「CATALINA_HOME」、変更値(V)に「C:\apache-tomcat-9.0.36」と入力してOKをクリック。(CATALINAって何?っ気にしなくていいですよ。)


画像27

「CATALINA_HOME」という変数が追加されていればOK。続いて「Path」という変数を選択して、「編集(E)...」をクリック。


画像28

さっきと同じです。この画面は人によって若干違うかもしれません。気にしなくてOKです。「新規(N)」をクリックすると新しい行ができるので、「%CATALINA_HOME%\bin」と入力。そしてOKをクリック。


画像29

OKをクリックして完了です。



1-5.Tomcatの設定

このまま手を止めずTomcatの設定をしてしまいましょう。


①TomcatのWebアプリケーションマネージャへのログインユーザーとパスワードを設定

画像30

Tomcatのインストールフォルダ「C:\apache-tomcat-9.0.36」を見てください。こんな感じでフォルダとファイルが並んでいると思います。(バージョンによって若干違う可能性はあります。)

「conf」フォルダをクリック。


画像31

「tomcat-users.xml」ファイルをテキストエディターで開く。


<!--
 <role rolename="tomcat"/>
 <role rolename="role1"/>
 <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
 <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
 <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
 <role rolename="manager-gui"/>
 <user username="admin" password="admin" roles="manager-gui"/>
</tomcat-users>

ファイルの一番下の</tomcat-users>タグの上に↓の2行を追記します。

<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>

ファイルを保存して閉じる。


②ログの文字コードをShift-JISに変更

画像33

「logging.properties」ファイルをテキストエディターで開く。


# java.util.logging.ConsoleHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.encoding = Shift-JIS

ファイルの中50行目あたりの

java.util.logging.ConsoleHandler.encoding = UTF-8

をコメントアウトして、

# java.util.logging.ConsoleHandler.encoding = UTF-8

この行を追記します。

java.util.logging.ConsoleHandler.encoding = Shift-JIS

ファイルを保存して閉じる。


1-6.Tomcatの起動

さて、ではいよいよTomcatを起動してみましょう。


画像32

インストールフォルダの「bin」をクリック。


画像34

「startup.bat」をクリック。


画像35

するとこんなコマンドプロンプトが起動してログがザーッと流れていきます。

何となく途中でエラーっぽいのが出ずに、一番最後の行に

[main] org.apache.catalina.startup.Catalina.start サーバーの起動 [5,899]ms

こんな表示が出たらTomcatの起動は成功ですよ。


さて、TomcatのWebアプリケーションマネージャへアクセスしてみましょう。

ブラウザを開きこのURLへアクセス。

http://localhost:8080/manager/html


画像36

ユーザー名とパスワードを聞かれるので、先ほど「tomcat-users.xml」に設定したとおりに入力してログインをクリック。

ユーザー名 ⇒ admin
パスワード ⇒ admin


画像37

この画面が表示されば成功です。これがTomcatのWebアプリケーションマネージャです。


ここまでお疲れ様でした!!これで準備作業は終わりです。上手く行かなかった人はもう一度手順を見ながらトライしてみてください。

それでもどうしても進めない方は、TwitterのDMから質問して下さい。


2.JSPでHello Worldアプリを開発

さてと、ここからが本題ですね。

JavaのWebアプリケーションの主要な技術であるJSP(Java Server Pagesの略)にて世界で一番簡単なHello Worldアプリケーションを開発してみましょう。


2-1.コンテキストルートを作成

コンテキストルートというのはWebアプリケーションのルートフォルダとなります。このフォルダの中にアプリケーションに必要なファイルを配置します。単にフォルダを作成するだけです。

画像38

Tomcatのインストールフォルダ「C:\apache-tomcat-9.0.36」の中にある「webapps」というフォルダに入り、「HelloJSP」というフォルダを作成します。これがコンテキストルートになります。


2-2.JSPファイルを作成

ではいよいよJSPファイルをコーディングします。コーディングと言っても2行だけ。瞬殺です。

画像39

今作成した「HelloJSP」の中にHelloJSP.jspというテキストファイルを作成します。


<%@page contentType="text/html" pageEncoding="UTF-8" session="false" %>

Hello World 

HelloJSP.jspにこの2行を書いてファイルを保存します。これでアプリケーションの開発は終了です。


ここまで大丈夫ですかね?


2-3.Hello Worldアプリケーションへアクセス


さて、今開発したばかりのWebアプリケーションへアクセスしてみましょう。

ブラウザを開きこのURLへアクセス。

http://localhost:8080/HelloJSP/HelloJSP.jsp


画像40

この画面が表示されたら成功です。おめでとうございます!!


再び、Webアプリケーションマネージャ画面を見てみましょう。

http://localhost:8080/manager/html

画像41

さっきはいなかった「/HellpJSP」という行が出来ていますね。

実はWebアプリケーションマネージャの1行1行が1つのWebアプリケーションなんです。例えば「/examples」も1つのWebアプリでTomcatが最初から準備しているサンプルアプリです。

http://localhost:8080/examples

というURLでアクセスできるて、サンプルとソースが見れるので興味がある人は見ると勉強になります。(このnoteの第3回までやり終わった以降でいいかと思います。見るべきタイミングでもう1度お伝えします。)


簡単な事しかやっていませんが、これでも立派なJavaのWebアプリケーションです。


ここまでできれば、最初の一歩はクリアだと思います。

このTomcatの環境上にこれからさまざまなWebアプリケーションを開発しながら、Javaの基礎を学んでいきたいと思います。


3.ここまでにやってきた事の理屈を解説


さて、冒頭でもお話したとおりで、②理屈の理解の時間です。

①動くものをつくりしみじみ感を得る

②理屈の理解


3-1.今回の登場人物を整理

今回の登場人物の関係性を階層で整理してみます。

・Java EEアプリ(HelloJSP.jsp)
・Webアプリケーションサーバー
・JVM・JRE・JDK

画像43

この様な階層関係になります。下の人がいないと上の人は動かないよ、って考えて貰えば良いです。

このnoteはJavaのWebアプリをテーマにしているので詳細は書きませんが、JavaではWebアプリ以外も開発できます。バッチアプリやデスクトップアプリなどなど。その場合、Webアプリケーションサーバーは必要なくて、JVMの上でJavaのプログラムが動きます。Javaを動かす上でJVMは絶対に必要です。


まず、JDK(JRE/JVM)というJavaの実行環境をインストールしましたね。これがOSの上に来るのはまぁ分かるかと思います。JDKの中がなんだかごちゃごちゃしていますが後で解説するので飛ばします。


次にWebアプリケーションサーバーのTomcatをインストール。TomcatはJDKが無いと動かないので、階層として表現するとJDKの上になります。


そして、HelloJSP.jspはTomcatの上で稼働するので階層は一番上になります。言い換えると、JavaのWebアプリケーション(Java EEアプリケーションとも言います)は、TomcatなどのWebアプリケーションサーバーが無いと動きません。


✓ポイント
・Java ⇒ JVMの上で動く
・JavaのWebアプリケーション ⇒ Webアプリケーションサーバーの上で動く


因みにJavaはどんなプラットフォームでも動くマルチプラットフォームの言語である、という事を聞いた事ありますか?OSやWebアプリケーションサーバーを別のものに変えても、一番上のJava EEアプリは何も変更せずにそのまま動く、という事です。理論上は。

図で表すとこんな感じです。

画像44

今回はWindows 10に構築したのでこうでしたが、


画像56

Linuxに構築した場合はこうなるだけです。


画像46

例えばこういう事もできます。って、どこが変わったら分かりますか?w


WebアプリケーションサーバーをTomcatからWebLogicに差し替えています。WebLogicというのはTomcatと同じOracle社製のWebアプリケーションサーバーの1つです。

他にも色々なWebアプリケーションサーバーがあります。そしてWebアプリケーションサーバーが何なのか?は追々やるつもりです。が、先ほどもお伝えしたとおり、JavaのWebアプリケーションを動かす上で必ず必要となるもの覚えておいてください。


さて、ここまでの説明で気づいたかもしれませんが、下の階層が入れ替わったとしても、一番上に乗っている「HelloJSP.jsp」はそのまま動く、という事で、これがJavaがマルチプラットフォームと言われる理由です。


3-2.JVM・JRE・JDK

JVM、JRE、JDKについては簡単に触れておきます。

この図を見てください。このような包含関係になっています。

画像47


①JVM

JVM(Java Virtual Machine)はJava仮想マシンとも呼ばれます。Javaがマルチプラットフォームなのは、JVMがOSの違いを吸収しているからに他なりません。例えばC言語なんかはJVMのようなものは無くて、OSの上で直接動きますから、OSごとにプログラムを作成する必要があるんです。

画像48

こういう事です。OS上で直接動くC言語の場合、Windows用のC言語のプログラムはLinux上では動きません。


②JRE

JRE(Java Runtime Environment)は、JVMとライブラリーのセットにしたものです。難しい事は考えなくて良いですが、JVM単体ではなくてライブラリーとセットであるJREがJavaを動かす上で最低限必要となるJava実行環境と覚えておきましょう。

画像49


③JDK

JDK(Java SE Development Kit)とは、JREと開発ツールをセットにしたものです。このnoteのシリーズでは単にJavaを動かすだけ出なくて、当然ながらJavaの開発も行っていくので、JDKをインストールしています。

開発ツールとはコンパイラ、デバッガー、アーカイバーなどです。これらのツールは第2回で実際に使っていきます。

画像50


✓ポイント
JVMはJVM単体で提供はされていません。JVMに対応したAPIとセットでJavaの実行環境として成立しますので、JREもしくはJDKという単位で提供されています。(しかしJava SE 11以降はJDK提供のみ。理由はいずれ解説します。)


3-3.Java EEアプリ

では一番上に鎮座しているJava EEアプリについて説明します。ところでこのNoteでは説明なしに「Java EE」という言葉を使いましたが、現段階ではこのように考えておいてください。第2回で解説しますので。

JavaのWebアプリケーション ≒ Java EEアプリケーション


①コンテキストルート

コンテキストルートとはWebアプリケーションのルートフォルダです。Java EEではこの1つ1つがWebアプリケーションという扱いになります。


実体はTomcatのインストールフォルダの下「webapps」の下にあるフォルダです。先ほど「/examples」も1つのWebアプリだと言いましたが、「/docs」や「/manager」も1つのWebアプリになります。「/HelloJSP」もあなたが今回開発した1つのWebアプリという事ですね。

画像51


Webアプリケーションマネージャ上では、下記のようにコンテキストルート(=Webアプリケーション)が1つの行として管理されます。1つ1つが独立したWebアプリなので、個別に起動したり、停止したり、削除したりする事ができます。

画像52


そしてURLはこのように表現されます。

画像53

「localhost」というのはそのPC自体をさしています。

「8080ポート」はTomcatのポートです。(Tomcatは何も指定しないと8080ポートにインストールされるんです。)


つまり「http://localhost:8080/」では、そのPCの中のTomcatの事を指しています。


こういう事ですね。

画像54

コンテキストルートについて、ざっくりイメージは付いたでしょうか?

ここまで大丈夫ですか?


②HellpJSP.jsp

✓ポイント
JSP(Java Server Pages)はServlet(サーブレット)と並び、Java EEの中核技術で、Java EEを学ぶ上では必須の知識です。

Servletについては第2回で解説いたします。


ここではJSPについては詳しく解説はしません。ざっくりイメージだけをお伝えします。JSPは重要な要素なのでいずれしっかり説明します。


さて、今回JSPはたったの2行でした。もちろんこれでJSPとして成立しています。

<%@page contentType="text/html" pageEncoding="UTF-8" session="false" %>

Hello World 


画像55

1行目はおまじないみたいなものです。JSPの1行目に必ず書いて下さい。もちろん意味はありますが、ここでは解説しません。

そして2行目以降。ここにhtmlを書けばそのままクライアントにレスポンスされます。もっと簡単に言うと2行目以降に書いたものはhtmlとして認識されます。

めちゃ簡単に言いすぎたので、さすがに補足しますが、JSPもJavaのプログラムの1つです。JSPとしてのロジックのプログラミングは当然可能です。色々な記述が可能です。


しかし、MVC(Model、View、Controller)モデルというプレゼンテーション層の考え方が生まれてからは、JSPはViewの役割として画面として使われる事が定番になりました。


ビジネスロジックはModelに集約して、その結果をViewであるJSPにて表示するという考え方です。だから私の超入門ではJSPのプログラミングはMVCのViewの役割の範囲でしか解説しません。世の中のトレンドがそうだからです。


当然MVCについては追々解説します


が、ここではMVCという言葉だけ知っていれば良いです。


4.宿題

最後に宿題の時間です。今日、手を動かした事、そして理屈の解説で学んだ事を応用してWebアプリケーションを作成して下さい。


宿題
以下のJSPアプリを作成してみましょう。名前とTwitterアカウントはあなたのものでやってみましょう。

URL
http://localhost:8080/HelloYourName/HelloYourName.jsp


画面イメージ

画像56


答えは第2回で解説いたします。頑張ってみてください。


このnoteが役に立ったと思って頂けれたら、Twitterでフォローいただけるとうれしいです。第2回、第3回と続編をリリースした際にお知らせいたします。
繰り返しになりますが、フォロワーさん限定で、このnote内容についてのサポートをいたしますので、ぜひぜひご活用ください。


では、今日はここまでです。


さようなら。また会いましょう。


【絶対に挫折しないJava超入門】第2回はこちらです。


この記事が気に入ったらサポートをしてみませんか?