独習Javaサーバサイド編第2版 第1章まとめ
山田祥寛さんの独習Javaサーバサイド編第2版
今回から新しい本まとめていきます
1章はまだわかりやすい感じ
サーバサイドJava
Webアプリケーションを開発するための技術
Webアプリケーション
検索エンジンやネットショッピングサイト、SNSなどのインターネットを経由してアクセスすることができるアプリケーション
クライアント
顧客、依頼人という意味で、コンピュータの世界では
ほかのコンピューターに対してなんらかの依頼(要求)を行い、その結果として情報を受け取るコンピュータ
のことをいう
Webアプリケーションの場合、InternetExplorerやGoogle Chromeなどのインターネットブラウザのこと
サーバ
給仕人、奉仕者という意味で、コンピュータの世界では
ほかのコンピュータに対して、情報やサービスを提供するコンピュータ
のことをいう
日常的に一般ユーザの目に触れることはなく、ネットワークのどこかにいつも待機している存在
メールを送受信するメールサーバや、データ管理のデータベースサーバなどさまざまなサーバがある
Webアプリケーションで直接クライアントにサービス(情報)を提供するのが
Webサーバ
と呼ばれるもの。
クライアント/サーバ間の通信
サーバにはいくつかの役割があり、重要な一つは
クライアントから要求されたファイル(Webページ)をクライアントに送信すること
である
URL(Uniform Resource Locator)
クライアントが見たいページを指定するためのもの
クライアントからサーバに対して
HTTP(HyperText Transfer Protocol)
という
プロトコル(コンピュータ同士がデータをやり取りするための約束事)
に従って送信される
プロトコルにはさまざまな種類があり、Webサーバとインターネットブラウザとが会話するとき使用するのがHTTPである
HTTPはクライアントからの要求(リクエスト)に対して、サーバが応答(レスポンス)するという単純な手続きを規定している
静的なページ
サーバ側であらかじめ用意されたファイルをそのままなんの加工もせずに返すページ
この場合、サーバは要求を受け、要求通りのページを返すだけ
コンテンツそのものを用意する
動的なページ
クライアントに応じて異なる結果を返したいときのためのページ
コンテンツを生成するための仕組みを用意する
クライアントサイドスクリプト
JavaScriptなどで記述するようなもの
クライアント側にスクリプト(人間がコンパイルを意識しなくていい、書いてすぐ実行できるプログラム)とデータをダウンロードし、クライアント上で実行する仕組みのこと
メニューをクリックするとサブメニューが展開されるといった効果は基本的にクライアントサイドスクリプトを利用して実現している
サーバサイドJava
サーバ側で動作する
サーバサイドであらかじめ決められた処理を行い、その結果を一般的にはHTMLとしてクライアントに送信する
2つの技術の違い
クライアントサイド技術とサーバサイド技術は
ユーザの操作や与えられた値、条件に応じて動的にコンテンツを生成する
という点ではよく似た技術である
だが、実行する場所が違うだけではない!!
●クライアントサイド技術
原則としてデータ保存の手段がない
コンテンツ提供者があらかじめ用意したコンテンツを、手を変え品を変え見せ方を変えているだけ
コンテンツそのものは不変(静的である)といえる
すべてのデータ、プログラムをクライアント側にいったんダウンロードしなければならないため次のような短所がある
・パスワードなどユーザの目から隠したい情報を扱いにくい
・トラフィック量が増大しやすい
・クライアントのマシンスペックやブラウザの種類、バージョンなどに依存しやすい
●サーバサイド技術
サーバ側に用意されたファイルシステムやデータベースといった保存手段を自由に利用できる
コンテンツ提供者が用意したコンテンツはもちろん、クライアントから入力した情報をもとにコンテンツを成長させていくことができる(ブログなどのアプリケーションなどを実現できる)
すべての処理をサーバ側でおこなうので次のようなメリットがある
・機密情報も管理しやすい
・処理結果は最終的な結果であるHTMLなのでトラフィックを最低限に抑えられる
・クライアント環境に依存しにくい
*すべてをサーバサイド技術で実現すればいいのではない
すべての処理をサーバ側でおこなうので処理要求のたびにクライアント/サーバ間でトラフィックが発生するという短所もある
適材適所で使い分けるべき
サーバサイド技術の中のサーバサイドJava
サーバサイドJavaは代表的なサーバサイド技術だが、唯一の技術ではない
PHPやASP.NET,CGI&Perlのようなサーバサイド技術もある
サーバサイドJavaの特徴
利用実績の高さとそれによるノウハウの多さ
10年以上企業における基幹系システムの基盤技術として数多く
利用されてきた枯れている技術である
サーバサイドJavaとJSP&サーブレット
Java技術は利用目的から3つのエディションに大別できる
●JavaSE(Java Platform, Standard Edition)
Javaアプリケーションを動作するために最低限必要な基本的な実行/開発環境を提供するもの
通常JDKといった場合JavaSEのことを指す
デスクトップアプリケーションを開発するための機能も含まれる
●JavaEE(Java Platform, Enterprise Edition)
JavaSEの上で動作するサーバサイドアプリケーション開発のためのライブラリ群(アプリケーションフレームワーク)
主に企業向けのアプリケーション開発を想定した機能が取り揃えられている
サーバサイドJavaといった場合まずはこれを指していると考えて良い(JavaEEがすべてというわけではない)
●JavaME(Java Platform, Micro Edition)
携帯端末や家電製品への組み込み用途を想定した開発/実行環境
JavaSE/JavaEEが互いに密接に関連しているのに対して、JavaMEは独立したエディションである
JavaEEを構成するライブラリのなかでも特にサーバサイドアプリケーションを開発する上で欠かせないJSP(JavaServerPages)とサーブレットは、主にプレゼンテーション層(画面の生成や制御)を担う
JSPとサーブレットの使い分け
JSPで記述できることは必ずサーブレットで実現できる
サーブレットで記述できることの大部分はJSPで実現できる
同一のJava言語をベースとし、担う部分も同じ技術をなぜ使い分けるのか?
サーブレットはあくまでもJavaプログラミングの一部としてHTMLを出力する
JSPはHTMLのなかに断片的なJavaプログラムを埋め込む形式をとる
この書き方の違いから用途によって使い分けをする必要がでてくる
●サーブレット
ロジックの記述は得意だが静的なHTMLを大量出力するには記述が冗長になる
処理中心の機能を担う
●JSP
レイアウトとは関係ないロジックを大量に埋め込むとページの構造が見えにくくなる
表示中心の機能を担う
JSPはコンパイルを必要としない
●サーブレット
開発者自らコンパイル作業を行い、できた実行ファイルを配置する作業が必要
●JSP
事前のコンパイル不要
書いたソースコードをそのままサーバ上に配置さえすれば動作させることができる
JSPは最初に呼び出されたタイミングでいったんサーブレットに変換/コンパイルされた後、コンパイルされた状態のものがメモリ上に常駐するので、1度目の要求では遅さを感じるが2回目以降はサーブレットと同等のパフォーマンスを発揮する
環境構築の部分は省いてます。
別上げするかは未定。たぶんするかも。