Develop with pleasure!

福岡でCloudとかBlockchainとか。

Java

クロージャの導入

Java7で導入がささやかれていたクロージャがどうも見送りになるっぽい…。Java 7で登場する新機能一覧、クロージャは残念な状況 | 開発・SE | マイナビニュース

Effective Java

Effective Java第2版の日本語訳が出てたので早速アマゾンでGet!第1版から7年ぶりのリリース。Java1.5で追加された言語仕様をカバーしており、ジェネリックス、enum、アノテーションの章が追加されている。スレッド周りも並列性というタイトルで結構変わっ…

BTrace

カーネルの動作をトレースするDTraceは知ってたけど、Javaでもバイトコードの動作をトレースできるBTraceというのがあるのね。 BTrace is a safe, dynamic tracing tool for the Java platform. BTrace can be used to dynamically trace a running Java pro…

スレッドセーフなWebアプリ

Java の理論と実践: ステートフルな Web アプリケーションはすべて壊れているのか基本的なWebアプリケーションは、 ブラウザがリクエストを発行 サーバサイドで処理を実行し、レスポンスを生成 ブラウザがレスポンスを受け取る といった基本的な流れで、処理…

Java SE 6 Update 10

新版で追加された主な機能は次のとおり。 Java Quick Starter: Javaアプリケーションやアプレットの起動時間を大幅に短縮するコンポーネント Javaカーネル: 最小のJRE(Java Runtime Environment)コンポーネント群によって構成されたカーネル。Javaの起動・実…

EJB2.x→EJB3.1

最近のJavaEE事情 ~Java EE 6の向かう先~ (1/2):CodeZine EJB2.1のときは、EntityBeanもパフォーマンス面の課題などがあり、MessageDriveBeanも存在はしていたが実際に使用って事例を身近で聞いたことは無い。結局、主に使用されていたのはSessionBean…

MapReduce

Googleが採用している分散処理アルゴリズムMapReduce。何年か前に丸山先生がとりあげてた気がする。Javaで分散処理というと、ビジネスロジックを独立して公開し、リモートアクセスを行うEJBの実装(まぁ、RMI実装か)を考えるけどMapReduceのアルゴリズムを…

Flash with JavaME

「Sony Ericsson、Java MEとFlash Liteを連携する"Project Capuchin SDK"発表」 Sony Ericsson、Java MEとFlash Liteを連携する"Project Capuchin SDK"発表 | 開発・SE | マイナビニュースおぉ、これは携帯アプリ開発者にとっては朗報では?携帯アプリでアニ…

Intellij IDEA7.0.4リリース

メンテナンスリリースが出たみたい。 http://blogs.jetbrains.com/idea/2008/08/intellij-idea-704-takes-off/これでIDEA7でもSubversion1.5に対応したみたい。

Intellij IDEA8 M1リリース

いつの間にかM1がリリースされてたのね。 http://d.hatena.ne.jp/masanobuimai/20080810#1218338519 http://www.jetbrains.com/idea/nextversion/JavaScript Debbugerもリリースされたみたい。Flashのデモが公開されてるが、見ると普通のJavaのDebuggerと同…

MOM

JMSとWebServiceと非同期でログ出力する際に、ベースでとちらを使用するか? JAX-WSを初め最近はWebServiceの方が勢いは良い。が、WebServiceはベースがHTTPなので、メッセージの配信の保証という視点では信頼性が低い。信頼性の高いメッセージングとなるとM…

Restlet

JavaからRalsのサーバに対して、リクエストをPOSTする機能が必要で、HttpClientでも使って実装しよっかなーって思ってたが、やはりここは時代に乗ってREST。てことでJavaでRESTなフレームワーク探してみた。Railsは2.0からActiveResourceでRESTサポートをし…

SimpleDateFormatで日付の妥当性チェック

SimpleDateFormatで日付の妥当性チェックをしようと SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); format.parse("20080132"); とするが、日付が英字だったりするとParseExceptionが発生するが、実在しない日付を設定してもParseExceptionは…

JRuby本

JRuby本頂きました。あまりお手伝いできてなかったのでちょっと心苦しい…。 JRuby 徹底入門作者: 株式会社イーシー・ワン出版社/メーカー: ソーテック社発売日: 2008/07/19メディア: 単行本購入: 4人 クリック: 184回この商品を含むブログ (16件) を見るRuby…

SpringModulesでBeanValidator

Hibernateとか独自にBeanValidatorの実装を持ってるフレームワークはあるけど、Springには無いなーと思っていたら、SpringFrameworkにアドオンするツールセットとしてSpringModulesというコンポーネントが公開されている。 https://springmodules.dev.java.n…

バリデーション

Struts2で入力値にバリデーションをかける。基本的な仕組みはStruts Classicの頃と変わっていない。変わったのは、 バリデーションの設定ファイルは、Actionと同じ階層で「action名-validation.xml」という命名規則でAction単位に作成する。 エラーメッセー…

Apache Cocoon

最近2.2系がリリースされてたんだ。2.2からSpringベースになったみたい。 http://cocoon.apache.org/ Cocoon2が採用してるアーキテクチャ自体はちょっと面白いなって思う。Pipelineというコンポーネントの中でリクエストを受け取り、パイプ中にコンポーネン…

Springで単体テスト

SpringFrameworkをベースに開発をしてるということは、テスト時も必要な個所は(DataSourceのインジェクションや、ORM使ってたらiBATISの場合は、SqlMapClientのインジェクション)ApplicationContextの設定を引き継いだ状態でテストをしたい。Springでは予…

OAS10g R3でWebService開発

OASは10gR3からJSR-181のWeb Services Metadata for the Java Platformに対応している。そのため、Webサービスの定義をJavaコードの中にアノテーションとして記述できる。ただし、OASの10gR3は完全にJAX-WSをサポートしている訳ではなく、ベースはあくまでJA…

Sitemesh+Freemarker

Tiles+FreeMarkerの構成だと、FreeMarker内でTilesのtaglibを使用することとなり、Servletコンテナを必要とし、FreeMarkerのローカルリソースを参照する機能が有効にならない。そのため、これを機にレイアウトエンジンをTiles→Sitemeshに変更してみた。 以…

JAX-WS in JDK6.0

JDK6.0って、JAX-WS2.0の仕様を取り込んでるのね。 http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/JDK6.0を使えば、JAX-WSのRIとか使わずとも、JAX-WS準拠のWebServiceが作れると。知らんかった…。それにしても、もうVMは何だかプラットホ…

FreeMarker+Tiles連携でローカルリソースが参照できない。

http://d.hatena.ne.jp/techmedia-think/20080612 で、FreeMarkerとTilesの連携はできたけど、Tilesと連携するとFreeMarkerで作成した画面のftlファイルをwar内部に配備せずに、ローカルリソースにした場合、ファイルが見つからなくなった…。FreeMarker単体…

FreeMarker内でTilesのタグを利用する。

Struts2でViewの構成をTiles+FreeMarkerにするときの構成。まず、クラスパスに以下のjarを追加する。 tiles-core.jartiles-jsp.jartiles-apistruts2-tiles-plugin.jar続いて、web.xmlにTilesのリスナーとtilesのtaglib定義する。tiles-jsp.tldは、tiles-jsp…

CSVパーサー

CSVファイルを扱うことは多いが、オープンソースでCSVのパーサーって中々メジャーになっていない。まぁ、String#split辺りで簡単にすませちゃってたりしてるから?一応、Apacheでもcommons-csvなるものがあるが、まだsandboxだ。他にも、 ・Open CSV http://…

VelocityからFreeMarkerへ

Struts2に触れるまでFreeMarkerというテンプレートエンジンが存在したことを知らなかった。いろいろググってみると、Velocityよりも機能的に洗練されてそうなので、ViewコンポーネントをVelocityからFreeMarkerへ変更してみた。基本的に、ActionのResultType…

エラーログの捕捉

Struts2では、ExceptionMappingInterceptorで例外発生時に発生した例外により遷移先を制御可能だが、このExceptionMappingInterceptorで捕捉した例外の情報をログ出力することもできる。ExceptionMappingInterceptorのソースを見れば明らかだが、 protected …

分散リポジトリ

開発環境→内部結合テスト環境→外部結合テスト環境→本番環境とモジュールリリースの際には様々な環境へのリリースを実施する。リリースのタイミングによってこの機能だけ先行リリースとか、至急このバグのみリリースといった状態が現実的には発生する。ただ、…

iBATOR

iBATISも一々CRUDのSQL書くのメンドーだなーって思ってたら、iBATORって自動生成ツール提供してるじゃないですか。http://ibatis.apache.org/ibator.htmlEclipseプラグインで、CRUD機能を持つ、DAOのインタフェースと実装、あとsqlmap-config.xmlを生成して…

ListをValueに持つMapをListのサイズでソートする

valueにListのオブジェクトを持つMapオブジェクトがあるとして、そのMapオブジェクトをvalueに入っているListのサイズの降順でソートしたい場合。 Map<String, List> map = new HashMap<String, List>(); //適当にMapに値をセットする .... //Listのサイズの降順にソート List<Map.Entry> entries = </map.entry></string,></string,>…

自作Interceptorで発生した例外の捕捉

Struts2のActionに適用するInterceptorを独自に作成してstruts.xmlに定義してみた。 <interceptors> <interceptor name="validTransitionChecker" class="ValidTransitionCheckInterceptor"/> <interceptor-stack name="customStack"> <interceptor-ref name="validTransitionChecker"/> <interceptor-ref name="defaultStack"/> </interceptor-ref></interceptor-ref></interceptor-stack></interceptor></interceptors>