java
                
            
            
               
                  
                     
                        
                            Sun Microsystems社が開発した 
                            
                              オブジェクト指向 プログラミング言語 Java
                           
                           のソフトウェア 
                            
                              開発環境
                           
                           および 
                            
                              実行環境
                           
                           。
                           
                            
                            
                              Javaプラットフォーム
                           
                           とも呼ばれる。
                           
                            
                            狭義には、プログラミング言語 Java のみを指す。
                           
                            
                            プログラミング言語としてのJavaは、従来の言語の良い部分を引き継いで欠点を克服するよう設計されたオブジェクト指向の言語となっており、構文はC およびC++ から多くを引き継いだものとなっている。
                            
                            多くのプログラミング言語ではネイティブコードにコンパイルするプラットフォームに依存した方式をとっている。一方 Javaでは、一旦 バイトコード という中間言語にコンパイルして、プラットフォームごとに用意されたJava仮想マシン
                            
                              (
                              
                                 ※↓
                              
                              )
                           
                           により実行する方式を取ることで、プラットフォームに依存しないプログラミングを可能としている。
                           
                           
                          
                      | 
                   
               
             
          | 
      
      
         
            
                
               クラス
            
            
               
                  
                     | 
                         
                            オブジェクト指向言語で使われるプログラムの部品の単位で、データとその操作手順であるメソッドをまとめた、オブジェクトの雛型を定義したもの。
                            
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               クラスライブラリ
            
            
               
                  
                     | 
                         
                            関連する複数のクラスを一つのファイルにまとめたもの。
                            
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               アプリケーション・サーバ
            
                            クライアント・サーバシステムを、「プレゼンテーション層」、「アプリケーション層」、「データ層」の3層に分割して構築する 
                           
                              3階層システム
                           
                           のプレゼンテーション層を受け持つサーバ。  
                           
                              
                                 
                                    | 
                                       
                                     | 
                                    
                                        
                                          : クライアント(Webブラウザなどのフロントエンド)
                                        
                                     | 
                                  
                                 
                                    | 
                                       
                                     | 
                                    
                                        
                                          :
                                          
                                             アプリケーション・サーバ
                                          
                                        
                                     | 
                                  
                                 
                                    | 
                                       
                                     | 
                                    
                                        
                                          : データベースサーバ
                                        
                                     | 
                                  
                              
                           
 
                           
                            
                           
                              3階層システム
                           
                           は、以前のビジネスロジックを クライアント側 や バックエンド側 に実装する 
                           
                              2階層システム
                           
                           に比べて柔軟性が高く、変更、増強などが容易。
                            現在、クライアントにWebブラウザを用いてHTTPで通信する「Webアプリケーションサーバ」が主流。単にアプリケーションサーバと言う場合、普通はWebアプリケーションサーバを指す。
                            
  Webアプリケーションサーバへのビジネスロジックの実装には、
Java、PHP、Ruby、Python、Perl などが採用されており、現在は、Java(Java EE)を採用したものが主流となっている。
 
                            Citrix による Citrix Presentation Server や .Net サーバ はアプリケーションサーバと呼ばれることは少ない。
                            
  |  
 
  | 
      
      
         
            
                
               アプリケーション・フレームワーク 
            
            
               
                  
                     
                        
                            狭義には、ユーザー・コードを呼び出すクラスやライブラリの集まりを指す。
                            
                            広義には、アプリケーション開発を実現する枠組みを指し、システム開発を支援するツール、コンポーネント群、ドキュメントをはじめ、開発方法論などまでを幅広く含む。
                           
  
                           
                           
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               コンテナ
            
            
               
                  
                     | 
                         
                            ソフトウェアの実行環境(実行するためのソフトウェア)。
                           
  
                            Webコンテナ、EJBコンテナ、DIコンテナなどがある。
                            
                           
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               コンポーネント/ソフトウェア・コンポーネント
            
            
               
                  
                     | 
                         
                            基本的に単体では使用できず、他のプログラムと組み合わせて機能を実現あるいは追加する、ソフトウェアの部品。
                            
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               DI
               
                  
                     (Dependency Injection)
                  
               
                
            
            
          | 
      
      
         
            
                
               DIコンテナ
               
                  
                     (Dependency Injection Container)
                  
               
            
            
               
                  
                     
                        
                            DI に基づいて作られたソフトウェア・コンポーネント群を集中管理するためのソフト。
                            
                            「Spring」や「Seaser2」が有名。
                            
                            次世代のEJB(EJB 3.0)に取り込まれる動きもある、注目される技術。
                            
                           (参考:
                           
                              DIコンテナ
                           
                           
                              < [
                              
                                 ITPro
                              
                              ]
                              
                                 )
                              
                               
                           
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               Java Beans
            
            
               
                  
                     | 
                         
                            Javaで書かれた、再利用可能なソフトウェア・コンポーネント(Bean)を組みあわせてアプリケーションを構築する手法。
                            
                         
                        
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               EJB
               
                  
                     (Enterprise Java Beans)
                  
               
            
            
               
                  
                     | 
                         
                            Java Beans の仕様に、ネットワーク分散型アプリケーションのサーバサイド処理に必要な機能を追加したもの。
                            
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               EJBコンポーネント
               
                  
                     (EJB component)
                  
               
            
            
               
                  
                     | 
                         
                            サーバサイドで動作する、Javaで作成されたプログラム部品で、アプリケーション本来の目的で
                           あるビジネス・ロジックをまとめたもの。
                            
                            EJBコンポーネントは必ずEJBコンテナの上で動作する。
                            
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               EJBコンテナ
               
                  
                     (EJB container)
                  
               
            
            
               
                  
                     | 
                         
                            EJBコンポーネントを動作させるための実行環境。
                           
  
                            EJBコンテナは、「データベースへ・アクセス機能」、「トランザクション管理機能」、「セッション管理機能」、「セキュリティ機能」などをそなえていて、EJBコンポーネントがこれらの機能を用意しなくてもアプリケーションが構築できる。
                            
                           
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               
                  Java servlet
               
            
            
               
                  
                     | 
                         
                            HTML文書などを動的に生成するためにサーバ上で動く、モジュール化されたJavaプログラム。
                           
  
                            サーブレットの実行環境はWebコンテナ、またはサーブレットコンテナと呼ばれる。
                           
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
               
                   
                  JavaServer Pages(JSP)
               
            
            
               
                  
                     
                        
                            HTML内にJavaのコード(アプレットではなくプログラムのコード)を埋め込んでおき、Webサーバでそれを処理して動的にWebページを生成してクライアントに返す、PHP や Microsoft 社の ASP および ASP.NET に似た技術。
                           
  
                           
                           
                                Java を使ったアプリケーションでは、動的なページを作
                              成するた
                              めに、Servlet と JSP を使う。
                            
                           
                               Servlet はJavaのプログラムで、JSP は特殊なタグを追加したHTMLの
                              ファイル。
                            
                           
                               Java EE アプリケーションの多くは、ServletとJSPを組み合
                              わせて使う。 
                               
                            
                            
                            ASPは(ほぼ)IIS専用だが、JSPは様々なWebサーバ用の実行環境が用意されている。
                            
                            特殊なスクリプト言語を覚えることなく、Java言語をそのまま使えるという利点もある。
                            
                           
                         
                      | 
                   
               
             
          | 
      
      
         
            
                
               
                  
                     Webコンテナ(、サーブレットコンテナ)
                  
               
            
            
               
                  
                     
                        
                            Webコンテナは、サーブレットと JSP (JavaServer Pages) の実行環境。
                            
                           
                               
                            
                            サーブレットの実行環境は、
                           
                              Webコンテナ
                           
                           あるいは 
                           
                              サーブレットコンテナ
                           
                           と呼ばれる。
                            
                            これらの言葉は区別されずに使われることが多いが、
                            
                           
                              - 
                                 
                                    サーブレット
                                 
                                 の処理のみを行うものを 
                                 
                                    サーブレットコンテナ
                                 
                              
 
                              - 
                                 
                                    サーブレット
                                 
                                 の処理に加えて 
                                 
                                    JSP
                                 
                                 や 
                                 
                                    HTTPサーバ
                                 
                                 としての機能も含むものを 
                                 
                                    Webコンテナ
                                 
                              
 
                            
                           と呼ぶ傾向がある。
                            
                           
                         
                      | 
                   
               
             
          | 
      
      
         
            
               jarファイル
               
                  (ジャーファイル:Java ARchive File)
               
            
            
             
               
                  
                     
                        
                           
                               Javaで標準的に使用されている圧縮ファイル。
                            
                           
                               クラスファイルなどがZIP形式圧縮されて格納されている。
                            
                           
                               jarファイルになっていれば、Javaが自動的に展開して実行してくれる。
                            
                         
                      | 
                   
               
             
            
          | 
      
      
         
            
               
                  JDKとJRE
               
            
            
               
                  
                     
                        
                           - 
                              
                                 JDK:Java Developer's Kit、
                              
                              J2SE Developer Kit
                              
 
                              
                                 Javaプログラムの開発に必要なセット一式。
                              
                            
                         
                        
                           - 
                              
                                 JRE:Java Runtime Environment
                                 
 
                              
                              
                                 Javaの実行に必要なプログラムのセット。
                              
                               
                            
                         
                         
                         
                        
                           
                              JDK
                           
                            
                           
                              ⊃
                           
                            
                           
                              JRE ・・・JDK は JRE を含む。
                           
                         
                      | 
                   
               
             
          | 
      
      
         
            
               
                  Java SE(J2SE)/Java EE(J2EE)/Java ME(J2ME)
               
            
            
               
                  
                     
                         Java の 実行環境 と 開発環境 のバージョン。
                         
                         Java仮想マシン(JVM)とJava実行環境(JRE)の「Java HotSpot」などを含む。
                         
                        
                        
                        
                        
                        
                           
                               Java EE ⊃ Java SE 
                           
                           
                              ⊃
                           
                           
                              Java ME の関係になっている。
                           
                            
                           
                               Java SE と Java EE にはそれぞれ、
                              
                                 JRE だけ
                              
                              のものと、
                              
                                 JDK まで含む
                              
                              ものがある。
                           
                            
                         
                      | 
                   
               
             
          | 
      
      
         
            
               
                   
                  JVM(Java Virtual Machine)とは
               
            
            
               
                  
                     
                        
                           
                              
                                  Javaで開発されたソフトは、配布時にはJavaバイトコードになっている。
                              
                               
                              
                                  Javaバイトコードは、プラットフォームには非依存だが、実行時には実行環境(プラットフォーム)で実行可能なネイティブコードに変換する必要がある。
                              
                               
                              
                                  Javaバイトコードを、プラットフォームのネイティブコードに変換して実行するソフトウェアがJVM。
                              
                              この
                              
                                 変換のオーバヘッドを少なくして実行速度を向上させる技術として、
                              
                              
                                 JIT
                              
                              
                                 や
                              
                              
                                 HotSpot
                              
                              
                                 がある。
                                  
                                  
                                  Java の開発元である
                              
                           
                           
                              
                                 サン・マイクロシステムズからソースコードライセンスを受けなくても、
                              
                           
                           
                              
                                 Java仮想マシン仕様(Java Virtual Machine Specification)を満たせば独自にJava VMを作ることは可能。
                                  
                                  そのため
                              
                           
                           
                              
                                 Java VMの実装は
                              
                           
                           
                               
                           
                           
                              
                                 、
                              
                           
                           
                              
                                 サン・マイクロシステムズからも
                              
                           
                           
                               
                           
                           
                              
                                 提供されているが、各社が独自のJava VMを作っている。
                                  
                              
                               
                              
                                 
                                    
                                       
                                          
                                             
                                                JIT:
                                             
                                              
                                             
                                                 Javaバイトコードを実行前にまとめて変換することで実行速度を向上させる技術。
                                             
                                              
                                              
                                             
                                                HotSpot:
                                             
                                              
                                             
                                                 Javaバイトコードのうち実行に時間のかかる繰り返し処理などの部分を実行前にあらかじめ変換しておくことで実行速度を向上させる技術。
                                             
                                              
                                          
                                        | 
                                     
                                 
                               
                           
                           (参考1:Java仮想マシン=JVMとは < 
                            
                              http://e-words.jp/w/JVM.html
                           
                           > )
                            
                           (参考2:JITコンパイラとは < 
                            
                              http://e-words.jp/w/JITE382B3E383B3E38391E382A4E383A9.html
                           
                           > )
                            
                           (参考3:HotSpotとは < 
                            
                              http://e-words.jp/w/HotSpot.html
                           
                           > )
                           
                          
                      | 
                   
               
             
          |