javaを学ぶ

プログラマを30年近くやっているけど、プログラム言語の仕様とか、言語機能の正しい使い方をしっかりと学んでこなかったような気がする。これでは、万年初級プログラマの域を脱することはできないと思い、java言語をしっかり学んで行こうと思う。そして、眠っていたこのブログでその足跡を残そうと思った。しかしながら私の怠け癖のため、不定期での更新になると思われるが。

今、Javaのライブラリを勉強している。MicroSoft Officeのエクセルファイルを扱う「Apache POI」が提供しているライブラリである。単にPOIと呼ぶことにする。現在POIの英語サイトを見ると「15 September 2017 - POI 3.17 available」とあるから3.17が最新なんだろう。3.17がJava 6をサポートする最後のバージョンであるということで、次のバージョンはJava8以上をターゲットした4.0.0が出るらしい。

Apache POIサイト(英語)
https://poi.apache.org/

実はこのPOIを今年の4月から使っているのであるが、そこそこ大きなエクセルファイルを扱うとOutOfMemeoryになってしまうという問題があることを最近知った。私のマシンでは百万行2列でギブアップである。物理メモリは4G。それで、「StreamingReader」というライブラリが登場して読み込み時に関してはこの問題を解決している。せっかくだがからこのライブラリを後学のため、ちょっと見てみようと思う。

●StreamingReaderのサイト
https://github.com/monitorjbl/excel-streaming-reader

このライブラリはメモリにバッファリングされたデータをファイルシステムに出力して、そのファイルを通してデータを扱う。バッファリングされるデータサイズを設定することで上限メモリを超えないように制御できる。