java:javaからのOSコマンド呼び出しと注意点

javaのプログラムからOSのコマンドを実行したい場合は、Runtimeクラスのexecメソッドで実現できます。
 
しかし、OSのコマンドは別プロセスで立ち上がるので注意が必要です。
ProcessクラスのwaitForメソッドでプロセスの終了を待たないと、処理が前後してしまい意図しない挙動となることがあります。
また、destroyメソッドでプロセスを明確に終了させ、資源を回収することも重要です。
 
以下は、プロセスの終了を待たないと意図しない挙動となることを確認するためのテストコードです。
javaのプログラムでは、OSのコマンドを使用して、3秒のスリープ後に hoge.txt を aフォルダ から bフォルダ へ移動させています。
waitForメソッドを使用しなかった場合、javaのプログラムが終了した時点で hoge.txt の bフォルダ への移動が完了していない(javaのプログラムが立ちあげたプロセスが終了していない)ことを確認できます。
逆に、waitForメソッドを使用した場合は、javaのプログラムが終了した時点で hoge.txt の bフォルダ への移動が完了している(javaのプログラムが立ちあげたプロセスが終了している)ことを確認できます。
 

【テストコード】

・RuntimeTest.java

【実行用バッチ】

・RuntimeTest.bat

【「p.waitFor();」と「p.destroy();」をコメントアウトした場合の実行結果】

【「p.waitFor();」と「p.destroy();」を有効にした場合の実行結果】

java:色々なfor文の書き方

新人にfor文を教えるために書いたコードです。
5通りの書き方をしており、全て同じ挙動を示します。
これらの書き方を使い分けることで、様々なループ条件を記述できます。

【サンプルコード】

【実行結果】

java:thisで指定されたメンバ変数が自クラスにない場合、スーパークラスを参照しにいくことの確認

実務を行う中で気になることがあったので、調査しました。
javaでは「thisで指定されたメンバ変数が自クラスにない場合、スーパークラスを参照しにいく」という挙動になると聞いたので試してみたのですが、確かにそうなりました。
試した結果は以下です。

【テストコード】

・Main.java

・ThisClass.java

・SpecializeClass.java

【実行結果】

Windowsへのopensource COBOL環境の構築手順

COBOLの概論のパワポを発表した後、WindowsでCOBOLの練習を行えるように、開発環境の構築手順を作成しました。
opensource COBOL を使用して環境を構築する手順です。

半日~1日を見た方が良い複雑な手順ですが、メインフレームや有償のパッケージソフトを使用せずともCOBOLを動かせるようになるというメリットがあります。

手順はこちらになります。

COBOLの概要を発表しました!

COBOLを全く知らない方向けに、COBOLの概論のパワポを作成し、社内で発表しました!
視聴者の方々がリファレンスを引いて自力で調べられるようになることが目的です。

今更COBOLと思われるかもしれませんが、金融システムを始めとしたレガシーで信頼性を求められるシステムではまだまだ現役の言語です。
仮にCOBOLから脱却した現場であったとしても、仕様調査のために昔のCOBOLのソースを読む必要が出ることもあるので、そのような現場に行くのであれば入門的な部分は知っておいて損はありません。

パワポはこちらになります。