◆ Java




日付の変換

Date date = DateFormat.getDateInstance().parse(str);
getDateInstance()←Date忘れないでね

Formatを指定して変換
例えば、Tue, 04 Dec 2012 10:01:05 +0900のような形式。
SimpleDateFormat objFormat =
new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss  Z", Locale.ENGLISH);
Date date = objFormat.parse(str);
Local.ENGLISHないとフォーマットできないみたい。
参考
あー、超ハマった。


Java SEとかEEとかSDKとかJDSとかJ2SEとかJREとかとか。


  • Java SE
Java SEとはStandard Editionの略です。
Javaの基本的な関数が入っています。
APIと呼ばれるものです。

例えば、java.lang.Stringとか
Java.lang.Systemとかです。
String str = ""; str.equals("あ")とか
System.out.print()とか使ったことありませんか?
それです。

ちなみにJ2SEというのは、
バージョン1.5(5.0)までの昔の呼び方で、
今はJava SEで統一されているみたいです。
J2の後ろの部分がJava SEのSEの部分なので、
J2EEだったら下のJava EEのこと、
J2MEだったらJava MEと呼ばれるAPIのことです。

  • Java EE
Java EEとはEnterprise Editionの略です。
JavaでWebサイトなどを作る際に必要な関数が入っています。

Servletとかjspの関数などが含まれています。
web.xmlなどをいじってServletクラスを作ったり、
StrutsやSeasarなどのライブラリを使ったことがなければ
縁のない関数かもしれません。

  • SDK
SDKはSoftware Development Kit(ソフトウェア開発キット)の略です。
Javaに関わらずソフトウェアを開発するのに必要なツールが
一式入ってますよというものです。

なのでJavaだと、上で書いたJava SE(Standard Edition)も入っています。
他にはソースを*.classファイルにコンパイル(翻訳)するツール、
作ったアプリケーションを実行する環境などが入っています。

  • JDK
JDKとはJava Development Kit(Java開発キット)の略です。
Javaを開発するのに必要なツールが一式入ってます。
Java専用のSDKということですね。

内容の構成はSDKと同じで、
標準API(Java SE)
コンパイラ(*.javaのソースファイルを*.classファイルに翻訳するツール)
実行環境
などが入っています。

JDKはJavaの開発に必要な最低限のツール一式なので、
Java EEは入っていません。
もしかしたらアプレットを作るかもしれませんし、
Webではなく端末上で動くアプリケーションを作るかもしれませんからね。
それらは別途インストールしなければなりません。

補足ですが、JDKのバージョンは1.5、1.6、1.7などありますが、
それらは5.0、6.0、7.0とも呼ばれたりします。
まだ2.0まで行ってないので、1が略されてるみたいですね~。ややこしい。


  • JRE
JREとはJava Runtime Environmentの略です。
上のJDKの項目の実行環境の部分です。

例えば、eclipseなどでアプリケーションを実行する時に必要なツールです。
そのままですが。
コーヒーのマークのたまに更新の通知があがるあのツールです。

このJREにもJava SEやJava EEのように種類があり、
公開JREと非公開JREといいます。

JDKの中に入っているJREは、
JREの中でも基本的なものだけ入っている実行環境です。
これが非公開JREです。
ちなみに非公開JREはJDKの一部というイメージなので、
インストールしたりアンインストールしたりできません。
JDKをアンインストールしたら一緒に消えるという感じです。
更新の通知があがるツールは公開JREです。


EnumクラスをStringにすると、変数の内容消える

JavascriptでAjaxでSeasarのActionにアクセスし、
RESULTというEnumを作り、statusとmessageという変数を作成し、
RESULT SUCCESS(0, "成功しました。")のようなのを作って、
返しました。
JavaのEnumの王道の使い方だと思ってたのですが…
ResponseUtil.write(JSON.encode(SUCCESS), "text/javascript");
のようにjavascriptに渡すと、
受け取った時に"SUCCESS"というString型になっていて、
statusもmessageもundefinedになります…。。

くそー、JavaのEnumはどう使えっちゅーんだっ

自前クラスでのequalsはオーバーライドしないとちゃんと動かない


Javaではクラスは全てObjectを自動的に継承しているので、
equals()を使えるんだが、
そのまま使おうとするとパラメーターが全て一致していても
falseが返ってくる。
これはアドレスを見ているからだ。
データが保存されたアドレスはクラスをnewする度に
全く同じインスタンスを比較しないとtrueは返らない。

そこで正しく動作するequals()を実装する為の
システムがeclipseには備わっている。

ソースで右クリック→ソース→hashCode() 及び equals() の生成

これを実行するとhashCode()とequals()が自動生成されて
保持しているパラメータが全て一致していればtrueを返す
equals()が使えるようになる。

ただし、参考演算子を使っていたり、
if (true) return false;
のような括弧を使わないif文などが書かれているので
チェックスタイルに引っかかる場合は
自分で直さなくてはいけない。

|