Java用のAPIが用意されていないけど、Javaアプリケーションから使いたい!ということはよくありますよね。 例えば文書フォーマットの変換に専用ツールを使いたいけど、コマンドプロンプトからの実行しかサポートしていない・・等です。 こんなときに便利なのがRuntime.execです。これを使うとコマンドプロンプトやターミナルでの操作と同じことが出来ます。実行結果(リターンコード)や標準出力(コマンドプロンプトにずらずら流れるメッセージ)も取得出来るのでエラー判定をJavaでやることも可能です。 今回はこんな便利なRuntime.execの使い方を記載します。現在はRuntime.execの代わりにProcessBuilderが推奨されているので以下でもProcessBuilderを使っています。 オプションもProcessBuilderの方が多いので何かと便利です。詳しくはJava
チャネルのクラス構成 先週はバッファだけでしたが,今週はチャネルも組みあわせて使っていきましょう。 チャネルはストリームの代わりになるクラス群です。大もとになるのはjava.nio.channels.Channelインタフェースです。とはいうものの,ChannelインタフェースにはcloseメソッドとisOpenメソッドしか定義されていません。実際の入出力は,Channelインタフェースから派生したインタフェースを使用します。 入力はReadableByteChannelインタフェース,出力はWritableByteChannelインタフェースで定義します。このほか,大量の入力を扱うScatteringByteChannelインタフェース,同様に大量の出力を扱うGatheringByteChannelインタフェースが提供されています。 これらのインタフェースはすべて名前にByteを含んでい
そこそこ大きなファイルをサーバ側へアップロードしなければいけなくなった。 Javaでファイルアップロードするなら Apache Commons の FileUpload パッケージを使うのが基本中の基本らしい。 Apache Commons FileUpload http://commons.apache.org/fileupload/ 情報を集めているなかで、ぐま あーかいぶさんの記事を読み、StreamingAPIとFileChannelクラスを利用することで、イカしたコードで処理を実装できるらしい(笑 FileChannelの参考http://itpro.nikkeibp.co.jp/article/COLUMN/20060424/236102/ ■Jarファイルを導入 上記のオフィシャルからJarファイル(commons-fileupload-1.2.2.jar)を WEB_
オブジェクト指向プログラミングの考え方については、今までこのブログでも何度か取り上げてきました。 [オブジェクト指向] - 達人プログラマーを目指して オブジェクト指向プログラミングはプログラミング技法のすべてではないとはいえ、Javaのようなオブジェクト指向言語で本格的なプログラムを作るには理解を避けて通ることができませんし、また、関数型言語など他のパラダイムの言語を利用するにしても、オブジェクト指向の考え方をまったく理解しないまま使いこなすということは困難でしょう。オブジェクト指向の考え方はデータ構造やアルゴリズムといったことと同様に、プロフェッショナルなプログラマーが理解しておくべき基本的な素養といってもよいと思います。実際、海外では募集要項でオブジェクト指向の理解を前提とすると書かれていることが普通ですし、プログラマーの面接試験で、アルゴリズムと並んでオブジェクト指向プログラミング
オブジェクトとクラスの関係について、次のような説明を見かけました(文言の引用ではなくて、檜山による要約)。 オブジェクトとクラスは全体としてツリー構造をしていて、ツリーの末端をオブジェクト、末端以外のノードをクラスという。末端であるオブジェクトは、その親ノードであるクラスのインスタンスと呼び、クラスどおしの親子関係を継承関係と呼ぶ。 うーむ、この説明、ある意味「簡潔でわかりやすい」とも言えるのだけど、ちょっと単純化し過ぎでしょ。 オブジェクトやクラスの概念て、そんなに美しくもなきゃ、整合的でもありません。実用性やら実装上の都合やらでゴチャゴチャですがね。しかし、そのゴチャゴチャが悪いともいえません。ゴチャゴチャを無理に単純化することなく、必然性を持った(幾分は偶発的だけど(苦笑))複雑さとして理解すべきかと思います。 というわけで、メタクラスやレイフィケーション(reification)な
Hibernate、ActiveObjects、S2Dao、Apache Cayenne、iBATISなどORMフレームワークが群雄割拠状態なJavaですが、使い方を勉強したり設定ファイル書いたりするのが少し面倒かなと思っている人がいるかもしれません。 特にちょっとしたアプリケーションを作るならば、素のJDBCを使うのは嫌だけど、それに近い形で使えるORマッパーが欲しいと思うことがたびたびありました。 ということで以下の条件でJDBCを薄くラッピングしているJavaのライブラリを探して発見したものを紹介します。 レコードをオブジェクトに自動的にマッピングしてくれる できるだけSQLを書く量を減らすことができる いざとなったら生SQLを書くことができる 導入が簡単である 依存ライブラリが少ない 以下に挿入、検索、更新、削除を実行するコードを書いています。 今回はDBがMySQLだったので、M
【祝】:Java SE 7 正式リリース 2011年7月29日 at 2:00 午前 3件のコメント 本日(2011年07月28日(日本時間29日 日本でもぎりぎり28日だったようです。))Java SE 7 が正式にリリースされました。5年ぶりのリリースとなる Java SE 7 ですが、Java SE 7 は進化として位置づけられているバージョンになります。ここで言う進化とは言語仕様に対する大幅な変更はなく、開発生産性の向上やライブラリのアップデート等が多く、今まで Java SE 5, 6 等で開発をしてきて頂いた Java 開発者は比較的かんてたんに移行が可能になっています。Project Coin, NIO.2 等により可読性、開発生産性が向上した最新の Java SE を入手頂き是非開発現場でご使用ください。 サポート環境はこちら Java SE 7に関するドキュメント チュー
EclipseでJavaDocを作ろうとした時に困ったことの回避メモ。 ▼JavaDoc生成時に、文字コード`\65279`は不正だと怒られる JavaコードをUTF-8で作っていて、かつ人から引き継いだ時によく発生する。 これは、JavaDocツールがBOM有りUTF-8に対応していないから発生するらしい。 (ちなみに、Javaは対応) これはEclipseで直そうとするとハマるので、素直に外部ツールを使って `UTF-8`(BOM無し)に変換してやればいい。 |・x・)っ[ オススメ変換ツール ] ファイル検索で`*.java`見つけて、検索窓からファイルをまとめてドラッグ&ドロップ。 速攻変換できるのでラクちん。 ▼出来上がったJavaDocをブラウザで見ると文字化けする 多分、出来上がったHTMLの文字コードが設定されていないため。 [エクスポート]->[Java:JavaDoc]
先日DevLOVEの主催するぐるぐるGroovyという勉強会に参加してきました。 1月24日 DevLOVE ぐるぐるGroovy -Easy Going Groovy-(東京都) Groovy言語については、構文がJava言語に非常に近い上に、Javaの既存ライブラリーとの相互運用性も高く、さらに、Java言語に比べて非常に簡潔にプログラムが書けるという特徴があります。動的言語のRubyのような柔軟性とJavaプログラマーにとっての学習のしやすさをいう面を兼ね備えた軽量言語であり、私としてはSI業界でもきっと流行るはずに違いない思いと数年前から注目していました。 Groovyイン・アクション 作者: Dierk Konig,Andrew Glover,Paul King,Guillaume Laforge,Jon Skeet,杉浦孝,櫻井正樹,須江信洋,関谷和愛,佐野徹郎,寺沢尚史出版社
1. わかる !Java バイトコード ― 30 分でわからない ?Java バイトコード入門 筑波大学大学院 システム情報工学研究科 博士後期課程 水島宏太 2. 自己紹介とか Twitter: @kmizu はてな : id:kmizushima github: http://github.com/kmizu/ 大学院生 構文解析の研究とかやってます 特に Packrat Parsing Scala 好き Scala の布教活動をあちこちでやったり JVM 好き JVM 上で動作する言語処理系 Onion を開発 3. Agenda プログラミング言語としての Java バイトコード マシンモデル 型システム 命令セット クラスファイルベリファイア ベリファイアがはじく操作の例 簡単なプログラムを javap で逆アセンブルする 役に立つかもしれない javap のオプション解説 クラ
プラグインの設定画面から以下のパラメータを追加します。 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=18080 -Dcom.sun.management.jmxremote jconsoleが接続できるように、TomcatのJVMパラメータへ追加します。 認証なし。 tomcatプラグインからtomcatを起動。一応パラメータ確認。 %JAVA_HOME%\bin\javaw.exe -Dcatalina.home=C:\Dev\Java\tomcat5 -Djava.endorsed.dirs=C:\Dev\Java\tomcat5\common\endorsed -Dcatali
前に書いた、 アプレットからWebサーバへファイルアップロード - 今日覚えたこと の続き。 問題点 あのコードでは2つの問題があった。 アップロード速度が遅い 大容量のファイルをアップロードすると OutOfMemory の例外になる つまり、ダメだということ。 アップロード速度の改善 前回のコードでは、実際にファイルを送信しているところで、 int buff = 0; while((buff = in.read()) != -1){ out.write(buff); } と書いていた (inがファイルからの読み込みで、outがhttp出力への書き込み)。これは1バイトずつ処理しているので、遅かった。 この部分を、こう直した。 byte[] bytes = new byte[1024]; while(true){ int ret = in.read(bytes); if(ret == 0
Tomcat起動時のJava引数でJMXエージェントを有効化するオプションを追加してやればサーバ側はOK。 たとえばbin/setenv.shでCATALINA_OPTSに追加してやる。 CATALINA_OPTS="$CATALINA_OPTS \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=8686 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ " あとはJConsoleを実行する側でサーバ名とポート番号(上の例では8686)を指定して接続すればよい。 ちなみに上の指定はSSLも認証もなしの状態なので、クローズドなN/W経由で利用しないと危険。 ま
概要 jconsoleで Windows PC から Linux サーバ上で稼動している Tomcat サーバに対して接続し、リソース使用状態を監視する方法についてまとめた。 このjconsole、「接続しようとしても接続できない」という問題に結構出会う。 しかも「何が問題か」を教えてくれない。 以前にもこの現象に出会って時間を取られてしまったにもかかわらず、メモを残していなかったので、また調査するはめに...orz 無駄な時間を今後費やすことがないよう、自分が出会ったトラブルについてまとめた。 jconsoleとは Sun JDK 6 の中には、コンパイラ javac の他にも、いくつか役に立つツールが含まれている。 jconsole は、Java プログラムに対し、次のような情報を得ることができる。 パフォーマンス情報 メモリの使用状態 稼働中のスレッドに関する情報 JMX
Apache Antはmakeファイルなどに相当するビルドツールです。複雑なコンパイル作業などを自動化してくれます。ここではAntのインストール方法や利用方法について確認していきます。 Ant 1.8.2のダウンロード及びインストール ANT_HOME及びPATHの設定 Antの動作確認 Antのドキュメントについて
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く