「WEB開発」タグアーカイブ

JDKとJREの違い

Javaの勉強をしていると最初の方に学習する事ではあるのですが、ふと違いとは?と考えるとjavaの実行環境と開発環境の違い位の認識しかなかったので整理しておこうと思います。

JDK

  • 「Java Development Kit」の略称。
  • Javaでプログラムを開発する際に必要。
  • ソフトウェア開発キット(SDK)を拡張したサブセット。
  • フリーソフトウェア。

JRE

  • 「Java Runtime Environment」の略称。
  • Javaで作成されたプログラムを実行する場合に必要。

Web開発でApache POIを使用する際に注意する事

Web開発では帳票をExcelで出力する際に「Apache POI」がよく使用されています。
ただ「Apache POI」を使用する場合、システム的な制限やリソースなど事前に注意しておくべき点があるのでメモしておきます。

Apache POIの問題点

  • 「xlsx」形式のファイルの場合、リソースを大量に消費する
    POIを使用する場合、出力帳票のテンプレートファイルを用意して帳票を出力するケースが多いと思われます。このテンプレートファイルの拡張子がEXCEL2007以降の形式「xlsx」で用意されている場合、POIでは一旦そのファイルを全てメモリに読み込ませる為により多くのリソース(メモリ)を消費する事になります。
  • セル結合処理は非常に遅い
    POIでEXCEL操作する場合、セル結合処理は非常に処理速度が遅くなるので帳票のフォーマットを決める場合はセル結合しないフォーマットで設計しておいた方が懸命です。

JUnit:privateメソッドを実行(テスト)する方法

JUnitでテストする時にprivateメソッドをテストする方法をご紹介します。
privateメソッドをテストするにはリフレクション「java.lang.reflect.Method」を使用することで実行可能となります。

Javaソース

JUnitサンプル

JUnit:private変数を取得・更新する方法

JUnitでテストする時にprivateなメンバ変数を取得・更新したい場合の方法をご紹介します。
今回はAPI「JMockit」の「Deencapsulation」クラスを使用してカプセル化された変数を参照・更新する方法です。

JMokitのダウンロード

    以下サイトへアクセスしてダウンロードした「jmockit.jar」ファイルをクラスパスへ追加します。
    クラスパスへ追加する際、JUnitより先に読み込む必要があるのでJUnitより上位へ配置します。
    JMokitのダウンロード

JMokitのJavadoc

Javaソース

JUnitサンプル

djUnitでのプライベートコンストラクタのテスト方法

javaではUtilクラスなどのコンストラクタは無駄なインスタンス化を抑制するためにコンストラクタの修飾子をprivateにする事がよくあります。ただdjUnitで試験する場合にはコンストラクタを呼び出したくても修飾子がprivateになっていてはインスタンス化が出来ずに呼び出せないのでカバレッジを100%に出来ません。そういう場合にプライベートコンストラクタをテストする方法についてメモしておきます。

Javaソース

JUnitサンプル

djUnitを実行してクラス名の行が未実行になる

基本的な事ですがjavaのテストでdjUnitを使用していると以下の様にクラス名を指定している行が未実行になってしまうという事がありました。
この原因と対応方法についてメモして置きます。

クラス名が未実行となる原因

  • コンストラクタが定義されていない。

対応方法

  • 以下の様にコンストラクタを定義します。

    未実行の箇所がクラス名の行からコンストラクタの行へ変化したのがわかります。後はコンストラクタ用のテストメソッドを記述すれば全て実行済となります。

jbossとtomcatの違い

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を使用しているケースが最近は多いようです。

apacheとIISの違い

インターネットを構成する上で、webサーバを理解することは非常に重要です。
ホームページなどのwebサイトを構築する場合、webサーバーを何にするのかというのは非常に重要になります。
webサーバーとしては、UNIXやLINUXで使われているapacheと、windowsで使われるIISの2種類が一般的に広く使用されています。
これらは機能にも違いがあるため、サーバー移行などをする場合によく理解していないとトラブルになることもあります。
apacheはレンタルサーバーなどを借りると使われていることが多く、ノウハウなどもwebサイトから収集もしやすいというメリットがあります。apacheに精通した技術者も多く、世界中で使われているといった特徴があります。
一方、IISはwindowsサーバーで使われていて、apacheに比べると需要は少なくなります。
基本的にどちらもできることは似ていますが、両者の特徴やメリット・デメリット、記述方法などをしっかりと理解して環境に最適なWebサーバを選択することが重要となります。

apacheの特徴

  • 設定しだいで幅広い環境に対応出来る。
  • 技術的スキルが必要となる。
  • 精通した技術者も多く、世界中で使われているといった特徴があるため、トラブルが発生してもノウハウを探しやすい。

IISの特徴

  • ASP(.NET Framework)を使って簡単に動的なWebページを作成出来る。
  • ASP(.NET Framework)以外の言語(PHPやJava)で開発された物を動かすには、ほとんど利点がない。

<b>太字タグと<strong>論理強調タグの違い

HTMLを作成する時に悩む、<b>太字タグと<strong>論理強調タグの違いについてメモしておきます。
この二つは表面上はよく似ていて、どちらも太字になります。
ですが<b>タグは単に太く見えるだけで単なる一般的な太字ですが、<strong>タグは検索エンジンなどにおいて、特別な意味を持ったタグとなります。
検索エンジンなどで注視させたい場合などは<strong>タグを用いると良いでしょう。
逆に<b>タグは単なる太く見えるだけのタグなので、文章の中で読者に対して注視させたい場合に用います。
私の場合は以前よくSEOの観点から<strong>タグを活用していました。
メタタグなどよりは多少の効果はあるようで、特定の検索ワードで上位になることも多かったです。
今は時間的に余裕がなく面倒なので、あまり文章内の特別な編集は殆どしていませんが、多少の効果があるという事は確かなようです。
他にもメタタグなど色々なタグがHTMLにはありますが、<b>タグや<strong>タグは初心者でも簡単に用いる事が出来ると思うので、うまく活用すると良いかもしれません。

URLとURIの違い

ホームページのアドレス部分「http://www.~」を指す場合、「URL」と言ったり「URI」と言ったりしてるのを聞いた事がないでしょうか?一体どちらを使用するのが正しいのか疑問に思う方もいらっしゃると思うので整理しておこうかと思います。

URLとは

  • URLは「Uniform Resource Locator」の略称。
  • URLはURIの部分集合。

URIとは

  • URIは「Uniform Resource Identifier」の略称。
  • RFC3986で規定されている。
  • URIはURLとリソース名を示すURN「Uniform Resource Name」を含む言葉。

正式名称を見てみると「URI」、「URL」、「URN」どれもリソースを表していますが、リソースを識別する意味で使用するのなら「URI」を使用すべきです。