Develop with pleasure!

福岡でCloudとかBlockchainとか。

Java

bitcoinjのmicropayment channelの実装

bitcoinjでは0.10からClient/Server形式のpayment channelをサポートしているみたいなので、どういったものなのか見てみる。 Working with micropayment channels Protocol overview ベースとなってるBitcoin wikiの記事 https://en.bitcoin.it/wiki/Contrac…

java.lang.OutOfMemoryError: GC overhead limit exceeded

Javaなエンジニアであればお馴染みのOutOfMemoryError。 こないだ単体テストを全件流してたら途中で java.lang.OutOfMemoryError: GC overhead limit exceeded が発生。お馴染みのOutOfMemoryErrorかと思ったけどメッセージに「GC overhead limit exceeded」…

JenkinsのPlugin開発環境構築

CIツールとしてJenkinsを使ってて、 テストの実行 カバレッジの計測 検証済みマージ ビルド成果物の作成 なところまでは自動化までできてるんだけど、今度はビルド成果物を検証環境へセットアップするとこまで自動化したいなーという思いと、JenkinsのPlugin…

リフレクションを使わずにMethodHandleを使って動的にメソッドを実行してみる。

Java7からJVM上で動作する動的言語のためにInvoke Dynamicという仕組みが導入された。Invoke Dynamicの導入前までは、動的言語の特性から静的に型が判断できない実行処理においては、各言語毎に処理系が必要で、その処理系に実行処理が委譲されていた。これ…

Javaでもirbしたい!

Rubyを使った開発だと、コンソール上ですぐにコードを実行し、その結果を確認できるirbって便利な機能がある。Javaでも、mainメソッドを持つクラス作って実行すれば良いんだけど、わざわざそのためだけのクラスを作る必要があるのと、コードを書き換えて実行…

Androidでライブラリプロジェクトを作成する際の考慮事項

Androidで通常のアプリケーションプロジェクトではなくライブラリプロジェクトを作成する際の考慮事項が、Dev Guideに記載されている。ざっくり意訳すると、ライブラリプロジェクトとそれに依存するアプリケーションを開発する際に、以下のことに注意する必…

JavaとRubyで暗号化/復号化

Rubyで暗号化したデータをJavaで復号化、またその逆を行ってみた。今回はAES128ビットの暗号化モードCBC、パディングはPKCS#5で実施。 まずRuby側のコード。 require 'openssl' require 'base64' class CryptUtil def self.encrypt(pass, value) enc = OpenS…

JExcelAPIでMaximum number of format records exceeded. Using default format.

JExcelApiを使用してExcel帳票を出力してると、途中で、 Maximum number of format records exceeded. Using default format.って警告のログが出力され、それ以降セルのフォーマットが適用されない帳票が出力される。この現象は、WritableCell#setCellFormat…

java.util.Objects

JDK 7: java.util.Objectsに欲しい、頻繁に書かれるユーティリティメソッドは?Java7から新たに導入される、java.util.Objects。 ・リフレクションを使い、オブジェクトのすべてのフィールドを書き出すtoString(arg) ・実用的な clone() メソッド JDK 7: java…

テラコッタ

【ハウツー】JVMレベルでクラスタリングを可能に - OpenTerracotta (1) JVMレベルのクラスタリングって何? | エンタープライズ | マイナビニュースへー、こんなのあったんだ。VMをまたいだスレッド間の同期もサポートしてると。アプリケーションをスケールす…

Tomcatの複数起動

Tomcatのstartup.shコマンドを叩くとTomcatが起動するが、デフォルトだとTomcatのインスタンスは1つしか起動しない。起動したTomcatのインスタンスは基本的に1つのVM上で起動していることになる。当然ながらTomcatに複数のWebアプリケーションをデプロイし…

mod_jkでTomcatのクラスタ化

mod_jkを使用してTomcatのクラスタ化環境を作ってみた。クラスタ化と言っても、セッションレプリケートはせず、sticky_sessionを有効にして処理を分散させるだけ。なので、セッションが有効な間のリクエストは同一サーバに割り振られる。必要な作業としては…

SpringBatch2.0

Spring Batchの2.0がリリースされたみたい。ジョブの分割とアノテーションによる設定に対応したSpring Batch 2.0新機能としては、 Java 5への対応 非順次実行 拡張性 アノテーションによる設定 Java5の対応とか、まだだったのね…。 個人的に、条件付き実行、…

Seasar2のコンポーネント自動登録の際の順序

現在動作中のSeasar2+TeedaのWebアプリケーションを別のサーバへ移し変えたところ、WARファイルの中身は全く替えていないのに、TeedaのLayout機能を利用して呼ばれるはずの、あるPageクラスのinitializeメソッドが呼ばれないという現象にハマッた。全くアプ…

Java Store

JavaOneで詳細を発表:Sun、Javaアプリのオンラインストア「Java Store」発表 - ITmedia ニュースSunがJavaおよびJavaFXで開発したアプリケーションを販売するオンラインストアを公開する計画があるらしい。AppleのAppleStoreやGoogleのAndroidMarketとか、…

ActiveObjects

JavaにもRailsのActiveRecordと同様のOSSフレームワークがあったねの。「ActiveObjects」 https://activeobjects.dev.java.net/ActiveRecordに触発されて作られた軽量Java O/Rマッパ「ActiveObjects」|gihyo.jp … 技術評論社1つのJarだけで設定ファイルレ…

Sun買収ですかっ。

オラクル、サンの買収で最終合意 - CNET JapanIBMの買収が失敗したと思ってたら、Oracleが買収成功ですか!BEAに続き、Sunまでも。Oracle金持ってるなー。でも、IBMの買収に関する情報がかなり漏れてたのに比べ、今回は事前に情報があまり流れていなかったよ…

Google App Engine for Java

いよいよ登場で、色んなBlogで取り上げられてる。JRuby動かしたり色んなフレームワーク動かしたりとPythonだけだったAppEngineのスタートの頃よりも、盛り上がりを感じる。JRubyとかもちゃんと動くのかぁ。ちなみに Google App Engine、サーバはJetty | 開発…

JSR277 ModuleSystem

あら、Java7から導入予定とか言われてた、JSR277のJavaModuleSystemって見送りになってたのね。JSR294のJava Language Modularity Support with Superpackageの方は予定通り導入されるみたいだけど。JSR277では、JAR形式のアーカイブにモジュール名とバージ…

JSR299

JSR299の名称がWebBeansから「Java Contexts and Dependency Injection」と改名されたらしい。In Relation To... Revised Public Draft of JSR-299: Java Contexts and Dependency InjectionPublic Review DraftのPDFファイルも名称が改名されてる。Draftに…

Deployment Toolkit

Java技術最前線 - 「Java SE 6完全攻略」番外編 Java SE 6u10の新機能 その2:ITpro Java6u10から利用可能になったDeployment Toolkitネタ。Deployment ToolkitというJavaScriptのライブラリで、ターゲットはAppletとJavaWebStart。今までブラウザやバージョ…

Mysaifu JVM

携帯上のJavaVMと言えばJavaMEだが、携帯上でJavaSEをサポートするVM「Mysaifu JVM」が存在する。こちら↓ Windows Mobile用Java SE対応JVM「Mysaifu JVM」の開発者に聞く - SourceForge.JP Magazine : オープンソースの話題満載まだSunがJDKがオープンソース…

型推論

Java7から本格的にサポートされる型推論。(C#では既にC#3.0からサポートされてるみたいだけど。)InfoQにも記事が掲載されている。 Type Inference(型推論)は、Java 7にとって良いアイデアか?まだ、書き方自体は決まってないようで2通りの案が挙がっている…

G1GC

Java7から導入予定だったGarbage-Firstネタ。Java6にも組み込まれたみたい。 Java SE 6 Update 14のEarly Access公開、G1ガーベージコレクタが利用可能に | 開発・SE | マイナビニュース特徴としては、ヒープ領域が分割され、その領域単位でのメモリ開放を行…

NetKernel

NetKernelでJavaの並行性を越える (1/6):CodeZineこちらの記事で初めて耳にした「NetKernel」。(MicroKernelとかはDIコンテナをベースに組み込んだGeronimoのアーキテクチャ等、良く耳にすることはあるけれど。)あまりググっても日本語記事はヒットしな…

Android開発環境

iPhoneに引き続き、Androidの開発環境も構築してみる。こちらはiPhoneと違い、Windowsで開発が可能。iPhoneの場合はObjective-Cでの開発になるが、Androidの場合はJavaベースなので、個人的にAndroidの方がとっつきやすい。最初にこちらから、AndroidのSDKを…

Pluggable Annotation Processing API

Java5からアノテーションが採用されたけど、Java6ではそれを扱うための仕組みとしてJSR269として定義されていたPluggable Annotation Processing APIというのが組み込まれている。8. その他の機能 | TECHSCORE(テックスコア)アノテーションを処理するための…

Servlet3.0の行方

InfoQより Servlet 3.0に関するパブリック・レビューが物議をかもすアノテーションを用いたServletのPOJO化仕様は消滅?まぁ、直にServletを触る機会はそうそう無いんだけれど、RESTなサービスを公開するのにPOJOなServletを利用するってのも面白いかなーと…

SpringOneの発表

InfoQにSpringOneの記事が掲載されてた。 SpringOneにて新生Tomcat Server、VMware社とのパートナー契約、ActionScriptの提供が発表される 大きな発表としては、 SpringSource tcServer VMWare社とのパートナーシップ Adebeとの連携によるFlexサポート Sprin…

JDKのモジュール化

JDKのモジュール化ネタ。巨大でモノリシックな JDK はモジュール化されるべきか確かに、Hello World!!を標準出力するのに、300以上のクラスのロード、初期化が発生するというのはちょっと…と思う。巨大化したJREの軽減策として、Java KernelやQuickstarterを…