Archive for the ‘Java’ Category

  1. Hello, EL World!

    Posted on 2月 18th, 2012 by cx20

    EL

    EL(Expression Language)は Java EE 周辺技術の一つで JSP 2.0 より導入された組み込み言語である。EL式または式言語と呼ばれている。
    JSP から Java コード(スクリプトレット)を取り除き、コードの可読性を向上させる為に考案された。
    ${} の形式で式や変数を記述する。実際の変数はスコープに設定されている属性として扱われる。
    JSP 2.1 より JSF の #{} の形式(遅延評価型)を取り入れた Unified EL が利用可能となっている。
    なお、Java EE 周辺技術のバージョンは以下のような対応になっている。

    J2EE Servlet JSP EL JSTL JSF EJB
    J2EE 1.2 2.2 1.1 1.1
    J2EE 1.3 2.3 1.2 1.0 2.0
    J2EE 1.4 2.4 2.0 2.0 1.1 2.1
    Java EE 5 2.5 2.1 2.1 1.2 1.2 3.0
    Java EE 6 3.0 2.2 2.2 1.2 2.0 3.1

    ソースコード(EL)

    <%@ page contentType="text/html"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
      <head>
        <title>Hello, World!</title>
      </head>
      <body>
        <c:set var="message" value="EL" scope="page" />
        <p>Hello, <c:out value="${message}"/> World!</p>
      </body>
    </html>

    上記 JSTL コードは、以下の JSP コードに相当する。

    ソースコード(JSP)

    <html>
      <head>
        <title>Hello, World!</title>
      </head>
      <body>
        <% pageContext.setAttribute("message","EL"); %>
        <p>Hello, <%= pageContext.getAttribute("message") %> World!</p>
      </body>
    </html>

    実行方法

    ディレクトリ構成
    /hello               … 公開用フォルダ
        /WEB-INF         … アプリケーション設定ファイル配置場所
            /lib         … ライブラリ配置場所
     
    1. WEB-INF/lib にライブラリを配置
       jstl.jar
       standard.jar
    2. Tomcat の公開フォルダに JSP ファイルを配置
    3. ブラウザで表示
       http://localhost:8080/hello/hello.jsp

    実行結果

    Hello, JSTL World!
  2. Hello, JSF World!

    Posted on 2月 17th, 2012 by cx20

    JSF

    JSF(JavaServer Faces)は Java EE 周辺技術の一つで Java ベースの Web アプリケーションフレームワークである。
    一般的な Web アプリケーションフレームワークが MVC の形式であるのに対して、JSF はコンポーネントベースとなっている。考え方は ASP.NET に近い。
    なお、Java EE 周辺技術のバージョンは以下のような対応になっている。

    J2EE Servlet JSP EL JSTL JSF EJB
    J2EE 1.2 2.2 1.1 1.1
    J2EE 1.3 2.3 1.2 1.0 2.0
    J2EE 1.4 2.4 2.0 2.0 1.1 2.1
    Java EE 5 2.5 2.1 2.1 1.2 1.2 3.0
    Java EE 6 3.0 2.2 2.2 1.2 2.0 3.1

    ソースコード(JSF)

    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <html>
      <head>
        <title>Hello, World!</title>
      </head>
      <body>
        <f:view>
          <h:outputText value="Hello, JSF World!" />
        </f:view>
      </body>
    </html>

    実行方法

    ディレクトリ構成
    /hello               … 公開用フォルダ
        /WEB-INF         … アプリケーション設定ファイル配置場所
            /lib         … ライブラリ配置場所
     
    1. WEB-INF/lib にライブラリを配置
       myfaces-api.jar
       myfaces-impl.jar
    2. Tomcat の公開フォルダに JSP ファイルを配置
    3. WEB-INF/web.xml の記載
    <?xml versino="1.0"?>
    <web-app>
      <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
      </servlet-mapping>
    </web-app>
    4. WEB-INF/faces-config.xml の記載
    <?xml version="1.0"?>
    <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
      version="1.2">
    </faces-config>
    5. ブラウザで表示
       http://localhost:8080/hello/hello.jsf

    実行結果

    Hello, JSF World!
  3. Hello, JSTL World!

    Posted on 2月 16th, 2012 by cx20

    JSTL

    JSTL(JavaServer Pages Standard Tag Library)は、Jakarta プロジェクトにより開発された JSP の標準タグライブラリである。Java EE 5 より正式に標準仕様として取り入れられた。
    タグライブラリは JSP 内の Java コードをカプセル化したものである。
    なお、Java EE 周辺技術のバージョンは以下のような対応になっている。

    J2EE Servlet JSP EL JSTL JSF EJB
    J2EE 1.2 2.2 1.1 1.1
    J2EE 1.3 2.3 1.2 1.0 2.0
    J2EE 1.4 2.4 2.0 2.0 1.1 2.1
    Java EE 5 2.5 2.1 2.1 1.2 1.2 3.0
    Java EE 6 3.0 2.2 2.2 1.2 2.0 3.1

    ソースコード(JSTL)

    <%@ page contentType="text/html"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
      <head>
        <title>Hello, World!</title>
      </head>
      <body>
        <p><c:out value="Hello, JSTL World!"/></p>
      </body>
    </html>

    上記 JSTL コードは、以下の JSP コードに相当する。

    ソースコード(JSP)

    <html>
      <head>
        <title>Hello, World!</title>
      </head>
      <body>
        <p><% out.print( "Hello, JSTL World!" ); %></p>
      </body>
    </html>

    実行方法

    ディレクトリ構成
    /hello               … 公開用フォルダ
        /WEB-INF         … アプリケーション設定ファイル配置場所
            /lib         … ライブラリ配置場所
     
    1. WEB-INF/lib にライブラリを配置
       jstl.jar
       standard.jar
    2. Tomcat の公開フォルダに JSP ファイルを配置
    3. ブラウザで表示
       http://localhost:8080/hello/hello.jsp

    実行結果

    Hello, JSTL World!
  4. Hello, JSP World!

    Posted on 2月 15th, 2012 by cx20

    JSP

    JSP(JavaServer Pages)は Java EE 周辺技術の一つで Web サーバーで Java プログラムを動作させる技術である。
    JSP は HTML に Java コードを埋め込む形で記述する。実行時に Java Servlet のコードが生成されコンパイルされる。
    実行環境としては Java Servlet と同様に Apache Tomcat が用いられることが多い。
    JSP の類似技術としては、Java Servlet、PHP、ASP、ASP.NET 等がある。
    なお、Java EE 周辺技術のバージョンは以下のような対応になっている。

    J2EE Servlet JSP EL JSTL JSF EJB
    J2EE 1.2 2.2 1.1 1.1
    J2EE 1.3 2.3 1.2 1.0 2.0
    J2EE 1.4 2.4 2.0 2.0 1.1 2.1
    Java EE 5 2.5 2.1 2.1 1.2 1.2 3.0
    Java EE 6 3.0 2.2 2.2 1.2 2.0 3.1

    ソースコード

    <html>
      <head>
        <title>Hello, World!</title>
      </head>
      <body>
        <p><% out.print( "Hello, JSP World!" ); %></p>
      </body>
    </html>

    上記 JSP コードは、以下の Java Servlet コードと同様である。実際には実行時に Java クラスファイルにコンパイルされ実行される。

    ソースコード(Java)

    package org.apache.jsp.jsp;
     
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;
     
    public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase
        implements org.apache.jasper.runtime.JspSourceDependent {
     
      private static final javax.servlet.jsp.JspFactory _jspxFactory =
              javax.servlet.jsp.JspFactory.getDefaultFactory();
     
      private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
     
      private javax.el.ExpressionFactory _el_expressionfactory;
      private org.apache.tomcat.InstanceManager _jsp_instancemanager;
     
      public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
        return _jspx_dependants;
      }
     
      public void _jspInit() {
        _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
        _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
      }
     
      public void _jspDestroy() {
      }
     
      public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
            throws java.io.IOException, javax.servlet.ServletException {
     
        final javax.servlet.jsp.PageContext pageContext;
        javax.servlet.http.HttpSession session = null;
        final javax.servlet.ServletContext application;
        final javax.servlet.ServletConfig config;
        javax.servlet.jsp.JspWriter out = null;
        final java.lang.Object page = this;
        javax.servlet.jsp.JspWriter _jspx_out = null;
        javax.servlet.jsp.PageContext _jspx_page_context = null;
     
     
        try {
          response.setContentType("text/html");
          pageContext = _jspxFactory.getPageContext(this, request, response,
          			null, true, 8192, true);
          _jspx_page_context = pageContext;
          application = pageContext.getServletContext();
          config = pageContext.getServletConfig();
          session = pageContext.getSession();
          out = pageContext.getOut();
          _jspx_out = out;
     
          out.write("<html>rn");
          out.write("  <head>rn");
          out.write("    <title>Hello, World!</title>rn");
          out.write("  </head>rn");
          out.write("  <body>rn");
          out.write("    <p>");
          out.print( "Hello, JSP World!" );
          out.write("</p>rn");
          out.write("  </body>rn");
          out.write("</html> ");
        } catch (java.lang.Throwable t) {
          if (!(t instanceof javax.servlet.jsp.SkipPageException)){
            out = _jspx_out;
            if (out != null && out.getBufferSize() != 0)
              try { out.clearBuffer(); } catch (java.io.IOException e) {}
            if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
          }
        } finally {
          _jspxFactory.releasePageContext(_jspx_page_context);
        }
      }
    }

    実行方法

    1. Tomcat の公開フォルダ に配置
    2. ブラウザで表示
       http://localhost:8080/hello/hello.jsp

    実行結果

    Hello, JSP World!
  5. Hello, Java Servlet World!

    Posted on 2月 14th, 2012 by cx20

    Java Servlet

    Java Servlet は Java EE 周辺技術の一つで Web サーバーで Java プログラムを動作させる技術である。
    サーブレットの実行環境は Web コンテナまたはサーブレットコンテナと呼ばれ、Apache Tomcat が使われることが多い。Tomcat は雄猫を意味する。
    Java Servlet の類似技術としては、JSP(JavaServer Pages)、PHP、ASP、APS.NET 等がある。
    CGI が実行時にプロセスを起動するのに対して、Java Servlet はメモリに常駐して実行時に軽量スレッドとして動作する為、効率が良い。
    なお、Java EE 周辺技術のバージョンは以下のような対応になっている。

    J2EE Servlet JSP EL JSTL JSF EJB
    J2EE 1.2 2.2 1.1 1.1
    J2EE 1.3 2.3 1.2 1.0 2.0
    J2EE 1.4 2.4 2.0 2.0 1.1 2.1
    Java EE 5 2.5 2.1 2.1 1.2 1.2 3.0
    Java EE 6 3.0 2.2 2.2 1.2 2.0 3.1

    ソースコード(Java)

    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
     
    public class Hello extends HttpServlet {
        public void doGet( HttpServletRequest request, HttpServletResponse response )
            throws ServletException,IOException {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println( "<html>" );
            out.println( "  <head>" );
            out.println( "    <title>Hello, World!</title>" );
            out.println( "  </head>" );
            out.println( "  <body>" );
            out.println( "    <p>Hello, Java Servlet World!</p>" );
            out.println( "  </body>" );
            out.println( "</html>" );
        }
    }

    実行方法

    ディレクトリ構成
    /hello               … 公開用フォルダ
        /WEB-INF         … アプリケーション設定ファイル配置場所
            /classes     … クラスファイル配置場所
     
    1. モジュールのコンパイル
        javac -cp $CATALINA_HOME/lib/servlet-api.jar:. Hello.java
    2. モジュールの配置
       WEB-INF/classes
    3. WEB-INF/web.xml の記載
    <?xml version="1.0"?>
    <web-app>
      <servlet>
        <servlet-name>Hello</servlet-name>
        <servlet-class>Hello</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>Hello</servlet-name>
        <url-pattern>/servlet/Hello</url-pattern>
      </servlet-mapping>
    </web-app>
    4. ブラウザで表示
       http://localhost/hello/servlet/Hello

    実行結果

    Hello, Java Servlet World!
  6. Hello, Fantom World!

    Posted on 1月 27th, 2012 by cx20

    Fantom

    Fantom は Java VM もしくは .NET 共通言語ランタイム上で動作するオブジェクト指向言語である。構文は Java や C# に似ている。
    言語の名前は当初、作者が住んでいる住所にちなんで「Fan」と付けられたが、検索しやすいように「Fantom」に変更された。

    ソースコード

    #!/usr/bin/env fan
    class Hello
    {
        static Void main()
        {
            echo("Hello, Fantom World!")
        }
    }

    実行方法(スクリプトファイルを指定して実行)

    $ fan hello.fan

    実行方法(実行権限を付与して実行)

    $ chmod +x hello.fan
    $ ./hello.fan

    実行方法(Java VM で実行)

    $ fan -version --Druntime=java
    Fantom Launcher
    Copyright (c) 2006-2011, Brian Frank and Andy Frank
    Licensed under the Academic Free License version 3.0
     
    Java Runtime:
      java.version:    1.6.0_29
      java.vm.name:    Java HotSpot(TM) 64-Bit Server VM
      java.vm.vendor:  Apple Inc.
      java.vm.version: 20.4-b02-402
      java.home:       /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
      fan.platform:    macosx-x86_64
      fan.version:     1.0.61
      fan.env:         sys::BootEnv
      fan.home:        /usr/local/Cellar/fantom/1.0.61/libexec
     
    $ fan --Druntime=java hello.fan

    実行方法(.NET Framework で実行)

    C:¥> fan -version --Druntime=dotnet
    Fantom Launcher
    Copyright (c) 2006-2011, Brian Frank and Andy Frank
    Licensed under the Academic Free License version 3.0
     
    .NET Runtime:
      clr.version:  2.0.50727.5448
      sys.platform: win32-x86
      sys.version:  1.0.61
     
    C:¥> fan --Druntime=dotnet hello.fan

    実行結果

    Hello, Fantom World!
  7. Hello, Rhino World!

    Posted on 1月 18th, 2012 by cx20

    Rhino

    Rhino は Netscape Communications によって開発された Java による JavaScript 実装である。
    JavaScript の構文が使える他、Java のライブラリが利用できる。
    現在は、Mozillaプロジェクトによって保守されており、JDK の JavaScript エンジンや OpenOffice のマクロ言語にも採用されている。
    名前の由来はオライリー社の JavaScript 本の表紙が「サイ(Rhinoceros)」であった為。

    ソースコード

    #!/usr/bin/env rhino
    print("Hello, Rhino World!");

    ソースコード(Java ライブラリを使用した場合)

    #!/usr/bin/env rhino
    java.lang.System.out.println("Hello, Rhino World!");

    実行方法(スクリプトとして実行)

    $ rhino hello.js

    実行方法(実行権限を付与して実行)

    $ chmod +x hello.js
    $ ./hello.js

    コンパイル&実行方法(Java クラスとして実行)

    コンパイルする場合はソースの1行目の「#!/usr/bin/env rhino」は不要(存在すると構文エラーとなる。)

    $ java -cp $RHINO_HOME/js.jar:. org.mozilla.javascript.tools.jsc.Main hello.js
    $ java -cp $RHINO_HOME/js.jar:. hello

    実行方法(Scripting for Java Platform で実行)

    jrunscript(※)は JDK 6 に組み込まれたスクリプトエンジンを実行する為のシェルである。
    ※ 試験的なツールである為、将来のバージョンで使えなくなる可能性がある。
    インストールされているスクリプトエンジンを確認する場合は「jrunscript -q」を実行する。

    $ jrunscript -q
    Language ECMAScript 1.6 implemention "Mozilla Rhino" 1.6 release 2

    jrunscript から実行する場合はソースの1行目の「#!/usr/bin/env rhino」は不要(存在すると構文エラーとなる。)

    $ jrunscript -l js -f hello.js

    実行結果

    Hello, Rhino World!
  8. Hello, Tcl/Java World!

    Posted on 1月 16th, 2012 by cx20

    Tcl/Java

    Tcl/Java は Java から Tcl コマンドを利用できる「Jacl( Java Command Language)」と、Tcl スクリプトから Java ライブラリが使用できる拡張ライブラリ「Tcl Blend」からなるプロジェクトである。
    なお、Java ライブラリが使用できるスクリプト言語としては他に Groovy、JRuby、Jython などがある。

    ソースコード

    #!/usr/bin/env jaclsh
    puts "Hello, Tcl/Java World!"

    ソースコード(Java ライブラリを使用)

    #!/usr/bin/env jaclsh
    package require java
    [java::field System out] println "Hello, Tcl/Java World!"

    実行方法(スクリプトファイルを指定して実行)

    $ jaclsh hello.tcl

    実行方法(実行権限を付与して実行)

    $ chmod +x hello.tcl
    $ ./hello.tcl

    実行結果

    Hello, Tcl/Java World!
  9. Hello, BeanShell World!

    Posted on 1月 15th, 2012 by cx20

    BeanShell

    BeanShell は JavaVM 上で動作するスクリプト言語である。
    なお、Java ライブラリが使用できるスクリプト言語としては他に Groovy、JRuby、Jython などがある。

    ソースコード

    System.out.println( "Hello, BeanShell World!" );

    実行方法(スクリプトファイルを指定して実行)

    C:¥> java -cp bsh-2.0b4.jar;. bsh.Interpreter hello.bsh

    実行結果

    Hello, BeanShell World!
  10. Hello, Clojure World!

    Posted on 1月 10th, 2012 by cx20

    Clojure

    Clojure は Lisp の方言の一つ。Java VM 上で動作する。名前の由来は Closure + java から。
    Lisp の構文が使える他、Java のライブラリが利用できる。

    ソースコード

    #!/usr/bin/env clj
    (println "Hello, Clojure World!")

    ソースコード(Java ライブラリを使用した場合)

    #!/usr/bin/env clj
    (.println java.lang.System/out "Hello, Clojure World!")

    実行方法(スクリプトファイルを指定して実行)

    $ clj hello.clj

    実行方法(実行権限を付与して実行)

    $ chmod +x ./hello.clj
    $ ./hello.clj

    実行結果

    Hello, Clojure World!