<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>java言語の基礎知識</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/" />
    <link rel="self" type="application/atom+xml" href="http://kei.candypop.jp/java/atom.xml" />
    <id>tag:kei.candypop.jp,2009-01-27:/java//1</id>
    <updated>2009-01-28T09:32:21Z</updated>
    <subtitle>Java言語の基礎知識や学習方法、およびその周辺ソフト・周辺技術についての解説しています。ジャバ言語を完全マスターして徹底活用する際のご参考にして下さい。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.1</generator>

<entry>
    <title>Apache Tomcat</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/apache-tomcat.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.36</id>

    <published>2009-01-28T09:29:33Z</published>
    <updated>2009-01-28T09:32:21Z</updated>

    <summary>Apache Tomcat （アパッチトムキャット）は、サーブレットやJSPを実行するためのサーブレットコンテナであり、HTTPサーバを内部に含んでいるソフトウェアで、Apache Software Foundation (ASF)でOSS (Open Source Software)で開発されています。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="apachetomcat" label="Apache Tomcat" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="アパッチトムキャット" label="アパッチ トムキャット" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[Apache Tomcat （アパッチ トムキャット）は、サーブレットやJSPを実行するためのサーブレットコンテナであり、HTTPサーバを内部に含んでいるソフトウェアで、Apache Software Foundation (ASF)でOSS (Open Source Software)で開発されています。なお、フリーソフトウェアではありますが、使用許諾条件（オープンソースライセンス）はApache software licenseに従うので注意が企業レベルで開発を行う場合は注意が必要です。<br /><br /><br />サーブレットコンテナには有償のものからTomcatのようにオープンソースなものまでたくさんありますが、Tomcatの特長としては、フリーソフトウェアであるため、Web コンテナとしては最も広く普及しており、最新のJSP仕様をサポートし、安定性も高いということがあげられます。そのため、「インターネット上や書店などでTomcatに関する豊富な情報を得られる」「Tomcatの経験を持つJavaエンジニアが多い」という利点が得られるのです。<br /><br /><br />もちろん、基幹業務向けの大規模なWebアプリケーションでは、高度な信頼性とスケーラビリティ、そしてベンダー・サポートが要求されるため、商用製品のWebコンテナ（アプリケーション・サーバ）を利用するケースが一般的です。とはいえども、Tomcatもプロダクション利用に十分な安定性とパフォーマンスを実現しており、小規模～中規模のWebアプリケーション開発における業界標準ツールとして定着しています。また、Tomcatは単独でWebサーバとして動作することも可能ですが、ApacheやIISのプラグインと動作できるようになっており、実際にはプラグインとしての利用が主流です。 ]]>
        
    </content>
</entry>

<entry>
    <title>Webコンテナ、サーブレットコンテナ</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/web.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.35</id>

    <published>2009-01-28T09:26:16Z</published>
    <updated>2009-01-28T09:29:10Z</updated>

    <summary>純粋にサーブレットの処理を行うものをサーブレットコンテナと呼び、サーブレットコンテナを含みJSPやHTTPサーバとしての機能も含むものをWebコンテナと呼ぶ傾向があります。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webコンテナ" label="Webコンテナ" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="サーブレットコンテナ" label="サーブレットコンテナ" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[サーブレットの実行環境（実行するためのソフトウェア）はWebコンテナ、またはサーブレットコンテナと呼ばれ、これらの言葉はあまり区別されずに使われることも多いですが、純粋にサーブレットの処理を行うものをサーブレットコンテナと呼び、サーブレットコンテナを含みJSPやHTTPサーバとしての機能も含むものをWebコンテナと呼ぶ傾向があります。<br /><br /><br />Webコンテナとしては、Apache Tomcat, Jetty, BEA WebLogic Server, IBM WebSphere Application Server, Resin, JBossなどがあり、Javaでは特にApache Tomcatが有名です。Java Platform, Enterprise Edition（Java EE）では、Webコンテナは 「Java EEアーキテクチャのWebコンポーネント規約を実装」しており、この規約はコンピュータセキュリティ、並列性、ライフサイクル管理、セッション管理、デプロイやその他のサービスを含むWebコンポーネントの実行環境を規定います。<br /><br /><br />ライフサイクル管理とは、一度ロードされるとメモリ上に残って、2回目以降の処理が速くなり、ローディングに際し最初に一度だけ実施する処理や、メモリから削除される直前に実施する処理などが定義できることを示します。CGIでは前述のとおり、要求があるたびに毎回ロードされます。セッション管理とは同一のクライアントとの一連の処理の間、データを保持しておく仕組みで、CGIではアプリケーションプログラムが自分で保持しなければならないため、プログラムが煩雑になります。 ]]>
        
    </content>
</entry>

<entry>
    <title>JavaServer Pages (JSP)</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/javaserver-pages-jsp.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.34</id>

    <published>2009-01-28T09:23:13Z</published>
    <updated>2009-01-28T09:25:34Z</updated>

    <summary>JavaServer Pages ( JSP ) は、HTML内にJavaのコードを埋め込んでおき、Webサーバで動的にウェブページを生成してクライアントに返す技術のことを指します。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javaserverpages" label="JavaServer Pages" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jsp" label="JSP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[JavaServer Pages ( JSP ) は、HTML内にJavaのコードを埋め込んでおき、Webサーバで動的にウェブページを生成してクライアントに返す技術のことを指します。サーブレットと違い、HTMLの中でデザイン部分とプログラム部分を分けて書くことができるため、ある程度までウェブデザイナの負担を減らすこともできる。類似技術としてPHP、ASP、ASP、.NETなどがあります。<br /><br /><br />サーブレットの技術の延長としてJSPがあり、JSPはサーブレットを自動生成して動作しているため、厳密に言えばサーブレットとJSPは違う技術なのですが、これらは組み合わせて使うのが一般的なため、JSPもサーブレットの一部として扱われることが多いです。クライアントからのJSPの実行がリクエストされると、アプリケーションサーバのサーブレットコンテナはJSPのソースファイルをサーブレットのソースコードに変換し、そしてさらに、そのソースコードをその場でコンパイルして実行し、結果をクライアントに返信します。<br /><br /><br />このため、最初はコンパイルの時間がかかるが、いちどコンパイルが実行されると2回目以降は必要なくなるため、結果としてアクセス速度が早くなります。また、結果は通常のHTML形式になるため、Webブラウザに特殊な機能を組みこむことなくWebアプリケーションを構築でき、開発者にとっても、利用者にとっても、非常に負担が少なくできます。 ]]>
        
    </content>
</entry>

<entry>
    <title>Java サーブレット</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/java-7.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.33</id>

    <published>2009-01-28T09:21:13Z</published>
    <updated>2009-01-28T09:22:34Z</updated>

    <summary>Java Servlet（ジャバサーブレット）とは、Javaを用いて、ウェブページのためのHTML文書などを動的に生成するサーバ上で動くプログラム、またはその仕様のことを指します。これはJava EEの一機能という位置づけになっていて、単にサーブレットと呼ばれることが多いです。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="サーブレット" label="サーブレット" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[Java Servlet（ジャバ サーブレット）とは、Javaを用いて、ウェブページのためのHTML文書などを動的に生成するサーバ上で動くプログラム、またはその仕様のことを指します。これはJava EEの一機能という位置づけになっていて、単にサーブレットと呼ばれることが多いです。<br /><br /><br />似たような技術（すなわち対抗技術）としてはPerlなどを用いたCGIが特に有名で、他に、PHPプログラムのプロセスをApache HTTP Server上で動かすことができるmod_phpなどのモジュール、マイクロソフトが提供するASPなどがあります。<br /><br /><br />CGIがクライアントのリクエストのたびに新しいプロセスを起動するのに対して、サーブレットはメモリに常駐して、リクエストのたびにプロセスより軽量なスレッドを起動するので、非常に効率がよく、また、サーブレットはJavaで書かれているのでさまざまなプラットフォームで使うことができるというメリットがあります。<br /><br /><br />またJavaはもともとネットワーク環境との親和性が高く、Webアプリケーションといえば、サーバ・サイドで実行されるJavaアプリケーションのことだといってよい状況にあり、Microsoft.NetやPerl、Pythonなども使われることはありますが、企業の業務開発ではJavaでプログラミングされることがほとんどです。この技術を用いてショッピングサイトやオンラインバンキングなどをはじめとする多種多様な動的なWebサイトが構築されています。 ]]>
        
    </content>
</entry>

<entry>
    <title>Javaで音楽を扱う方法</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/java-6.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.32</id>

    <published>2009-01-28T09:17:03Z</published>
    <updated>2009-01-28T09:20:31Z</updated>

    <summary>Javaで音楽を扱う方法について解説しています。MIDIや音声の簡単な録音・再生の程度であればいいのですが、音響合成のレベルまで行くと発振器（オシレーター）の部分から自作しなくてはならず大変ですので、是非ともご参考にして下さい。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="扱う" label="扱う" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="方法" label="方法" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="音楽" label="音楽" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[ここでは、「Javaで音楽を扱う方法」を解説します。<br /><br /><br />Javaで音楽を扱うのは、画像やネットワークを扱うのに比べて少々難しいところがあります。というのも、サンの公式のライブラリである、Java Sound APIに含まれるは音楽に関してはかなり基本的な機能しか実装されていないからです。MIDIや音声の簡単な録音、再生の程度であれば、それで十分まかなえるのですが、音響合成のレベルまで行くと、発振器（オシレーター）の部分から自作しなくてはならず、非常に大変です。<br /><br /><br />しかし、幸いその辺りを網羅してくれているサードパーティ製のパッケージが2種類出ており、それらを利用することでMIDIシーケンサーやオシレーターから音色をつくれるシンセサイザーの作成が出来るようになります。そのサードパーティ製のパッケージにはjMusic、Jsynthの2つがありますが、jMusicはオープンソースで無料で使用することが出来ますが、開発が2004年でストップしています。そのため、オーディオ関連の最新機能には対応していないのが難点です。<br /><br /><br />逆に、JSynthはASIO等の最新機能にも対応していますが、個人用途でもJava Appletとして公開する場合は有償となってしまいます。使い分けとしては、より実用的な音響合成を求めるならばJsynで、趣味の範囲の音響合成ならjMusicで、という形が一番無難でしょう。 ]]>
        
    </content>
</entry>

<entry>
    <title>Javaの学習方法 上級者編</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/java-5.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.31</id>

    <published>2009-01-28T09:05:49Z</published>
    <updated>2009-01-28T09:08:41Z</updated>

    <summary>上級者向けのJavaの学習方法について解説しています。学習指針として使える、プログラムの分野、ジャンルとそれに関係するパッケージを示していきたいと思います。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="上級者" label="上級者" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="学習" label="学習" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="方法" label="方法" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[GUIプログラミング及びネットワークプログラミングを一通り学んだあとは、後はもう個々人が専門としてやりたいことを学習していけばよいでしょう。次に、学習指針として使える、プログラムの分野、ジャンルとそれに関係するパッケージを示していきたいと思います。<br /><br /><br />さらにここから画像処理、コンピューターグラフィックを扱っていきたいならば、Java 2D、Java3D、JOGL（Java OpenGL）、JAI（Java Advanced Imaging）等を、音楽などを扱いたい場合はJava Sound APIやjMusic、Jsynth等を、もっと実用的なネットワークを扱いたいならば、Peer to Peer(P2P)を扱うJXTAや、分散コンピューティングを扱うJMX（Java Management Extensions）など、データベースならばJDBC、WebアプリケーションならばJava サーブレット、JSP等を勉強すると良いでしょう。<br /><br /><br />よほど専門的すぎるもので無い限り、以上の技術に関してはそれぞれ対応する専門書籍がいくつか出ているので、それを参考にするとよいと思われます。また、より深く勉強するための情報収集のために、特定のパッケージについてのメーリングリストに加入すると、バグや新仕様に関する、より詳しい情報が得られることでしょうし、あるいは、積極的にセミナーやワークショップ、コンベンションなどに参加すれば より先進的な技術が学べることでしょう。ここより後ろの項目では、以上の項目の中から、幾つか項目をピックアップして、関連技術の紹介をしていきたいとおもいます。 ]]>
        
    </content>
</entry>

<entry>
    <title>統合開発環境Netbeansについて</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/netbeans.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.30</id>

    <published>2009-01-28T09:02:35Z</published>
    <updated>2009-01-28T09:04:37Z</updated>

    <summary>統合開発環境Netbeansについて解説しています。この統合開発環境は、NetBeans Platformを利用して開発されており、様々なモジュールを組み込むことが可能で、NetBeansの特徴の一つであるGUIエディタ（Project Matisse）もその一つです。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="netbeans" label="Netbeans" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="統合開発環境" label="統合開発環境" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[NetBeans（ネットビーンズ）とは、サン・マイクロシステムズを中心としたコミュニティにより開発されているJava用オープンソース統合開発環境（IDE）です。この統合開発環境は、NetBeans Platformを利用して開発されており、様々なモジュールを組み込むことが可能で、NetBeansの特徴の一つであるGUIエディタ（Project Matisse）もその一つです。<br /><br /><br />統合開発環境自体がJavaで書かれていることから、Java VMを搭載したオペレーティングシステム上で動作が可能です。ほぼ100%Javaで書かれていたため、以前は動作が重いと不評であったが、バージョン4.0以降はJavaVM自体の大幅な高速化もあって、ネイティブな環境との速度差は感じないとされています。<br /><br /><br />Java統合開発環境として既に広く使われているEclipseと比較されることが多く、現状、シェア、多機能性、プラグインの豊富さは、Eclipseに今のところは座を譲っています。NetBeansは3.51までJava Look&amp;Feelを使用していたため、特にWindowsユーザーに受け入れられにくかったようで、3.6でLook&amp;FeelをSystemLook&amp;Feelに変更したことにより、ユーザーが増加しはじめたようです。<br /><br /><br />なお、4.0からは、Java SE/EEのリファレンス的な開発環境としての側面が強まっており、。5.5からは、WebサービスやパーシスタンスAPI等に対するスムーズな開発を可能にしており、UMLやJSFのビジュアル開発なども取り込まれました。また、Eclipseと異なり、6.5以降はML(多言語)版が最初から用意されており、日本語化をせずにすむというのがメリットとしてあげられるでしょう。 ]]>
        
    </content>
</entry>

<entry>
    <title>統合開発環境Eclipseについて</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/eclipse.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.29</id>

    <published>2009-01-28T08:59:53Z</published>
    <updated>2009-01-28T09:02:01Z</updated>

    <summary>統合開発環境Eclipseについて解説しています。統合環境にプラグインとしてさまざまな機能を組み込むことができるよう設計されており、その拡張性は非常に高く、Java開発環境自体が標準添付のプラグインとして実装されているほどです。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="eclipse" label="Eclipse" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="統合開発環境" label="統合開発環境" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[Eclipse は IBM が開発した 統合開発環境(IDE)。オープンソースに寄贈されて開発が進められています。統合環境にプラグインとしてさまざまな機能を組み込むことができるよう設計されており、その拡張性は非常に高く、Java開発環境自体が標準添付のプラグインとして実装されているほどであり、プラグイン次第でC++やPHP、Perl、C#、D言語、TeX、Python、Ruby、JavaScript、COBOL、AspectJなど多様な言語への対応が可能となっています。<br /><br /><br />機能としてはデバッグ・ステップ実行、リファクタリング機能、のほか、クラス名・メソッド名・変数名の補完、import文の整理・自動生成などのコード編集支援機能、JUnitやビルドシステムApache Antと連携機能を備えています。またよく使用されるプラグインとして、Tomcat, Java EEなどのウェブ系開発に必要なものが一通りそろっているWTP(Web Tools Platform)プラグイン、UMLのユースケース図, クラス図, シーケンス図, コラボレーション図, 配置図などを編集、およびクラス図などからJavaコードの生成等ができるUMLプラグイン、EclipseでAWT/Swing/SWTのGUI開発ができるVE(Visual Editor)などがあげられる。<br /><br /><br />数年前までJava 開発プラットフォームとしてはデファクトスタンダードの地位にあり、いまでもシェアはかなり大きいといわれています。IBM の WSAD (WebSphere Studio Application Developer ) とその後継製品である RAD (Rational Application Developer for WebSphere Software) も、Eclipse ベースでワークベンチを追加したものです。<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>Javaの統合開発環境</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/java-4.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.28</id>

    <published>2009-01-28T08:56:55Z</published>
    <updated>2009-01-28T08:59:04Z</updated>

    <summary>Javaの統合開発環境について解説しています。プログラミングに慣れてくると、いちいち「javac ～」と打つのが非常に面倒になってきます。そういったコンパイル作業等を自動でやってくれるようになるのが、&quot;統合開発環境&quot;です。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="統合開発環境" label="統合開発環境" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[初心者向けのプログラミング学習では、大抵DOSプロンプトなどのコマンドラインでコンパイルを行っていたことでしょうが、プログラミングに慣れてくると、いちいち「javac ～」と打つのが非常に面倒になってきます。そういったコンパイル作業等を自動でやってくれるようになるのが、"統合開発環境"です。<br /><br /><br />またコンパイル作業だけでなく、プログラムの中で、一時停止して、変数の状態を確認できるようにするデバッグ機能、クラスの名前を変更したとき、プログラム内も自動的に修正してくれるリファクタリング機能などの便利な機能があるため、特にゲーム作成をはじめとする大規模なプログラミングでは必要不可欠といえるでしょう。<br /><br /><br />Java統合開発環境として有名なものに、IBMによって作られた「Eclipse」、Javaの開発元であるSun Microsystemsによって作られた「Netbeans」があります。数年前まではNetbeansは外観がとっつきづらく、また動作が重い等との理由で、Eclipseのほうがシェアが上でしたが、最近は動作も軽くなったようで、シェアも徐々に拮抗してきているようです。<br /><br /><br />またNetbeansは標準で日本語に対応しているのに対し、Eclipseはメニュー等を日本語化するのに日本語化パッチを当てるなどの手間掛かるので、それがネックになっているようです。しかし、Eclipseは昔から使われていただけあって、ネット上に日本語のwikiが存在し、こまめに情報が更新されてたり、インストールの手引きなどが載っている等のメリットがあります。 ]]>
        
    </content>
</entry>

<entry>
    <title>Javaにおけるネットワークプログラミングの基本</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/java-3.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.27</id>

    <published>2009-01-28T08:45:53Z</published>
    <updated>2009-01-28T08:47:49Z</updated>

    <summary>Javaにおけるネットワークプログラミングの基本について解説しています。ネットワークプログラミングで最も基本的なものはソケットを使った通信プログラムです。ここではJavaによるソケット通信プログラムの基本的な書き方を紹介します。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ネットワークプログラミング" label="ネットワークプログラミング" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="基本" label="基本" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[ネットワークプログラミングで最も基本的なものはソケットを使った通信プログラムです。ここではJavaによるソケット通信プログラムの基本的な書き方を紹介します。<br /><br /><br />ソケットとは、プログラム間でデータのやり取りをする通信路の端にあたるもので、通信路とプログラムをつなぐプラグのような役割をします。TCPをつかって通信するサーバ・クライアントプログラムはお互いの間で接続を確立するわけですが、ソケットとポート番号をあらかじめ結び付けておくことで、プログラムにとってはソケットにデータとホスト名、ポート番号を渡せば、あとは相手側のプログラムにデータが届く仕組みとなっています。<br /><br /><br />Javaでネットワークでデータ通信を行うプログラムを書く場合、java.netパッケージとしてJavaが提供するSocektクラス、またはServerSocketクラスを利用します。ソケットを通じてデータをやり取りする場合、<br /><br /><br />1.ソケットを開く(Socketのインスタンスの生成)<br />2.ソケットへの入出力ストリームを開く<br />3.プロトコルに応じてデータをストリームに書いたり読んだりする<br />4.ストリームを閉じる（ストリームのインスタンスメソッドclose()）<br />5.ソケットを閉じる(Socketのインスタンスメソッドclose())<br /><br /><br />という順番で書くのが基本的な流れとなります。また、ソケットを開く際には、コンストラクタの引数としてホスト（またはIPアドレス）とポート番号を指定する必要があります。またストリームやソケットを閉じる際には必ずストリーム→ソケットの順でクローズを行わなければなりません。 ]]>
        
    </content>
</entry>

<entry>
    <title>JavaによるGUIのイベント処理の基本</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/javagui.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.26</id>

    <published>2009-01-28T08:40:43Z</published>
    <updated>2009-01-28T08:42:55Z</updated>

    <summary>JavaによるGUIのイベント処理の基本について解説しています。イベントはイベントクラスのオブジェクトであり、イベントの発生位置、発生源やそれに関する情報をもっています。イベントをイベントリスナーに送るには、次の2つのことをする必要があります。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="gui" label="GUI" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="イベント" label="イベント" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="処理" label="処理" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="基本" label="基本" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[GUIの部品に対するマウスやキーボードからの働きかけをイベントと呼び、イベントに対する応答を記述することをイベント処理といいます。イベントは発生したインスタンスから「イベントリスナー」と呼ばれるオブジェクトに伝えられます。イベントはイベントクラスのオブジェクトであり、イベントの発生位置、発生源やそれに関する情報をもっています。イベントをイベントリスナーに送るには、次の2つのことをする必要があります。<br /><br /><br />1.イベントリスナークラスを定義し、必要なイベントメソッドを記述する<br />2.イベント発生源にイベントリスナーオブジェクトを登録する<br /><br /><br />また、イベントは1つの発生源から複数のリスナーに通知したり、1つのリスナーが複数のソースからイベントを受け取ることができます。具体的な上記の手続きを順に書くと、イベントリスナークラス(例えばEvLisner)にActionListnerインターフェースをインプリメントし、actionPerformed(ActionEvent e)メソッドをオーバーライドし、そこにイベントを受信したときの挙動をif文で分別して記述します。<br /><br /><br />リスナーインターフェースをインプリメントしたクラスであれば、どのようなクラスであってもリスナーになれるので、イベントに対する振る舞いをコンポーネントとは別のクラスに記述することができます。次に、イベント発生源のインスタンス(例えばJButton b)にリスナーを登録するために、b.addActionListner(listner)というメソッドをコンストラクタに記述し、完了します。 ]]>
        
    </content>
</entry>

<entry>
    <title>SwingによるGUIプログラミングレイアウトの基本</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/swinggui.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.25</id>

    <published>2009-01-28T08:35:46Z</published>
    <updated>2009-01-28T08:37:53Z</updated>

    <summary>SwingによるGUIプログラミングレイアウトの基本について解説しています。JavaにおけるGUIプログラミングは、実用レベルのプログラムで特にOS固有のデザインを使用したい場合はSWTを用いて開発を行うこともありますが、基本的にはSwingを用いて行います。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="gui" label="GUI" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="swing" label="Swing" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="プログラミング" label="プログラミング" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="レイアウト" label="レイアウト" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="基本" label="基本" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[JavaにおけるGUIプログラミングは、実用レベルのプログラムで特にOS固有のデザインを使用したい場合はSWTを用いて開発を行うこともありますが、基本的にはSwingを用いて行います。SwingではJFrameというウィンドウフレームの上にJPanelというパネルをのせ、その上にラベル（JLabel）、ボタン（JButton）などのオブジェクトを乗せてGUIを構成していきます。<br /><br /><br />JFrameクラスから作成したフレームの上に直接ボタンやラベルを貼り付けることもできますが、フレーム上でボタンやラベルをグループ毎に分けて別々のレイアウトを設定したい場合などにJPanelクラスから作成したパネルをフレームの上に配置し、ボタンなどのコンポーネントはパネルに貼り付けることでパネル毎にレイアウトを設定することができます。具体的な追加方法としては、JPanelを作成した後、例えばJButtonのインスタンスを生成し、JPanelのインスタンスからadd(JButtonのインスタンス)という形でメソッドを呼び出すことで実現できます。<br /><br /><br />GUIのデザインの概形を構成した後は、それぞれのオブジェクトのインスタンスメソッドset～を用いて詳細な位置の配置や、オブジェクト上に表示するテキストなどの設定を行います。例えばウィンドウのタイトルを変更したい場合、JFrameのインスタンスからにsetTitle(String title)とメソッドを呼び出してやれば、該当するウィンドウのタイトルが変更されます。それぞれのオブジェクトによってどんなset～があるかは異なるのでAPIリファレンスを参照してください。 ]]>
        
    </content>
</entry>

<entry>
    <title>Javaの学習方法 中級者編</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/java-2.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.24</id>

    <published>2009-01-28T08:31:44Z</published>
    <updated>2009-01-28T08:38:57Z</updated>

    <summary>中級者向けのJavaの学習方法を解説しています。CUIプログラミングが一通り程度できるようになったら、次はGUIプログラミングか、あるいはネットワークプログラミングに移ることになります。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="中級者" label="中級者" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="学習" label="学習" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="方法" label="方法" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[CUIプログラミングが一通り程度できるようになったら、次はGUIプログラミングか、あるいはネットワークプログラミングに移ることになります。<br /><br /><br />JavaでネットワークプログラミングやGUIプログラミングを行う場合、CUIプログラミングに比べて、"慣習"というのが非常に多いため、何故こう書かなければならないのか分からない、と、戸惑うことがが多いでしょう。とにかく、多くのサンプルコードに触れて、そのコードを参考に自分でプログラムを書いて、体で覚えるのが一番です。GUIのプログラミングはサンプルコードがJavaの公式サイトにあるので(ただし英語ですが)、それを参考にすると良いでしょう。<br /><br /><br />また、ネットワークプログラミング、GUIプログラミング共に、ネット上のJava入門サイトでもある程度触れられているので、最初はそちらの解説などを読んでも良いかもしれません。また、ネットワークプログラミング、GUIプログラミングを勉強する段階になってくると、統合開発環境(IDE)を用いてプログラミングを行う事がほぼ必須になってきます。また今後のことを考えても、統合開発環境でのプログラミングに慣れておくこととよいと思います。特にGUIプログラミングの場合、デザインを変更するたびに一々手動でコンパイルをしなおして確認するのは正直大変です。<br /><br /><br />統合開発環境にはGUIプログラミングをサポートしてくれるプラグイン（例えばNetbeans のProject Matisse、Eclipse の Visual Editorなど）が存在するので、それらを利用するとデザインが非常に容易に出来ることかとおもいます。一応次の項目からJavaにおける両者のプログラミングの基本について述べておきます。 ]]>
        
    </content>
</entry>

<entry>
    <title>Java APIリファレンス</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/java-api.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.23</id>

    <published>2009-01-28T08:27:36Z</published>
    <updated>2009-01-28T08:29:57Z</updated>

    <summary>Javaの基本的な部分を一通り理解した人は、自分の目的に応じて、Java APIリファレンスを参照すると良いでしょう。Java API リファレンスではパッケージごとに、入っているクラスやインターフェース、クラスやメソッドの書式や効果などが事細かに書いてあります。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="api" label="API" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="java" label="Java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="リファレンス" label="リファレンス" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[ある程度、Javaの基本的な部分を一通り理解した人は、自分の目的に応じて、Java APIリファレンスを参照すると良いでしょう。Java API リファレンスではパッケージごとに、入っているクラスやインターフェース、クラスやメソッドの書式や効果などが事細かに書いてあります。<br /><br /><br />Javaの場合、日本語のAPIリファレンスも置いてあるので、英語だと読めない人でも安心です。引数が分からないメソッドがあったり、どのクラスにどのようなメソッドがあるかを確認したい場合、これを参照することで大抵の悩みは解決するでしょう。<br /><br /><br />また、実用的なアプリケーションを開発する際には、プログラム内で使用するクラスやインターフェース、メソッド等が非推奨APIに入っていないかどうかを確認すべきでしょう。非推奨APIとは、挙動改善などの理由により使用が推奨されないAPIのことで、リファレンスでは通常、代わりのAPIが表示されます。非推奨APIは、以降のバージョンのJavaでは削除される可能性があります。Javaの公式サイトで"Java SE* API仕様"(*にはJava開発環境のバージョンが入る)という名前で公開されています。<br /><br /><br />Java SE 6 の場合は http://java.sun.com/javase/ja/6/docs/ja/api/ がAPI仕様書のオンラインページになっています。また、オフラインで確認したい場合、JDKのインストール時にダウンロードした「Java SE* ドキュメント」の中にもあるので、そちらを参照すると良いでしょう。また、必要なメソッドを探すのが面倒、Java SE APIが見づらい、サンプルコードが欲しいなどの不満がある方は、逆引きAPIや、APIの解説書が出ているのでそれらを購入すると良いでしょう。 ]]>
        
    </content>
</entry>

<entry>
    <title>「オーバーロード」と「オーバーライド」</title>
    <link rel="alternate" type="text/html" href="http://kei.candypop.jp/java/2009/01/post-6.html" />
    <id>tag:kei.candypop.jp,2009:/java//1.22</id>

    <published>2009-01-28T08:23:51Z</published>
    <updated>2009-01-28T08:26:02Z</updated>

    <summary>「オーバーロード」と「オーバーライド」は、名前が似ている上に、どちらもメソッドに関する用語なのでよく混同されます。それぞれについて詳しく解説していますので、是非ともご参考にして下さい。</summary>
    <author>
        <name>7dreams</name>
        
    </author>
    
    <category term="java" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="オーバーライド" label="オーバーライド" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="オーバーロード" label="オーバーロード" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kei.candypop.jp/java/">
        <![CDATA[「オーバーロード」と「オーバーライド」は、名前が似ている上に、どちらもメソッドに関する用語なのでよく混同されます。「オーバーロード」は多重定義とも呼ばれ、"戻り値や引数の型が異なる同名のメソッド"をいくつも定義することです。<br /><br /><br />例えば、hoge(int a)というメソッドが有ったとして、引数としてdouble型もとりたい、という場合に、hoge(double a)を"あたかも別のメソッドのように"、もう一つ定義することのことを指します。あるいは引数を増やしたい場合、hoge(int a, int b)という形で定義する事もできます。オーバーロードの場合、メソッドの機能として基本的な動きは変わらないようにするのが普通です。<br /><br /><br />それに対して、「オーバーライド」は再定義と呼ばれ、ある親クラスから継承したメソッドを、"今のクラスに合った動きをしてくれるメソッド"に定義を書きかえることを指します。例えば、親のクラスにあるfoo()メソッドの戻り値はint型であるが、今のクラスではString型で戻ってきて欲しいとします。そのとき、今のクラスのほうでfoo()メソッドを戻り値がString型になるように、あたかも"foo()メソッドが今のクラスのメソッドである"ように定義する事で、今のクラスではfoo()の戻り値がString型であるメソッドとして使えるようになるということです。<br /><br /><br />オーバーライドの場合は、親クラスのメソッドの機能を拡張したりするような形で使うのが普通です。その際、親クラスからメソッドの部分をコピーしてくるのは面倒なので、super()というメソッドを使うことで再定義前の親クラスのメソッドを今のクラスのオーバーライド部分で呼び出すのが普通です。 ]]>
        
    </content>
</entry>

</feed>
