So-net無料ブログ作成

JDK7の仕様は賛成多数となった模様。Apache Harmonyはどうなる? [開発]

AppleはMac OS Xの今後のバージョンで自社製Javaランタイム提供はしない方針を発表していた。
この前、正式にJDK7はSunのJDKが載る事が決定。
JDK6までは今後もAppleが提供する方針だそうだ。

また、IBMに続きAppleもOpenJDKへの参加を表明。
IBMは、ApacheプロジェクトのAapeche Harmonyを推してそっちに参加してたが鞍替え。
Appleもそれに続いたって感じ。

Oracleは基本的にオープンソース死ね位の勢いなので各コミュニティから不満が出てるが
IBMやAppleが参加をしたので、OpenJDKを使用する事自体はいい方向かと。
自分らも開発ではOpenJDKをサーバに入れてたりするんで。


もう一方のオープンソースのApache HarmonyについてはなんかOracleとの対立激化中。
Java SE 7の仕様にも反対し、JCPも脱退。
原因は、JDKの互換性テストキットのライセンスについて対立してる為。
商用向けには制限を設けて自社製JDKを入れさせたいSunと
利用範囲は制限せずにオープンに広く提供したいApache財団とで対立中。

OpenJDKはGPL。Apache HarmonyはApacheライセンス(商用のコードに利用可)
Apache Harmonyが互換性テストにパスしてしまうと、SunのJDKでなく
Apache Harmonyが使われてしまうので、大きく収入減となる可能性があって
Oracleとしては非商用に制限をかけたいという思惑がある。
まあSun買収の目的ってJavaを自分らの商売につなげる事もあるだろうしねえ。
当然といえば当然だけれども。

上記のライセンスの関係上、IBMはApache Harmonyに肩入れしてたんだけど距離おいた。
なんでもIBMにはOracleの方から声がかかって協議が進められてたんだと。
ということは、今回のApple取り込みもOracleからの提案なんだろうかね。
今後は商用はSunのJDK、オープンソースはOpenJDKがメインとなるのか?


Apache Harmonyに関してはAndroidの大成功も今後の動きに影響しそうな予感。
Androidの実行環境はApache Harmonyをベースに開発されていて
実際、AndroidもOracleから訴訟起こされてる状態であります。
Oracleからすれば、商売に影響しそうなものは徹底的に潰す感じじゃないかと。
なにが嫌らしいって、Oracleは元々Apache Harmonyの支持企業で
テストキットを制限なしで提供するようにSunに要求していた側。
それが当事者になって急に態度を翻すもんだからなんか嫌だなと。

Androidに関して言うと、元々はSunと協議してJava ME上で開発する予定だったが
SunがJava MEの仕様の面や金銭面で融通が効なかったせいで話は流れた。
んで商用利用可のApache HarmonyをベースにオリジナルのVM(Dalvik VM)を開発した。
Googleが言うには、金の問題でなくてJava MEの仕様が糞すぎるからってのが理由らしいが。

Andoridがこのままバカみたいに売れ出すと、Apache Harmonyベースの製品が
一定の地位を得ることになるのでこのままの対立続けば2つに割れたりする可能性はある。

が、Apache Harmonyの強力な支持者だったIBMがOpenJDKに回ってるから
かなり微妙な位置にたたされてるという感じはあるね。継続するかは不明だそうで。
しかしまあOracleのオープンソース潰しの姿勢は好きではないので
GoogleとASFは頑張れ。超頑張れ。

とかいって自分はOpenJDK使ってんだけど

iSeries / i5向けIDE(統合開発環境) [開発]

久々の開発ネタ。
ASは、基本5250画面での開発になるがEclipseベースのIDEがある。
これがあれば、SEUを使ってみたりする必要がない。あると便利。
また、Websphere Application Serverのサーブレットを作ったりする場合にこれを使用する。
ASは名称やライセンスの構成やハードウェアなど頻繁に変わるので覚えるのが大変。
調査したので軽くまとめてみた。

[OS 5.4まで]
Websphere Development Studio Client for iSeries (WDSc)
→ RPG+Java+WAS 6.1向けサーブレット開発がWindows上で可能
5722-WDSの一部

[OS 6.1以降]
Rational Developer for i (RDi)
→ RPG+JavaがWindows上で可能 (WAS 6.1向けサーブレット開発ができない)
    5733-RDI
Rational Developer for System i for SOA Construction (RDiSOA)
  → WAS 6.1向けサーブレット開発、XML開発ツール等
    5733-SOA

OS 5.4まではWDSCだけで良い。
OS 6.1以降は、5733-RDIと5733-SOAの併用という形を取る必要あり

Linux + Tomcatの環境を弄る人は素直にEclipse IDE for Java EE Developers
で良いんだけど、ASでサーブレット開発とかやる場合は
WDScやRDiSOAを使うべきと思います(というかそれが一番手っ取り早い)


openid4javaで吐くログについて [開発]

以前、openid4javaのログがウザイって言ってた件をちょっと調べてみた。
openid4javaは、commons-loggingを仕様してログを吐く。
よって、ログについてはcommons-loggingの仕様に準ずる。
commons-loggingは色々なロギングAPIに対応する。

commons-logは以下の順序でログ先を検索するようです。

1.commons-logging.properties
commons-logging.propertiesで定義されているロギングAPI

2.システムプロパティ
org.apache.commons.logging.Logで定義されているロギングAPI

3.log4j
クラスパスの通ったディレクトリにlog4jがあるはlog4j

4.java.util.logging
JDK1.4以上で上記に該当しない場合はjava.util.logging

5.SimpleLog
いずれにも該当しない場合はSimpleLog

んで、commons-loggingを使う場合はlog4jを併用する事が多いようだが
細い事はあまり気にしてないので、対象のシステムではjava.util.logging
を使っていた模様。

よって、ログのレベルを制御する場合はlogging.propertiesに記述する。
ファイルは、{$JRE_HOME}/lib/logging.propertiesにある。

レベルの設定は

.level = INFO

でグローバルの設定もできるが、パッケージ単位で個別に設定可能

org.openid4java.level = WARNING

今はパッケージ単位の設定をしてないのでINFO以上のログが出て
ウザくなっていたものと思われる。とりあえずこれを設定して
様子を見てみる事にします。


OpenID4Javaのログ出力 [開発]

OpenID4Javaを普通に使ってると
ConsumerManagerのインスタンスを生成したりするだけでも
つらつらとログを吐いてしまう。

開発中は別にいいんだけども、いざ実際にサーバに導入ってなると
Apacheのログにどうでもいいログがいっぱい。

OPにdiscoveryするたびに余計なログ吐いてウザいです。
良く知らんが、ログ吐かないようにする設定とかあるんだろうか。

リッチなWebアプリケーションを考える [開発]

Webアプリケーションをつくっていると UIに凝ったものが作りづらくて困る場合がある。

自分はStruts1系を使ったりすることが多いですが
データ登録系の機能はコントロールの制御やらが発生して
クラサバのように作りこむ訳にはいかない。 これは仕方ない。

なので、そろそろAjaxなんか考えた方がいいんだろうかとも思う。
が、Ajaxはオープンなものだけに、情報が散在してる感あるし
開発環境も「標準」みたいなのも決まってる訳じゃないし
とっつきにくい感じがしてやりづらい。

JavaScriptの挙動がブラウザに依存しそうで、
そこら辺気にしながらコード書くのも嫌っていうのもあるし。
Eclipseあたりを使えば、一応は環境そろうんだろうけども。

で、他にも使える技術ないかなぁという事で探してみた

 

○Flex
FlexはFlashの技術だから動作環境は問題なさそう。
Flex Builderもあるし、Flex SDKで無償での開発も可能
Adobeがきちんとサポートしてるから多少はいいかもなと思う。

Java開発者ならリッチなUIはFlexっていう流れも良くあるっぽい。
Flex Builderは使いなれてるEclipseベースだそうだし。
使い勝手はいいんだろうなと。
Flex Builderは高いんだろうか。

良くしらんけど。

 

○Silverlight
SilverlightはMicrosoftが作ったもんだから毛嫌いする人も
いるかもしれないけど、結構オープンにやってるみたい。

Visual Studio 2008持ってたら開発環境もバッチリな様子。
Expression Blend持ってるとなおさら良いらしい。
開発者=Visual Studio、デザイナ=Expression Blend
的な分業を想定してるそうなので。

コントロールも色々あるし、Silverlight 2は
WPFのサブセット的な位置にあるから.NET開発経験者なら
結構開発は楽っぽい。

んで、Microsoftは開発環境やらサポート体制を揃えるのは
得意だから、開発はしやすそうだなという印象が強い。
箱○のXNAなんかもそうだけど、こういう所は良いと思う。
ゲイツ君が隠居してからはMicrosoftもすっかり大人しいし
最近は印象はいいかも。

と、思って今Silverlightを触ってるところ。
WPFのアプリ作ってるのとほぼ同じイメージで開発できる。
Linux+Apacheのサーバにファイルアップしても
クライアントさえ環境そろってればきちんと動くし。

Windows Server+IISなんていう危険なサーバ環境に
縛らずに済むから、まー結構使えるかもなぁって気がしてきた。
クライアントに新規でSilverlightを入れないといけないけど
まぁそれはフラッシュも同じことだし。

今はJavaでアプリ作ってる事多いから、
素直にFlex使えって言う気もするんだけど。
Javaはあんまし好きじゃなかったりするもんですから。

元々Windowsの開発ばっかりやってた人だから
C#でコード書けるっていうのはやっぱポイント高いデス。

なので、今度Silverlightでアプリでも書いてみます。


SSLで「Internet Explorerでは、○○○○をダウンロードできません。」とでる [開発]

SSL通信時、動的にPDFのダウンロード等をしようとすると、
「Internet Explorerでは、○○○○をダウンロードできません。
ファイルをキャッシュに書き込めませんでした。」

というようなエラーが出る事がある。

304 - narucissus is Not Modified: 「Internet Explorerでは、○○○○をダウンロードできません。」


理由は、IEの仕様上の理由。CGI等で動的にファイルのダウンロードを
仕様とする時、ヘッダにCache-Control:no-cacheを指定すると、
IEがうまく処理できずに、エラーで落ちるらしい。

Internet Explorer が SSL 経由によるファイルのダウンロードで "No-Cache" ヘッダーを処理できない

・Cache-Control:no-cacheでなく、Cache-Control:private等に変更
・静的なファイルへのリンクなどに変更する。

等で対応できるらしい。現象は、IE5~IE6で発生。
IE7以降で対応できていっぽい。修正パッチもあるらしい。
FireFox等では特に問題は発生しない。IEのみ。


Windows 7からはGDIはレガシー扱いだそう [開発]

Windows 7はGDIをレガシーサポートに切りえるそう。
PDC2008とかで正式にアナウンスしてるから決定でしょう。

GDIはレガシーですか。
なんだか時代の流れを感じてしまいますが。
って事は、これからのデフォはWPFになると。
Longhornも最初はそのつもりだったから納得はしますが。

ということで、System.Windows.Formsのクラスで
書いてたアプリをWPFに変えてみようと思って最近初めてます。
が、WPFのデザイナがなんだか動きが違って良くわかりません。
xamlもあんましよくわかりませんし。
Windowのコードをxmlで書いてるっていう行為も
なんだか気持ち悪るくって。

もっと深く知れば気にいるかも知らんですが。
MFCやWTLあたりでコード書いてる方が一番性に合うって
オッサンすか?

で、テキストエディタっぽいの書いてみましたが
起動時のモッサリ感が増した気が。
これってクソ速いGPU積んでたら変わるんスかねぇ。


Movable Type 4.01から4.2へのアップグレードで不具合 [開発]

2つエラーがでる。

1 mt_ts_funcmapにて、キー ts_funcmap_funcnameの重複
2 mt_ts_jobにて、キー mt_ts_job_uniqkey, mt_ts_job_funcidの重複

こんなエラー


failed to execute statement ALTER TABLE mt_ts_funcmap
ADD CONSTRAINT mt_ts_funcmap_funcname UNIQUE
(ts_funcmap_funcname): Duplicate key name
'ts_funcmap_funcname' at lib/MT/Upgrade.pm line xxxx

4.01では、既にキーが追加されているのにさらに
追加しようとして失敗している模様。
ググると他でも出てるみたいです。

アップグレードのバグ臭い。
上記エラーがでたら、いったんキーを削除して
アップグレードし直してみましょう。

drop index ts_funcmap_funcname on mt_ts_funcmap;
drop index mt_ts_job_uniqkey on mt_ts_job;
drop index mt_ts_job_funcid on mt_ts_job;

ANAのシステム障害、原因は「認証機能の有効期限切れ」 [開発]

 ANAのシステム障害、原因は「認証機能の有効期限切れ」 - ITmedia News

ANAでトラブったやつ、認証機能の有効期限切れ、だそう。
詳細しりませんが、"暗号化認証機能の有効期限"だっていうから
データをSSLかなんかで保護してるんだけど、その証明書の期限が
きれちゃってました、ってやつでしょうかね。

システム管理してる人間だれか気付かなかったんでしょうかね。
たぶん、これ子会社のANAのシステムが管理してるんでしょうし。
小さい会社じゃないんだし有効期限切れ起こすってダメでしょ。

詳細わすれましたが、何かのシステムをANAシステム企画ってとこが
やってるけど、全然だめで使えないとか言って担当言ってましたし。
(注:あくまで担当の主観です)

とりあえず、飛行機が運航に影響するような不具合はやめてほしいですねぇ。


Core Duo+Virtual PC 2007で仮想化 [開発]

仮想化できるのに「出来ません」というメッセージとともに
チェックボックスが死んでる場合がある。

これは、BIOSの設定でVTがOFFとなっているため。
これをONへ変更すれば仮想化OK
単純に仮想化なしでVirtual PCで運用するよりパフォーマンスがあがる。

ただし、

BIOSの設定変更画面はどう開くか
VTの設定はどこで変更するか
そもそもVTSの設定変更はできるのか

というのはメーカーや機種によって違いますので
要確認。またBIOSの設定変更は自己責任で。