設計者/SEが覚えておきたいJavaと.NETの違いJavaから見た.NET(2)(3/4 ページ)

» 2010年07月06日 00時00分 公開
[高山智史株式会社クロノス]

編集部注:読者の貴重なご指摘により一部コンテンツを削除・改編させていただきました。内容に不備があったことをお詫び申し上げます(2010年7月8日)


JavaScript/Ajaxとの連携

 またリッチクライアントを実現する技術としてJavaScript/Ajaxという選択肢もあります。Javaで、JavaScript/Ajaxアプリケーションを開発するための技術として「GWT(Google Web Toolkit)」があります。グーグルが開発した、JavaでAjaxアプリケーションを開発するためのフレームワークです。


 GWTは、GWT独自のコンパイラでJavaのクラスをWebブラウザがAjaxを表示するのに最適なJavaScriptやHTMLのコードに変換してくれます。これにより開発者は、ほとんどJavaだけでJavaScript/Ajaxアプリケーションを実装可能です。

 ほかには「DWR(Direct Web Remoting)」というJavaとJavaScriptを連携して、Ajaxアプリケーションを開発できるフレームワークがあります。


 JavaScript内で「クラス名.メソッド」と実装することでJavaのメソッドを呼び出すことができます。さらにDWRはSpringStrutsなどのほかのフレームワークと連携する機能を最初から搭載している点も大きな特徴です。

 .NETにも、AjaxなWebアプリケーションの開発に特化した「ASP.NET AJAX」というフレームワークがあります。ASP.NET AJAXはASP.NETの開発手法のままで、アプリケーションをAjaxアプリケーションとして開発できます。クロスブラウザ対応なども内部で自動的に対応してくれます。


 ASP.NET AJAXの大きな特徴として「ASP.NET AJAX Control Toolkit」というAjaxに対応した主要なWebサーバコントロールが提供されています。これにより、JavaScriptのコーディング量が最小限に抑えられます。

 またVisual StudioがjQueryを正式にサポートしたことも、生産性の向上につながるでしょう。

Javaのサーバサイド技術(Webアプリ開発)

 Javaはサーバサイドアプリケーション開発の技術として非常に普及しています。人気の理由としてはJava言語の特徴であるOSを自由に選べることや、Java EEにサーバサイドアプリケーション開発に必要な技術が標準化されていたこと、優秀な開発環境やミドルウェアアプリケーションサーバ)が存在していたことなどが挙げられるでしょう。サーバサイドJavaは以下の複数の技術が組み合わさって実現されています。

サーブレット

 Servletは、Javaプログラムがベースで、Webブラウザからのリクエストを受けて動作し、サーバ上で処理を行います。そして、処理結果を画面表示用のHTMLとして出力します。HTTP通信が可能であればサーブレットを使用できるため、携帯電話などのモバイルやほかのアプリケーションサーバをクライアントとすることもあります。


JSP(Java Server Pages)

 サーブレットを使用すると、プログラム内にHTMLタグが書き込まれます。これによりJavaプログラマがHTMLを使ってデザインを行い、逆にデザイナはJavaプログラムを触らなければなりません。そこで、JavaプログラムとHTMLを分離させるための技術としてJSPが生まれました。

 HTMLの中に「<% 」「 %>」で囲んだタグを使用して、Javaプログラムを埋め込み、Javaプログラムの部分をサーバ上で処理し、結果をHTMLとして返してWebブラウザの画面に表示します。


 サーブレットは手動でコンパイルしますが、JSPは初回実行時にTomcatなどのWebアプリケーションコンテナによって自動でコンパイルされサーブレットとして実行されます。さらに、このときコンパイルした内容を一時ファイルとして保存して2回目以降に利用しているため、パフォーマンス的にもサーブレットに劣りません。

 また、ほとんどのアプリケーションサーバに実行前にコンパイルする「プリコンパイル」という機能がサポートされており、この機能により初回実行時のレスポンスタイムを短縮できます。

 またJSP 2.0からは「EL式(Expression Language)」と呼ばれる埋め込み型の言語が導入され、よりシンプルにコーディングできるようになりました。

JavaBeans

 Javaでは、再利用可能なコンポーネントの開発を可能にするために「JavaBeans」という仕様が規定されています。

EJB(Enterprise JavaBeans)

 EJBはエンタープライズアプリケーションのサーバサイド技術で利用できるコンポーネント技術です。Java EEのサブセットとして規定されており、トランザクション機能、パーシステンス永続化)機能、リモートアクセス機能などが提供されています。


 EJBには、以下の種類があります。

  • Session EJBSession Bean
    ビジネスロジックをセッション単位で実行するオブジェクト。その中でも状態を保持しない「Stateless Session Bean」と状態を保持する「Stateful Session Bean」がある。前者は1回のメソッドで処理が終わるようなものに使用され、後者はセッションごとに連続する処理を行う場合などに使用される
  • Entity EJBEntity Bean
    DBのテーブルごとに永続的なデータを保持するオブジェクト。また、その内容からデータの永続化をEJBコンテナが行う「CMP Entity Bean」とBean自ら行う「BMP Entity Bean」に分けられている
  • Message Driven EJBMessage Driven Bean
    JMS(Java Messaging Service)からのメッセージを受けて呼び出されるオブジェクト。非同期で実行できる

 図2にサーブレットとBeanとJSPの連携を示します。

図2 サーブレットとBeanとJSPの連携 図2 サーブレットとBeanとJSPの連携(記事「ローカルBeanとリモートBean」より)

.NETのWebアプリ開発

 一方.NETでは、Webアプリケーションの開発はVisual Studioを用いてASP.NETをベースとします。ASP.NETは動的Webサイト、Webアプリケーションを開発、運用するためのフレームワークです。ASP.NETを使用することでシンプルなWebサイトから企業システムなどの大規模アプリケーションまで同じ開発環境で構築可能です。

 ASP.NETの特徴として以下のようなものがあります。

Webフォームによるビューの開発

 Visual Studioを利用してWebフォームと呼ばれるWebアプリケーションの外観を構成するUI要素に各種コントロールをドラッグ&ドロップするだけでWebページを開発できます。これによりHTMLなどのコードを書く手間を最小限に抑えられます。

コードビハインド

 Webフォームに設定したWebサーバコントロールの処理ロジックを、.NET Frameworkに対応しているC#Visual Basicなどのプログラミング言語でWebページデザインと分離して開発できます。また、.NET Frameworkに用意されている豊富なクラスライブラリも使用できるため、生産性、保守性が向上します。

.NETにもMVCモデル

 Java EEでは、サーバサイドの技術を完全に分離して開発するために、オブジェクト指向の「MVCモデル」という設計方法を採用しています。またサーバサイドJavaではMVCモデルを採用したフレームワークとしてApacheプロジェクトによって開発されているオープンソースのStrutsがあります。多くの採用実績やノウハウの蓄積により、デファクトスタンダードとして選択されています。

 ASP.NETでもMVCモデルは採用されており、最新のASP.NET 4では「ASP.NET MVC」という新しいWebフレームワークが追加されました。これまでも拡張ライブラリとして利用できましたが、.NET Framework 4からは「ASP.NET MVC 2」として標準機能として搭載されています。

図3 WebアプリケーションにおけるMVCパターン 図3 WebアプリケーションにおけるMVCパターン(書籍「.NET開発テクノロジ入門~.NETの基礎からクラウドテクノロジ Windows Azureまで」日経BPソフトプレス刊より引用)

 ASP.NET MVCでは、前述したWebサーバコントロールは使用しません。その代わり、Webページに「<%」「%>」で囲むブロックを埋め込んで開発します。

 レガシーな方法ですが、ASP.NETによって出力されるコードに比べて可読性が上がり、スタイルシートで設計しやすいなどのメリットがあります。またアプリケーションを機能別に分けたことで単体テストも行いやすくなります。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。