Web開発では必ずアプリケーションサーバ(APサーバ)とかWebサーバなどという言葉が出てきます。
ここでは「アプリケーションサーバ」とは何者なのか、またこの「アプリケーションサーバー」として使用されている「JBoss」と「Tomcat」の機能や違いについて整理しておきます。
その前に「アプリケーションサーバ」って何?という方もいると思いますので、簡単にまとめておきます。
アプリケーションサーバとは
- Webシステム開発する上で構成される「プレゼンテーション層」「アプリケーション層」、「データ層」の3階層モデルにおいて、「アプリケーション層」のプログラムを実行するサーバーのこと。
- アプリケーションサーバで提供するのは基本的に以下の3つとなります。
- Javaなどのプログラム実行環境やデータベースへの接続機能の提供。
- 複数の処理(スレッド)を連結するトランザクション管理機能。
- 業務処理の流れを制御するビジネスロジックの実装。
Jbossとは
- EJB(Enterprise JavaBeans)のオープンソース実装であるJavaによるオープンソースソフトウェア開発コミュニティのこと。
- JBossはEJB(J2EE対応アプリケーション)を動作させるためのサーバソフトウェアとして利用されています。本来JSPやサーブレットは動作しませんが、これらを動作させるためにWebコンテナとしてTomcatを採用しています。
- Jbossで提供される機能は「JTAトランザクションマネージャ」、「EJB」、「MDB」、「JPA」、「JMS」、「JCA」、「JAX-WS」、「JMX」、「log4jを用いたログ基盤」、「分散キャッシュなどの各種クラスタリングサービス」などがあります。
Tomcatとは
- Apache Tomcat Project内で開発されているオープンソースのソフトウェア。
- JavaサーブレットやJSPを処理するアプリケーションサーバ(APサーバ)/サーブレットコンテナの一つ。
- 単独でWebサーバとして動作することも可能。
- 実際にはプラグインとしての利用が主流となっています。
- Tomcatで提供される機能は基本的にServlet, JSP, JDBC接続プールのみ。
とつらつら書いてみましたが、要はJbossもTomcatも「JavaをWeb(ブラウザ)上で動かすためのプログラム」という感じで理解しておけば最初の内はいいのかなあと思います。ただTomcatでは使用出来る機能が限られる為、Tomcatの機能も包含しているJBossを使用しているケースが最近は多いようです。
Webシステムは基本的に複数人で同時利用されるのが前提のため、マルチスレッドアクセスを考慮した設計・実装を行う必要があります。業務でJavaの各変数とスレッドセーフについて考える機会があったので、「インスタンス変数とローカル変数の違いとスレッドセーフとの関係」について今回は整理してみようと思います。
Javaでの変数毎のメモリ管理イメージ

上記は変数毎のメモリ管理イメージとなります。Javaではクラス変数やインスタンス変数はヒープ領域と呼ばれる共有メモリ領域へ保存されます。複数のスレッドで共有され別のスレッドに書き換えられる可能性があり,スレッドセーフではありません。対してローカル変数はJavaスタックと呼ばれるスレッド固有メモリ領域へ保存されます。スレッド固有領域なので別のスレッドに書き換えられる可能性はないのでスレッドセーフとなります。
インスタンス変数とは
- サンプルコード
|
|
public class ClassSample{ /** インスタンス変数 */ private String hoge; } |
- メソッドの外に記述します。staticは付けません(staticが付くとクラス変数になります)。
- ヒープ領域と呼ばれる共有メモリ領域へ保存される為、宣言しただけではスレッドセーフにはなりません。
- スレッドセーフを保つ為には初期化する必要があります。
- コンスラクタで初期化
- インスタンス宣言時に初期化
- 最初のget時に初期化
- 他のスレッドからの更新を防ぐ為、修飾子はprivateにする必要があります。
- 当該クラス内の任意のメソッドから参照可能となります。
ローカル変数とは
- サンプルコード
|
|
public class ClassSample{ public static void methodSample(){ // ローカル変数 int num = 1; } } |
- メソッド内に記述します。
- そのメソッドが実行中の間だけ有効となります。
- Javaスタックと呼ばれるスレッド固有メモリ領域へ保存される為、スレッドセーフとなります。
「SQLの絵本」はDBの勉強をしようと講座を受けたときのテキストだった本です。
当時初心者だった私にも分かりやすく、仕事でSQLを書くようになって今でも手元に置いてちょっとした事を確認するのに使用しています。
書いてある事は基本中の基本ですが、同時に利用頻度の高い事でもあります。
プログラムを書くのに最近はネットで調べると直ぐにサンプルが出てくるので、言語を覚えない癖がついてしまったように思います。
SQLもブログラムを書く為に、たまに必要になるのですがちょっと間をあけると細かいルールを忘れてしまいます。
もちろんネットで調べるのも手ですが、自分の引っかかりやすいツボを押さえているのであれば、本で手元に置いてあるほうが、たくさんあるネットの情報から探すより、付箋を貼ってあるページを開くほうが早い場合があります。
同僚に質問されるような時も、この本を開いて「ここ」といった風に伝えることもあります。
言葉でまわりくどく伝えるよりも、読みやすい字で分かりやすく図解されているので、渡されたほうにとっても理解しやすい場合もあるようです。
著者:アンク
発売日:2004/08
様々な業務でシステム開発をしているとDTOやVOというクラスが出てきて違いが曖昧になってくる事があるので両者の違いについて整理しておきます。
DTO(Data Transfer Object)
- 基本的には値をまとめて受け渡す事のみを目的とするクラス。
- DTO(Data Transfer Object)はデザインパターンの一つ。
- 過去、J2EEではVO(Value Objects)と呼ばれていた。
- VOとは違い、値は変更可能なのでsetterメソッドを持つ。
VO(Value Objects)
- VO(Value Objects)もデザインパターンの一つ。
- インスタンスコンストラクタでプロパティを初期化してプロパティの変更(set)は外から出来ないようにするクラス。
- VOは不変である事が前提のため、MVC間で使用する場合にはDTOを用いた方が相性が良い。
- VOクラス例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
/** * <p>[概 要] SampleVO。</p> * <p>[詳 細] </p> * <p>[備 考] </p> * <p>[環 境] </p> */ public class SampleVO implements Serializable{ /** * 番号 */ private Integer no; /** * データ */ private String data; /** * <p>[概 要] コンストラクタ。</p> * <p>[詳 細] </p> * <p>[備 考] </p> * @param no * @param data */ public SampleVO(Integer no, String data) { this.no = no; this.data = data; } /** * <p>[概 要] 番号を取得する。</p> * <p>[詳 細] </p> * <p>[備 考] </p> * @return 番号 */ public Integer getNo() { return no; } /** * <p>[概 要] データを取得する。</p> * <p>[詳 細] </p> * <p>[備 考] </p> * @return データ */ public String getData() { return data; } } |
Web制作の勉強をしようと思った場合に必ず手に取るのがCSSに関しての書籍です。
そのほとんどは初歩的なもので運用フェーズのことについても書かれておりませんし、技術的にはかなり前時代的なものを紹介していることが多かったりします。
ですが今回たまたま書店で手に取った「CSS設計の教科書」は違いました。
そもそもがCSSがしっかりとわかる現場でそれなりに経験を積んだフロントエンドコーダーを対象にしている時点で他の数多あるCSS書籍とは一線を引きます。
CSSにもオブジェクト指向の概念を取り入れようというOOCSSや話題になっているSMACSS、他にもBEMといった命名規則についても紹介しています。
現場の人間が知りたいことが盛りだくさんなのです。
具体的なコードを例示して紹介しているのはもちろんのこと、著者のスキルレベルも高いのですーっと入ってくる説明になっています。
久しぶりにWeb制作関係で良書を見つけたように思います。
更に掘り下げた第二弾も読みたくなってくる書籍のひとつですね。
著者:谷 拓樹
発売日:2014/07/24
この本は現場開発で即効性のある内容が多分に含まれています。
開発物の題材は、架空の野球チームの公式ページです。Railsを活用して、1からページを作り上げていきます。
いきなり開発本番に入るのではなく、開発環境の構築に多くのページを点に好感を持ちました。
私が今までに触れてきたRailsの入門書は、検索をすればものの数分で手に入るような情報ばかりが掲載されていたからです。
一方で、この本は開発に使うOSごとに発生し得るエラーの対処法が易しく説明されていました。
幸いにも開発環境の構築でエラーが発生しませんでしたが、初学者に配慮している部分は評価できると考えます。
Railsを用いて開発を行う技術者が、現場で多用するであろうメソッドの説明に重点が置かれていました。
そのように考えられるのは、この本の内容を見た開発経験18年の上司が「現場でよく使うメソッドの説明が丁寧だ」と言っていたからです。
日曜プログラマーから本格的に学びたいと考える人まで、全てのRails初学者に効果的な良書だと思います。
著者:黒田 努、佐藤 和人
発売日:2012/03/05
「Windows Server2012パーフェクトマスター」はActive Directory管理の研修を受けた時に、教科書として使われていた本です。
3千円という値段は高そうに思われますが、フルカラーな上に685ページものボリュームがあります。
内容的にも用語の解説から始まって、具体的な管理画面の使い方までが解説されています。
社内システムの管理などを担当するならば、持っていて損な本では無いでしょう。
マイクロソフトのネットワーク技術は「付け足し」による拡張開発の結果、現在の形になっています。
ファイル名の文字数制限など、「過去の遺産」を引きずっている部分があるワケで、歴史的な経緯を把握していないと理解が難しいと思います。
何から何まで徹底した解説をしてくれる資料が何冊かは必用となります。
そのうちの1冊として、本書は非常に優れていると思います。
技術書というのは、分厚い上に文章も判りづらく、とっつきにくいものですが、この本はそういった点は相当に改善されています。
実際の操作画面などの図を多様し、それに番号をつけて解説を行うという念の入れようです。
ベテラン管理者だけでなく、初心者の方にも役にも立つ良書の一つです。
著者:野田 ユウキ、アンカープロ
発売日:2013/07
HTML5とCSS3(HTMLの以前のバージョンについても、比較の為に記載があります)の入門本です。全くの初心者から少し分かっている人までが対象となる技術書です。
”KUJIRA cafe”という7画面から構成された架空のサイトをコーディング(コードの記述)してサイト公開までの全ての手順が書かれています。
他の本では、「これは、このように覚えてください」といった書き方がされていますが、本書では分かり易く平易な表現で説明されています。
また、随所に記述されているコラムがポイントを押さえた内容となっているため、この本は実際にコーディングする人だけでなく、Webディレクターを目指す人にとっても入門本として役立つ内容です。
これからのWebサイトの構築には、HTML5とCSS3は欠かせないものですので、本書のように基本をキッチリと抑えて分かり易く書いた本で学ぶことは有意義です。
全く知識がない人でも1週間で読了しサイト構築まで行うことができます。
タグの説明は、主要ブラウザの対応状況が表記されていますので、初心者にとって痒いところに手が届く参考書です。
著者:狩野 祐東
発売日:2014/09/26
この本は、著者である和田祐介そこ「ゆーすけべー」氏が自身の体験をもとにwebサービスの作り方について書かれたものです。
ゆーすけべー氏はさまざまなwebサービスを作成していますが、その中でも特に有名なものとして「ボケて」があげらます。
これは、画像について文章で「ボケる」いわゆる大喜利をweb上で行えるサイトです。
このようなサービスを展開しているゆーすけべー氏が、下準備、企画、設計、開発、運用の5段階について内容を分けて書いています。
下準備では、サービス作るうえでの心構えについて書いており、最初の小題として「ぐだぐだ言ってないでコードを書けよ、ハゲ」というなんとも耳の痛い話から始まります。
私も含めてほとんどの人がそうだと思いますが、実際にコードを書き始めるまでが長い人間はすぐに書き始める人間に比べて上達が遅いと感じてしまいます。
コードは打ってこそ上達するものだからです。そのためにブログの利用や勉強会への参加などを積極的に行うように書いている点も興味深です。
終わりに作者も記述していますが、webサービスをつくる過程はひとつではなく、様々な手法によって作ることが出来るとしています。
本書を読むだけで魅力的人気となるwebサービスがつくれるようになるわけではありませんが、一人の成功者が行った手法を知るのはよい機会であるし自らの糧にもなると思います。
もしwebサービスを作りたいと考えている人にはおすすめの一冊です。
著者:和田祐介
発売日:2012/11/20
「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。