ARCHIVE  ENTRY  COMMENT  TRACKBACK  CATEGORY  RECOMMEND  LINK  PROFILE  OTHERS
<< March 2024 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
2016.02.05 Friday

スポンサーサイト

一定期間更新がないため広告を表示しています

2013.07.21 Sunday

奇跡のjava

日経コンピュータ2013/7/11号を読みました。

特集:奇跡のjava
関数型言語scalaと関数型を実装予定のjava8についての記事。
関数型によって、高生産、高品質が両立するとのこと。

・java vmで動作する。
・javaから呼べる。
・java開発者は1ヶ月程度で充分に理解できる。
・javaと比べて40-50%のコード削減ができる。
・プログラム規模が小さくなるので、保守コストも節約できる。
・大手IT企業で実績がある。
 - 三菱UFJインフォメーションテクノロジー
 - 野村総合研究所
 - 富士通
 - NTTデータ
・フレームワーク類も豊富。
 - webフレームワーク
 - o/rマッパー
 - IDE
 - ビルドツール
 - テスト用ライブラリ
 - ビッグデータ処理
・デメリット
 - 大手sierによるサポートが未整備
 - 新しいフレームワークによるリスク
 - ノウハウが未整備
 - 言語仕様の頻繁な改訂
 - バージョン間のバイナリ非互換性
 - コンパイル速度が遅い

・java8
2014.3リリース予定。
関数型を実装。

scalaは新しい技術であるが、javaとの親和性が非常に高く、かつ生産性が高い。
java8で関数型が実装されるということも、scalaへの注目が集まるのではないか。
開発言語としてシェアを増やしそう。

関連記事

最後に「EclipseでScalaプログラミングを始めるための基礎知識」から関数型の説明にあたる部分を引用します。
・java
public List filterNames(List<String> names, int len) {
        List<String> result = new ArrayList();
        for (String name : names) {
            if (name.length() >= len) {
                result.add(name.toUpperCase());
            }
        }
        return result;
    }

・scala
def filterNames(list: List[String], len: Int) = list.filter(_.length() >= len).map(_.toUpperCase)

リストからlen以上の長さを持つ要素を大文字に変換する処理。
手続き型と関数型ではこうも違うのか。
確かにscalaは短い。
2012.10.20 Saturday

パッケージ名の一意化サービス

javaのパッケージ名はドメインを逆転させた名称をつけます。
jp.co.yahoo
みたいに。
企業は普通ホームページを持っているので、自ずとパッケージ名は決まります。
じゃあ、ドメインを持っていない個人は?

Javaカンファレンスという団体が自身のドメインを使わせてくれるサービスをしています。
ここから、簡単に登録ができます。

登録しました。
androidのuiを思いつき、作っていたのですが、githubに公開してみたいなと思い、調べてみました。
2011.07.31 Sunday

java6 javadoc

外でも開発したいので、javadocの日本語版ダウンロードを探していたが、なかなか見つからず、ここへ行き着いた。

助かりました。
調べていて気づいたのだけど、いつの間にかjava sdk7がでてた。
2011.04.23 Saturday

jdbcの性能

仕事でjdbcの処理速度を検証しました。

■ある検索処理について
・改善前
取得レコード数:4451(ほんとは9001だけど、途中でメモリエラー)
取得カラム数:278
フェッチ処理時間:24.51sec
1レコードあたり平均フェッチ処理時間:5.50msec

select * を使って、不要カラムも取得しているので、必要なカラムだけをselectするように改善。

・改善後
取得レコード数:9001
取得カラム数:7
フェッチ処理時間:10.12sec
1レコードあたり平均フェッチ処理時間:1.12msec

改善後が圧倒的に早い。
jdbcは遅いっていうけど、無駄なselectはよくない。
2011.02.06 Sunday

javaコーディングチェックリスト

java開発のチェックリストを作ろうと思うので、参考URL。

Javaの机上チェックリスト
http://daipresents.com/weblog/fujihalab/archives/2008/05/java-selfcheck-sheet.php

頑健なJavaプログラムの書き方
http://www.alles.or.jp/~torutk/oojava/codingStandard/writingrobustjavacode.html
2010.12.02 Thursday

jspのインクルード

いま、javaを使ったwebシステムの開発をしてるんですが、jspの中から、jspの呼び出しができます。

<%@ include file="include.jsp"%>

共通部分を外出しにすると同じことを何度も書かなくて済むので、メンテナンスが便利なわけ。
incファイルは、jspから静的に読み込まれるので、incファイルを更新しても、jspを更新しないと読み込まれません。
今日、修正したものの、反映されず、ハマりました。
覚えておきます。
2010.05.27 Thursday

XML-RPCを使ったweb api通信

JavaでのXML-RPCを使用したweb api通信について調べた。
web api通信には「Apache XML-RPC」を使用。

■前提条件
http://ws.apache.org/xmlrpc/
から以下をダウンロード。
「apache-xmlrpc-3.1.2-bin.tar.gz」
以下のjarファイルを使用。
ws-commons-util-1.0.2.jar
xmlrpc-client-3.1.3.jar
xmlrpc-common-3.1.3.jar
xmlrpc-server-3.1.3.jar

■呼び出し
設定クラスにURLを設定し、クライアントクラスに設定。
クライアントクラスの実行メソッドで実行。
引数にメソッド名と引数(ArrayListクラス)を渡す。

■戻り値
結果はObjectを返すが、戻り値の型により、キャストする。
web api戻り値の型とJavaでキャストする型の対応を以下に記す。
string→String
int→Integer
boolean→Boolean
struct→HashMap
array of 〜→Object[]にキャストして、要素をそれぞれの型にキャスト
以上

■サンプルコード
郵便専門ネットのweb-apiを使用。

---------- ここから ----------
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

/**
 * webapiテストクラス
 *
 */
public class Main {
// webapi url
static String url = "http://yubin.senmon.net:80/service/xmlrpc/";
/**
* @param args
*/
public static void main(String[] args) {
try {
// 
System.out.println("都道府県コード取得 戻り値:文字");
getPrefName("01");
System.out.println("経緯度取得 戻り値:文字配列");
getGeoaddress("1560055");
System.out.println("郵便番号存在チェック 戻り値:boolean");
isPostcodeExist("1560055");
System.out.println("取得可能データ件数 戻り値:int");
getCount();
System.out.println("住所取得 戻り値:構造体");
getAddress("1560055");

} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void getAddress(String postCode) throws Exception {
// webapi method
String method = "yubin.fetchAddressByPostcode";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
paramList.add(postCode);
// 実行
Object[] ret = (Object[])client.execute(method, paramList);

// 結果取得
HashMap map = (HashMap)ret[0];
Iterator iterator = map.keySet().iterator();
while(iterator.hasNext()) {
String key = (String)iterator.next();
Object value = map.get(key);
System.out.println(key + ":" + value);
}
}
public static void getCount() throws Exception {
// webapi method
String method = "yubin.getMaxFetchCount";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
// 実行
Integer ret = (Integer)client.execute(method, paramList);

// 結果取得
System.out.println(ret);
}
public static void isPostcodeExist(String preCode) throws Exception {
// webapi method
String method = "yubin.postcodeExists";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
paramList.add(preCode);
// 実行
Boolean ret = (Boolean)client.execute(method, paramList);

// 結果取得
System.out.println(ret);
}
public static void getPrefName(String preCode) throws Exception {
// webapi method
String method = "yubin.getPrefName";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
paramList.add(preCode);
// 実行
String ret = (String)client.execute(method, paramList);

// 結果取得
System.out.println(ret);
}
public static void getGeoaddress(String postCode) throws Exception {
// webapi method
String method = "yubin.postcodeToGeocode";
// xmlrpc設定
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(url));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// パラメータ
List<String> paramList = new ArrayList<String>();
paramList.add(postCode);
// 実行
Object[] ret = (Object[])client.execute(method, paramList);

// 結果取得
for (int ii = 0; ii < ret.length; ii++) {
System.out.println((String)ret[ii]);
}
}
}
2010.05.17 Monday

Jasper Reports

java帳票出力について調査。

JasperReports
米Jaspersoft Corporationが開発、公開しているオープンソース。
ライセンスはLGPL V3。

iReportという帳票デザイナを使用し、帳票テンプレートを作成し、JasperReportsで帳票出力する。
帳票は、pdf, html, xls, csv, xml形式などがあり、直接、プリンタ出力することも可能。

■入手先
iReport
http://jasperforge.org/projects/ireport

iReport(日本語訳版)
http://sourceforge.jp/projects/oss-ja-jpn/releases/47233

Jasper Reports
http://jasperforge.org/projects/jasperreports

■利用方法
iReportで簡単帳票作成
http://www.bbreak.co.jp/technique/doc/ireport/iReport_webdb.pdf

api仕様(英語)
http://jasperreports.sourceforge.net/api/index.html

ExCella Reportsと比較して、
帳票の出力形式が多い。
デザイナが高機能っぽいが、習得に時間がかかりそう。
ドキュメント、資料の類が少ない。

2010.05.13 Thursday

Excella Reports

java帳票出力について調査。

Excella Reports
株式会社ビーブレイクシステムズが開発、公開しているExcella Reportsというオープンソース。
ライセンスはLGPL v3。
http://excella-core.sourceforge.jp/

excelファイルでテンプレートを作成し、Javaで値をバインドしたexcelファイルを出力する。
さらに、それをopenofficeのpdf変換機能を利用し、pdfファイルで出力することもできる。

リファレンス
http://excella-core.sourceforge.jp/excella-reports/reference/index.html

openofficeでpdf変換するときに、openofficeを起動、停止するが、このときにopenofficeが起動した状態だとエラーになってしまうので、注意。
http://groups.google.co.jp/group/excella/browse_thread/thread/33065c2476e21867

openofficeをインストールする必要があり、pdfファイル変換はそこそこの時間がかかる。


同プロジェクトには、以下のものもあった。
・Excella Core
javaからexcelファイルを読み込み、値を取得する。
http://excella-core.sourceforge.jp/excella-core/reference/index.html

・Excella Trans
javaからexcelデータをSQLやO/Rマッピングツールで使用できるようなエンティティに変換する。
http://excella-core.sourceforge.jp/excella-trans/reference/index.html

2010.04.23 Friday

hibernate3.2の必須ライブラリ

ant-1.6.5.jar
ant-antlr-1.6.5.jar
ant-junit-1.6.5.jar
ant-launcher-1.6.5.jar
ant-swing-1.6.5.jar
asm.jar
cglib-2.1.3.jar
checkstyle-all.jar
cleanimports.jar
dom4j-1.6.1.jar
hibernate3.jar
jta.jar
junit-3.8.1.jar
syndiag2.jar
versioncheck.jar

以上

Powered by
30days Album
PR