【絶対に挫折しない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をダウンロードします。
「jdk-14.0.1_windows-x64_bin.exe」というファイルがダウンロードできればOKです。
③JDKのインストール
「次(N) >」をクリック。
「変更...」をクリック。
「フォルダ名:」にJDKをインストールするフォルダを指定。今回は上記の通りで行きましょう。そして「OK」をクリック。
「インストール先:」が指定の通りのフォルダになっている事を確認して、「次(N) >」をクリック。
しばしお待ちを。
ここ画面がでればJDKのインストールは成功です。「閉じる(C)」をクリックして閉じましょう。
1-2.JDKの環境変を設定
環境変数にJDKのパスを登録します。ここでも難しい事は考えなくて良いです。この手順のまま実施してください。
①環境変数の編集画面を表示
Windows 10のデスクトップの左下の「検索するには、ここに入力します」に「環境変数」と入力。
すると検索結果に「環境変数を編集」が表示されるのでクリック。
②環境変数を設定
環境変数画面が表示されるので、上のセクションの「新規(N)…」をクリック。
変数名(N)に「JAVA_HOME」、変更値(V)に「C:\Java」と入力してOKをクリック。
「JAVA_HOME」という変数が追加されていればOK。続いて「Path」という変数を選択して、「編集(E)...」をクリック。
この画面は人によって若干違うかもしれません。気にしなくてOKです。「新規(N)」をクリックすると新しい行ができるので、「%JAVA_HOME%\bin」と入力。そしてOKをクリック。
OKをクリックして設定は完了。ここまで大丈夫でしょうか?
③動作確認
ではJDKのインストールと環境変数の設定が正しくできているか動作確認をしましょう。
まず、コマンドプロンプトを開きます。
コマンドプロンプトに「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をダウンロードします。
「apache-tomcat-9.0.36-windows-x64.zip」というファイルがダウンロードできればOKです。
「apache-tomcat-9.0.36-windows-x64.zip」を解凍してください。「apache-tomcat-9.0.36」というフォルダが入っているので、Cドライブの直下にコピーします。(パスはどこでもいいのですが、ここでは余計な事を考えなくても良いようにC直下にしましょう。)
こんな感じの見た目になるはずです。Tomcatのインストールはこれで完了です。
1-4.Tomcatの環境変を設定
さて、Tomcatのパスを環境変数に登録しましょう。先ほどと同じように難しい事は考えなくて良いです。この手順のまま実施してください。
①環境変数の編集画面を表示
さっきと同じ要領です。Windows 10のデスクトップの左下の「検索するには、ここに入力します」に「環境変数」と入力。
「環境変数を編集」が表示されるのでクリック。
環境変数画面が表示されるので、上のセクションの「新規(N)…」をクリック。
変数名(N)に「CATALINA_HOME」、変更値(V)に「C:\apache-tomcat-9.0.36」と入力してOKをクリック。(CATALINAって何?っ気にしなくていいですよ。)
「CATALINA_HOME」という変数が追加されていればOK。続いて「Path」という変数を選択して、「編集(E)...」をクリック。
さっきと同じです。この画面は人によって若干違うかもしれません。気にしなくてOKです。「新規(N)」をクリックすると新しい行ができるので、「%CATALINA_HOME%\bin」と入力。そしてOKをクリック。
OKをクリックして完了です。
1-5.Tomcatの設定
このまま手を止めずTomcatの設定をしてしまいましょう。
①TomcatのWebアプリケーションマネージャへのログインユーザーとパスワードを設定
Tomcatのインストールフォルダ「C:\apache-tomcat-9.0.36」を見てください。こんな感じでフォルダとファイルが並んでいると思います。(バージョンによって若干違う可能性はあります。)
「conf」フォルダをクリック。
「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に変更
「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を起動してみましょう。
インストールフォルダの「bin」をクリック。
「startup.bat」をクリック。
するとこんなコマンドプロンプトが起動してログがザーッと流れていきます。
何となく途中でエラーっぽいのが出ずに、一番最後の行に
[main] org.apache.catalina.startup.Catalina.start サーバーの起動 [5,899]ms
こんな表示が出たらTomcatの起動は成功ですよ。
さて、TomcatのWebアプリケーションマネージャへアクセスしてみましょう。
ブラウザを開きこのURLへアクセス。
http://localhost:8080/manager/html
ユーザー名とパスワードを聞かれるので、先ほど「tomcat-users.xml」に設定したとおりに入力してログインをクリック。
ユーザー名 ⇒ admin
パスワード ⇒ admin
この画面が表示されば成功です。これがTomcatのWebアプリケーションマネージャです。
ここまでお疲れ様でした!!これで準備作業は終わりです。上手く行かなかった人はもう一度手順を見ながらトライしてみてください。
それでもどうしても進めない方は、TwitterのDMから質問して下さい。
2.JSPでHello Worldアプリを開発
さてと、ここからが本題ですね。
JavaのWebアプリケーションの主要な技術であるJSP(Java Server Pagesの略)にて世界で一番簡単なHello Worldアプリケーションを開発してみましょう。
2-1.コンテキストルートを作成
コンテキストルートというのはWebアプリケーションのルートフォルダとなります。このフォルダの中にアプリケーションに必要なファイルを配置します。単にフォルダを作成するだけです。
Tomcatのインストールフォルダ「C:\apache-tomcat-9.0.36」の中にある「webapps」というフォルダに入り、「HelloJSP」というフォルダを作成します。これがコンテキストルートになります。
2-2.JSPファイルを作成
ではいよいよJSPファイルをコーディングします。コーディングと言っても2行だけ。瞬殺です。
今作成した「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
この画面が表示されたら成功です。おめでとうございます!!
再び、Webアプリケーションマネージャ画面を見てみましょう。
http://localhost:8080/manager/html
さっきはいなかった「/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
この様な階層関係になります。下の人がいないと上の人は動かないよ、って考えて貰えば良いです。
この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アプリは何も変更せずにそのまま動く、という事です。理論上は。
図で表すとこんな感じです。
今回はWindows 10に構築したのでこうでしたが、
Linuxに構築した場合はこうなるだけです。
例えばこういう事もできます。って、どこが変わったら分かりますか?w
WebアプリケーションサーバーをTomcatからWebLogicに差し替えています。WebLogicというのはTomcatと同じOracle社製のWebアプリケーションサーバーの1つです。
他にも色々なWebアプリケーションサーバーがあります。そしてWebアプリケーションサーバーが何なのか?は追々やるつもりです。が、先ほどもお伝えしたとおり、JavaのWebアプリケーションを動かす上で必ず必要となるもの覚えておいてください。
さて、ここまでの説明で気づいたかもしれませんが、下の階層が入れ替わったとしても、一番上に乗っている「HelloJSP.jsp」はそのまま動く、という事で、これがJavaがマルチプラットフォームと言われる理由です。
3-2.JVM・JRE・JDK
JVM、JRE、JDKについては簡単に触れておきます。
この図を見てください。このような包含関係になっています。
①JVM
JVM(Java Virtual Machine)はJava仮想マシンとも呼ばれます。Javaがマルチプラットフォームなのは、JVMがOSの違いを吸収しているからに他なりません。例えばC言語なんかはJVMのようなものは無くて、OSの上で直接動きますから、OSごとにプログラムを作成する必要があるんです。
こういう事です。OS上で直接動くC言語の場合、Windows用のC言語のプログラムはLinux上では動きません。
②JRE
JRE(Java Runtime Environment)は、JVMとライブラリーのセットにしたものです。難しい事は考えなくて良いですが、JVM単体ではなくてライブラリーとセットであるJREがJavaを動かす上で最低限必要となるJava実行環境と覚えておきましょう。
③JDK
JDK(Java SE Development Kit)とは、JREと開発ツールをセットにしたものです。このnoteのシリーズでは単にJavaを動かすだけ出なくて、当然ながらJavaの開発も行っていくので、JDKをインストールしています。
開発ツールとはコンパイラ、デバッガー、アーカイバーなどです。これらのツールは第2回で実際に使っていきます。
✓ポイント
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アプリという事ですね。
Webアプリケーションマネージャ上では、下記のようにコンテキストルート(=Webアプリケーション)が1つの行として管理されます。1つ1つが独立したWebアプリなので、個別に起動したり、停止したり、削除したりする事ができます。
そしてURLはこのように表現されます。
「localhost」というのはそのPC自体をさしています。
「8080ポート」はTomcatのポートです。(Tomcatは何も指定しないと8080ポートにインストールされるんです。)
つまり「http://localhost:8080/」では、そのPCの中のTomcatの事を指しています。
こういう事ですね。
コンテキストルートについて、ざっくりイメージは付いたでしょうか?
ここまで大丈夫ですか?
②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
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
画面イメージ
答えは第2回で解説いたします。頑張ってみてください。
このnoteが役に立ったと思って頂けれたら、Twitterでフォローいただけるとうれしいです。第2回、第3回と続編をリリースした際にお知らせいたします。
繰り返しになりますが、フォロワーさん限定で、このnote内容についてのサポートをいたしますので、ぜひぜひご活用ください。
では、今日はここまでです。
さようなら。また会いましょう。
【絶対に挫折しないJava超入門】第2回はこちらです。
この記事が気に入ったらサポートをしてみませんか?