無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Java実行環境のOSを判定する

Java実行環境のOSを判定するAPI(というか定数)が「commons-lang」org.apache.commons.lang.SystemUtilsにあります。ナイス。(もうちょっとで「os.name」システムプロパティの解析コードを書くところでした・・。)

ただ、booleanの定数になっていてやや使いにくかったので、列挙型を返す関数にしてみました。

/**OSの種別*/
public enum OSName {
    /**AIX*/
    AIX,
    /**HP_UX*/
    HP_UX,
    /**IRIX*/
    IRIX,
    /**LINUX*/
    LINUX,
    /**MAC*/
    MAC,
    /**MAC_OSX*/
    MAC_OSX,
    /**OS2*/
    OS2,
    /**SOLARIS*/
    SOLARIS,
    /**SUN_OS*/
    SUN_OS,
    /**WINDOWS*/
    WINDOWS,
    /**不明*/
    UNKNOWN
}


/**
 * OS名を取得する。<
 * @return OS名
 */
public static final OSName getOsName() {
    if ( SystemUtils.IS_OS_AIX ) {
        return OSName.AIX;
    } else if ( SystemUtils.IS_OS_HP_UX ) {
        return OSName.HP_UX;
    } else if ( SystemUtils.IS_OS_IRIX ) {
        return OSName.IRIX;
    } else if ( SystemUtils.IS_OS_LINUX ) {
        return OSName.LINUX;
    } else if ( SystemUtils.IS_OS_MAC ) {
        return OSName.MAC;
    } else if ( SystemUtils.IS_OS_MAC_OSX ) {
        return OSName.MAC_OSX;
    } else if ( SystemUtils.IS_OS_OS2 ) {
        return OSName.OS2;
    } else if ( SystemUtils.IS_OS_SOLARIS ) {
        return OSName.SOLARIS;
    } else if ( SystemUtils.IS_OS_SUN_OS ) {
        return OSName.SUN_OS;
    } else if ( SystemUtils.IS_OS_WINDOWS ) {
        return OSName.WINDOWS;
    }
    return OSName.UNKNOWN;
}

手元にあったWindowsLinux(sent-os4)で確認。正しく判定できています。


参考:Macintosh クライアントの検出 - Macの判定方法。「mrj.version」の有無で判定する方法が推奨されています。