約 1,903,658 件
https://w.atwiki.jp/study_java/pages/12.html
JAVA言語は、Sun Microsystems社が開発したプログラミング言語です。 JavaはC言語に似た表記法を採用しているが、C++よりオブジェクト指向を極めた言語かなぁと思う。 現在あるプログラミング言語の中では、C++とJAVAは基本的な文法や式は同じなのでC++の知識がある方は 取っ付きやすい言語ではないでしょうか? Javaで開発したソフトウェアはコンピューター依存することなく、基本的にはどのような(*1)プラットフォームでも動作する。何故どのようなプラットフォームでも実行できるか?それは Javaで記載されたプログラムをコンパイル する時に、Javaバイトコードと呼ばれる(*2)中間コードに変換される。Javaのソフトウェア等はJavaバイトコードで配布され、ユーザーがダウンロードして使う際に(*3)JavaVMというソフトウェアで使用中のプラットフォームのマシン語に変換し実行を可能にしている。 (*1) プラットフォーム ソフトウェアを実行させる時の必要とするOSや環境の事である。 例)Windowsプラットフォーム上で動作するソフト等は他のOSでは実行不可である。 互換があるなら・・・w (*2) 中間コード コンパイル時に生成される、実行用コード。 (*3) JavaVM:Java仮想マシン、ネットで配布等されているJavaソフトウェアは、Javaバイトコードと言う独自の形式なので、 JavaVMで「Javaバイトコード⇒現在のプラットフォームのマシン語」と言う風に変換し実行をしてくれると言う優れもの。 JavaVMが無ければJavaの実行自体が不可である。
https://w.atwiki.jp/yo-kichi/pages/16.html
設定ファイルをJavaで読み込む 時間取得まとめ Javaについて思ったこと Singletonで自身がスレッドになるクラスでなぞエラー Javaで効果音、BGM Javaテンプレ **何ができるか ***実装したい機能 ---- **感想 ---- コメント #pcomment(below2,noname,20,enablenamelink,enableurl) コメント
https://w.atwiki.jp/miura2java/pages/14.html
ここにJavaの情報を記入してみてください。 コマーシャル封じ
https://w.atwiki.jp/study-java/pages/14.html
java
https://w.atwiki.jp/picolit/pages/10.html
Java Java講座 たけおばの門 Tomcat yok's 技術メモ 浅煎り珈琲Javaアプリケーション入門 TECHSCORE -Java- Java Tips and Linux Java プログラミング入門 JavaでHello World Hibernate Hibernate メモ Hibernate-TECHSCORE- ファイヤープロジェクト
https://w.atwiki.jp/asayamayuki/pages/12.html
Javaについて3回生同士の情報共有に使ってください。 test2 -- asayamayuki (2007-02-26 17 08 52) 名前 コメント
https://w.atwiki.jp/javawa/pages/12.html
プログラムを始める前に・・・ プログラムとは 初めての出力 HelloWorld (おまけ1) Javaの正しい実行 数値演算 変数「int」と代入 四則演算プラスワン 文字列処理 文字列の足し算 数字と数値 やっと入力 (おまけ2) プログラム引数 実行中に入力する。 (おまけ3)コンソールプログラム→対話型→GUIへ もっと演算 条件分岐 論理演算 正しいか?間違いか?
https://w.atwiki.jp/limixp/pages/12.html
Javaの基本的な事について整理しておきます. プログラミング言語Java Sun Microsystems社が開発したプログラミング言語およびその開発環境. オブジェクト指向言語. Write Once, Run Anywhere. 「一度記述すれば,どこででも実行が可能.」 Javaはオブジェクト指向の言語であり,その利点はクラス設計(継承, インタフェース)による再利用性(部品化)です.またJavaはJava仮想マシン(Java VM)と呼ばれるコンピュータを仮想化したソフトウェア上で実行されます.Windows, Linux, Macといったプラットフォームの違いや,またそのVersion(例:Windows 2000, Xp, Vista等)の違いがあってもこのJava仮想マシンさえインストールされているコンピュータ上であればJavaプログラムを実行することができます. Javaが登場したのはもう10年以上前(1995年頃)になりますが,その技術は未だ飛躍し続けており,Javaプログラマーの需要は衰えることがありません. トップページ
https://w.atwiki.jp/tamorintech/pages/14.html
別ページにまとめてるもの。 Javaのプリミティブラッパークラスはすべて不変である。 サーブレットのセッション管理(2012/3/18 旧ブログから移行) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) 集約とコンポジション(2012/3/18 旧ブログから移行) サーブレットコンテナ(2012/3/18 旧ブログから移行) JNDIってどんなものなのか。(2012/3/7)何となくの理解。 Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行)DB側の話。 Java側の話。 上記からわかったこと! PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) アノテーションとは。(2012/2/4 旧wikiから移行) 別ページにまとめてるもの。 log4j Android Javaのプリミティブラッパークラスはすべて不変である。 よって、ラッパークラスオブジェクトを参照値渡ししてメソッド内で計算しても、メソッド呼び出し側のオブジェクトには結果が反映されない。 private void exec() { Integer value = new Integer(5); System.out.println("メソッド実行前のint値 " + value.toString()); increment(value); System.out.println("メソッド実行後のint値 " + value.toString()); } private void increment(Integer integer) { // 内部的には // integer = new Integer( integer.intValue() + 1 ); // のようなことが行われている。つまりメソッド内のinteger は別の新しいオブジェクトを参照することになる。 integer++; System.out.println("メソッド内での計算結果 " + integer.toString()); } メソッド実行前のint値 5 メソッド内での計算結果 6 メソッド実行後のint値 5 サーブレットのセッション管理(2012/3/18 旧ブログから移行) 今日はホントにメモだけ!(時間ないからね!) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) とりあえずメモだけアップしておく。まだ目的は達成してないけど・・・。 知りたいことは以下のこと。Tomcat(サーブレットコンテナ)がクラスをロードしたり、サーブレットのinit / service / destroy の呼び出しを行っている部分の詳細な動きが知りたい。 JSPリソースへのリクエストを受け取ったとき、それをJSPから変換したサーブレットへのリクエストへと切替えている部分の詳細な動き。 Tomcatはサーブレットのインスタンスをどのようにしてシングルトンで管理しているのか。 やっぱりTomcatのソースをじっくり読みたい・・・。 集約とコンポジション(2012/3/18 旧ブログから移行) 新人の後輩から質問されて答えられず。そもそも明確な違いは定義しにくく、「曖昧」らしい。 集約とコンポジション、Javaのコードに落とせばどちらも同じ。「全体」のメンバ変数に「部分」のオブジェクトが定義されていることになる。 上記は車クラスが「全体」であるのに対し、車体・エンジン・タイヤクラスが「部分」にあたる。ひし形の色は白なので集約の関連があることを表している。 車クラスをJavaコードにすると以下のようになる。 public class Car { private Body body; private Engine engine; private Tyre tyre; ・・・ } クラス図のひし形の部分が黒で塗りつぶされていて、コンポジションをあらわしていたとしても車クラスは上記と同じコードとなる(のはず)。 他の技術系の記事を参考にすると、コンポジションは両オブジェクト間のライフサイクルが同じ、もしくは強い依存の関係にある場合に使用する。 ということは、集約とコンポジションでJavaコードに違いが出てくるところと言えばオブジェクトの生成の仕方とかだろうか? 車クラスと車体・エンジン・タイヤクラスがコンポジションの関連にある場合、車クラスのコンストラクタで車体・エンジン・タイヤクラスのオブジェクトを必ずnewするとか。もしくはメンバ変数の宣言部でnewしちゃうとか。 public class Car { private Body body = new Body(); private Engine engine = new Engine(); private Tyre tyre = new Tyre(); ・・・ } まぁその辺りも想定するシナリオとかで変わってくる気がする…。 とにかく、集約とコンポジションの違いについて深く悩むことにあまり価値はないと自分に言い聞かせる。(笑) サーブレットコンテナ(2012/3/18 旧ブログから移行) サーブレットコンテナというキーワードで少し勉強した。一番知りたかったのは、「Webサーバ」と「サーブレットコンテナ」の機能の切り分け。 サーブレットコンテナについては前よりイメージがわいてきた。Servlet API / JSP API の参照実装(RI)であること。HttpServletの実装をTomcat等のサーブレットコンテナは持っている。 サーブレットのインスタンス化や破棄など、ライフサイクルの管理を行っていること。 3つの動作形態の種類があること。スタンドアロン型-サーブレットコンテナ自身がWebサーバを内蔵している。Tomcatはこれにあたるので、単体でサーブレットアプリケーションを動かせる。 内部プロセス型 外部プロセス型 Tomcatの設定ファイルを覗いてみるとなんとなく仕組みがわかってくる。なんとなくだが・・・ Connector がWebサーバ機能を担う定義なんじゃなかろうか。 他のWebサーバを使用するため、TomcatのWebサーバの機能をOFFにするにはserver.xmlの Connector 要素を削除するって書いてあったし。 ここでの機能は、クライアントからのリクエストをサーブレットコンテナ(エンジン)に渡すこと。 結局、Webサーバの詳細な機能ははっきりとわからなかった。サーブレットコンテナというキーワードを絡めずに、Webサーバそのものについて今後調べないと! ところで、サーブレットアプリケーションのメインプログラムは何なのか?Javaプログラムはmainメソッドの起動から始まる、と教えてもらったはず。ちょっと調べてみたところ、Tomcatの場合、Bootstrapクラスがそれに当たる模様。 確かにBootstrapクラスにはmainメソッドがあり、Tomcatの起動用スクリプトを見てみてもBootstrapクラスをjavaコマンドにより実行しているようだ。 ただこのBootstrap.classがbootstrap.jarとcatalina.jarという二つのjarファイルに存在する。 これは同じクラス(全く同じモジュール)と考えてよいのか? あ、ちなみにここまで、Tomcat 6についての話。。 5.5のディレクトリ中身を見てみたらまたちょっと違うようだ。あまり気にしなくても大丈夫かな…? JNDIってどんなものなのか。(2012/3/7) JNDIとはJava Naming and Directory Interfaceの頭文字を取ったもので、Javaから •ネーミング・サービス •ディレクトリー・サービス を扱うためのインターフェイスを規定した仕様です。 だそう。こういう定義は他でもいくつか目にするんだが、いまいちイメージがわかない。 何となくの理解。 本質ではなくwebアプリ(サーブレット)に限定した理解だが、DB接続をJNDIで行う場合は以下な感じ。DB接続情報(=DataSource)をサーバーの設定ファイル(Tomcatの場合はcontext.xml)に定義する。その実態はjava.sql.DataSourceクラス(のオブジェクト?)である。 Javaプログラムでは、java.naming.InitialContext#lookupメソッドで、定義したDataSourceを取得する。 DataSource#getConnectionメソッドでjava.sql.Connectionを取得し、DB接続が開始できる。 以下を読むと上記の実装例があり、どんなものかが少しわかった。ありがたい。http //www.javaroad.jp/opensource/js_tomcat8.htm http //blogs.yahoo.co.jp/kensinisnek/11707751.html Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行) DB側の話。 標準のSQL(?)では、日付・時刻のデータを持つカラムの型は以下のとおりとなっているようだ。DATA日付のみのデータを持つ。 TIME時刻のみのデータを持つ。精度(桁数?)は指定できる。 TIMESTAMP日付+時刻のデータを持つ。精度は指定できる。 Java側の話。 ここで扱う日付・日時に関するクラスの継承関係は以下のとおり。java.util.Datejava.sql.Date java.sql.Time java.sql.Timestamp java.util.Date日付と日時の両方のデータを持つ。時刻はミリ秒まで。 java.sql.Date日付のデータのみ持つ。基底クラス(java.util.Date)の時・分・秒・ミリ秒には0が設定される。 java.sql.Time時刻のデータのみ持つ。基底クラス(java.util.Date)の年・月・日には1970年1月1日が設定される。 java.sql.Timestamp日付と時刻のデータを持つ。時刻はナノ秒まで。 java.sql.ResultSetインターフェースについて。getDateメソッド:java.sql.Dateを返す。 getTimeメソッド:java.sql.Timeを返す。 getTimestampメソッド:java.sql.Timestampを返す。 上記からわかったこと! テーブルに対応するデータオブジェクト(エンティティクラス)を設計するとき、DBのDATE、TIME、TIMESTAMPのカラムに対応するプロパティは、java.sqlパッケージのクラスを使えってことだね。 PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) PATH環境変数は、OSがプロンプトから入力されたコマンドに対するプログラムを検索する際の検索先である。 CLASSPATH環境変数はJavaソースのコンパイル時、プログラム実行時に必要となるクラスファイルを検索する際の検索先である。 よって2つはなんら関係ないものである。 サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットにおける認証方式の種類は以下のものがある。Basic認証:HTTPのBasic認証を使った方式。 Digest認証:HTTPのBasic認証を使うが、パスワードをダイジェストエンコードして暗号化する。 Form認証:HTMLのformを使ってユーザーIDとパスワードを入力する。 Client-Cert認証:クライアント証明書を使って認証を行う方式。 Tomcat標準のレルムレルムとは、ユーザーIDとパスワードをサーバー側でどのように管理するかの設定方法である。XMLベースのテキストファイルやデータベース等がある。 UserDatabaseRealmTomcatでデフォルトで設定されている方式。 ID、パスワード、ロールをtomcat-user.xmlファイルに記載する。 UserDatabaseに対して行った変更が変更情報としてtomcat-user.xmlファイルに書き込まれる? JDBCRealmID、パスワード、ロールをデータベースに格納し、JDBC経由で認証を行う。 JNDIRealmNIS、ActiveDirectory等のディレクトリサービスにID、パスワード、ロールを格納しJNDI経由で認証を行う。 DataSourceRealmJDBC経由で認証を行うが、JDBCへの接続にJNDIルックアップを使用する。 サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) サーブレットのインスタンスは(基本的に)1つのみサーブレットコンテナにより作成される。 クライアントからの要求は複数同時に処理される。1リクエスト=1スレッドと考えてよい。 スレッドに関して、サーブレットコンテナは以下の特徴がある。サーブレットコンテナはスレッドプールを持っており、そこに複数のスレッドを蓄えている。 サーブレットコンテナはクライアントからリクエストを受け付けると空きスレッドを割り当て、サーブレットに渡して処理を移譲する。サーブレットのインスタンス数は1つである。 スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) ThreadLocalは、スレッド毎の値を保持する為のクラス。 あるクラス(のインスタンス)がマルチスレッドで呼ばれる際に、スレッド毎に異なる値(インスタンス)を使いたい場合に使用する。 自分でThread(やRunnable)を使ってマルチスレッド化しているならスレッド毎の値が保持できるので、ThreadLocalを使用しても意味がない。 しかし、Webアプリケーション(サーブレット)は1つのインスタンスがマルチスレッドで呼ばれるので、そのスレッド毎に別のインスタンスを保持したいときはとても便利である。 アノテーションとは。(2012/2/4 旧wikiから移行) アノテーションとは、プログラムの動作に影響を与えない注釈、メタデータ。クラスやメソッド、パッケージ等に付与する。 コメントとの主な違いは以下のとおり。プログラムでアノテーションを読み取って処理できる。 アノテーションはコンパイラの動作に影響を与える。 標準アノテーションとして以下のようなものが定義されている。(J2SE 5.0)Override Deprecatedそのメソッドの使用が推奨されないことを示す。(Javadocの@deprecatedと同じ意味を持つ。) そのメソッドを使用するとコンパイル時に警告が出る。 SuppressWarningコンパイル時の警告を抑制する。 抑制する警告の種別はアノテーションの文字列配列の引数を渡すことにより指定が可能。 アノテーションの定義の仕方。「@interface」でアノテーションが定義できる。 以下のように型定義の本体が空のアノテーションをマーカーアノテーションという。 public @inteface Myannotation{ } 同じアノテーションをクラス、メンバ変数、メソッド、それぞれに適用できるようだ。 @Myannotation() public class TestMain { @Myannotation() private String var; @Myannotation() public static void main(String[] args) { } }
https://w.atwiki.jp/javamock/pages/15.html
HelloWorld.java 下記のHelloWorld.javaについて簡単にですが解説します HelloWorld.java class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } クラス クラスは以下のように記述します 修飾子 class クラス名 extends スーパークラス implements インターフェース, インターフェース, インターフェース ...{ フィールド,コンストラクタ,メソッド,内部クラスなど } 修飾子 以下の修飾子を指定します ※記述しなければデフォルトの修飾子になります 修飾子 修飾子種別 public アクセス修飾子 protected アクセス修飾子 private アクセス修飾子 static スタティック修飾子 final ファイナル修飾子 abstract 抽象修飾子 strictfp 厳密浮動小数修飾子 extends スーパークラス 継承するクラスを指定します ※記述しなければ「extends java.lang.Object」になります implements インターフェース, インターフェース, インターフェース ... インターフェースを指定します ※インターフェースが必要なければ記述しません メソッド メソッドは以下のように記述します 修飾子 戻り値 メソッド(引数,引数,引数,...) throws 例外クラス,例外クラス,例外クラス... { 処理など } 上記のHelloWorld.javaでは以下の箇所です public static void main(String[] args) { System.out.println("Hello World"); } ※javaコマンドで実行されるクラスは以下シグネチャを持つmainメソッドが定義されている必要があります ※実行後最初に呼び出されるメソッドです public static void main(String args[]) 修飾子 以下の修飾子を指定します ※記述しなければデフォルトの修飾子になります 修飾子 修飾子種別 public アクセス修飾子 protected アクセス修飾子 private アクセス修飾子 static スタティック修飾子 final ファイナル修飾子 abstract 抽象修飾子 native ネイティブ修飾子 synchronized 同期修飾子 strictfp 厳密浮動小数修飾子 戻り値 戻り値のデータ型を指定していします ※voidを指定すると何も返しません 引数 引数を指定します 上記のHelloWorld.javaでは以下の箇所です String型の配列を引数としています String[] args throws 例外クラス,例外クラス,例外クラス... 例外クラスを指定します 指定した例外が発生したとき例外を投げます System.out.println("Hello World"); java.lang.Systemクラスのフィールドout(java.io.PrintStreamクラス)の メソッドprintln()に引数として"Hello World"を渡すことでHello Worldと出力します