java.nio.channels 研究所

このエントリーをはてなブックマークに追加
1John ◆0z.4Is5E
新しくなったJavaのI/Oについて情報共有しましょう。
参考リンク
http://java.sun.com/j2se/1.4/docs/api/java/nio/channels/package-summary.html
2デフォルトの名無しさん:02/02/28 21:24
情報くれ。
(・∀・)イイ!
情報期待。
4John ◆0z.4Is5E :02/02/28 21:29
http://java.sun.com/j2se/1.4/docs/api/java/nio/channels/FileChannel.html#write(java.nio.ByteBuffer)
ファイルのI/Oに限ったことではありませんが、
読み込み書き込みの両方ができるクラスが用意されたようです。
nioサパーリ分からん
簡単なファイル読み書きサンプルきぼー
6デフォルトの名無しさん:02/02/28 21:40
>>4
そりゃ便利だ。
今まで自前で作っててあほらしかったからね
7John ◆0z.4Is5E :02/02/28 21:49
This class does not define methods for opening existing files or for creating
new ones; such methods may be added in a future release. In this release a
file channel can be obtained from an existing FileInputStream,
FileOutputStream, or RandomAccessFile object by invoking that object's
getChannel method, which returns a file channel that is connected to the
same underlying file.
ということみたいです。
つまり、FileInputStreamやFileOutputStream,RandomAccessFileのメソッドである
getChannel()を呼び出して、FileChannelを利用するという形を
現状は使うそうです。
8John ◆0z.4Is5E :02/02/28 21:52
新たな資料を発見しました。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/nio/index.html
95:02/02/28 21:53
>>7
なるほど。File〜Streamの変更点には気づかなかった。
サンクス
105:02/02/28 21:54
つーかJavaDocにしっかり書いてあるね。
よく読んでみるわ。
11John ◆0z.4Is5E :02/02/28 21:55
ちょっとすれ違いなんですが、Java1.4でF4J使えてます?
他のスレでも聞いてきます。
日本語版いつでんの?
英語勉強しようかなあ・・・・
13John ◆0z.4Is5E :02/02/28 22:06
>日本語版いつでんの?
何の?
14デフォルトの名無しさん:02/02/28 23:28
JavaDoc読むと、随分いろいろ出来るようになってるみたいだけど、
問題はプロダクト実装のライブラリが、ちゃんと仕様どおり動くかどうか
だよな。

メモリマップドファイルは、使い物になりますか?
バッファのバイト単位の(共有OR占有)ロックは、使い物になりますか?
ソケットストリームに対するSelectは、UNIXのそれレベルで使い物になりますか?
プラットホームごとに微妙にだめだったりしますか?

この辺がちゃんと動けば、サーバサイド開発がカナーリ、今までと
違ったものにできるような。シングルスレッドモデル復活か?
15John ◆0z.4Is5E :02/03/01 11:14
>プラットホームごとに微妙にだめだったりしますか?
beta版でのテストが済んでるから、大丈夫じゃない。

>ソケットストリームに対するSelectは、UNIXのそれレベルで使い物になりますか?
Selectって何?
16デフォルトの名無しさん:02/03/01 13:27
>>15
割込みベースの非同期 IO < select
スレッドを使わずに非同期 IO をやる UNIX 由来の仕組。
18デフォルトの名無しさん:02/03/02 00:59
Servletにも早くnioを取り入れて( ゚д゚)ホスィ…
19デフォルトの名無しさん:02/03/02 01:09
Javaでマルチスレッドのプログラムを書いて、凄い事やってる気になって
自画自賛するアホアーキテクトに辟易しています。
200スレッド同時実行!とか嬉しそうにいうなよ…
OSとランタイムがえらいのであって、別にあんたが偉いわけじゃないYO!
第一、実行時のコンテキストスイッチコストでかいだけで意味無いだろ!
そのスレッド、ただデータをバケツリレーしてるだけじゃねえか!氏ね!

…というプロジェクトに従事してます。
そういうわけで、Selectマンセー。
20デフォルトの名無しさん:02/03/02 01:15
>>18
自分で書いたら?
21 :02/03/02 01:28
200スレッドのうち、198スレッドはDB待ちしているという罠。
22John ◆0z.4Is5E :02/03/02 01:40
>>17
サンキュ

>OSとランタイムがえらいのであって、別にあんたが偉いわけじゃないYO!
(w
どういったプログラムなの?
200個のスレッドが別々の事をやってるなら
ある意味簡単にクラスタリングできるシステムみたいで
すごい気もする。
プロセス間のデータ量にもよるだろうけど。
23 :02/03/02 01:41
そこそこ名スレの予感…
24名無しさん♯:02/03/02 02:00
なにげに文字列まわりもカナーリ変わってるのね。( ゚д゚)
CharSequenceがあちらこちらに...。
>>15
JDK1.4は、コミュニティプロセス謹製の為、部分によっては
品質に天と地ほどのばらつきがある…かもよ。
あと、今の1.4はbetaのバグあんまり直ってないよ。
26 :02/03/02 02:04
仕様がよさそうなのと、実装が実際に使えるモノかどうかは別だからな…
27John ◆0z.4Is5E :02/03/02 17:53
>>25
そうなのか・・・
使えるところを探そう。

String#matches
で正規表現でのパターンマッチができるようになったのかも。
CharSequenceってなんだよ・・・・
28John ◆0z.4Is5E :02/03/02 17:57
CharSequenceって結局のところ
charAtで1文字づつ取り出せて、
合計の文字数がわかって
分割できて
Stringに変換できるってだけか・・・
確かに、こういう形式でまとめた方が便利かも。
29名無しさん♯:02/03/02 19:18
>>28
String,StringBuffer,CharBufferに共通のインターフェイスができたということね。
引数がCharSequenceなら、3つの型のどれでも突っ込めるぞー、みたいな。
30John ◆0z.4Is5E :02/03/02 19:53
>>29
charBufferってどこで使ってるのかわかんないんだよね。
抽象クラスだし・・・
あとはオリジナルのStringクラスを簡単に作れるようになったって事かもね。
31名無しさん♯:02/03/02 20:31
>>30
漏れが見かけたのは java.nio.charset あたりかな。
32MattWelsh:02/03/03 21:51
もう今までの作り方は通用せん。一から勉強しなおしだね。
>>32
旧バージョンの上位互換だよ。

あと、新機能は枯れるまで時間かかると思うよ。

インターフェイスは動かないだろうから、使い方だけ覚えておいて
後々落ち着いたら使うというのが、仕事で使う場合の正しい選択かと。
34MattWelsh:02/03/04 08:13
>>33
MattWelsh 知ってる?

旧バージョンってどれの話?
java.nio の作られた目的を考えて新機能を生かそうと思ったら作り直しに近いだろ。
35John ◆0z.4Is5E :02/03/04 12:04
33じゃないけど
MattWelshって何だろ??
初めて聞いた。

>java.nio の作られた目的を考えて新機能を生かそうと思ったら作り直しに近いだろ。
そんな事はないと思うけどな。
nioの作られた目的って何?
nioだけだと、広すぎていまいちよくわからないな。
36デフォルトの名無しさん:02/03/10 00:55
>>35
1.Javaヒープ外に高速なREAD/WRITEが可能なメモリバッファを作成する
 手段の実現(ついでに、メモリマップドファイル)。
2.ノンブロッキングI/Oの実現。

この二つが柱だと思われる。
3736:02/03/10 01:01
すまそ。
charsetのpublic化もだな。
39デフォルトの名無しさん:02/04/22 20:44
java.nio.クソスレ
40デフォルトの名無しさん:02/04/22 20:55
2chのレベルがクソなだけだろ
Javaがクソなだけだろ