Java / 応用

【Java】SocketChannel / ServerSocketChannel ~ノンブロッキングモード編~

サンプル サーバ側 * 実行しておく NioServer.java import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.channels.Selector; import java.nio.channels.SelectionKey; import java.nio.ByteBuffer; imp…

【Java】 簡単なチャットツールを作成する

■ サンプル クライアントサイド ChatClient.java import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class ChatClient { // ホスト名 private static final String HOST_NAME …

【Java】 JSSE (Java Secure Socket Extention)

JSSEとは * SSLクライアントおよびサーバが使用するSSLプロトコルを扱うための標準API 主なパッケージ構成 [1] javax.net.ssl => JSSE APIのコアクラスとインターフェイスセットが含まれる [2] javax.security.cert => 基本的な証明書の管理機能をサポート …

【Java】ノンブロッキングチャネル の SSL接続

* 調査中 * SSLEngine を使用する必要があるらしい 参考文献 http://e-class.center.yuge.ac.jp/jdk_docs/ja/technotes/guides/security/jsse/JSSERefGuide.html#SSLSocket http://cs.fit.edu/~ryan/java/programs/nio/sun_servers/ChannelIOSecure.java htt…

【Java】SocketChannel / ServerSocketChannel ~ブロッキングモード編~

ブロッキングモード / ノンブロッキングモード ブロッキングモード * 読み込みや書き込みを完了するまで待つ(=制御をブロックする) API * java.net.ServerSocket ノンブロッキングモード * 今できる処理(read/write)して、すぐに制御が戻る * ノンブロッキ…

【Java】 自前認証局(オレオレ証明書) のSSLサーバに接続するには...

サンプル SampleSSLConnectHelper.java import java.security.cert.CertificateException; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import j…

【Java】 外部プログラム/コマンドを実行するには ~ ProcessBuilder ~

■ 初めに http://blogs.yahoo.co.jp/dk521123/34689533.html でも使用した ProcessBuilder を改めて、まとめる。 サンプル 例1 : バッチをJavaから実行する 実行バッチ:./etc/hello.bat (バッチ作成は、以下の関連記事を参照のこと) http://blogs.yahoo.co.…

【Java】JMX (Java Management Extensions) / MBean (Management Bean)

用語整理 JMX * Java Management Extensions * 外部からJava アプリケーションをモニタおよび管理するための仕組み MBean * Management Bean * JMXでアクセスする管理用オブジェクト MBeanServer * 外部との通信を行うコンポーネント 主なクラス・メソッド *…

【Java】コールバック関数を実装する ~自作インターフェースで使って、実装編~

コールバック関数とは * あるクラスに、コールバックしてもらう関数を教えて、その関数が呼び出されるのを待つこと。 Java での実装方法 * 3つの方法があるかと。 [1] 自作インターフェースで使って、実装する [2] CountDownLatch を使って、実装する [3] Fu…

【Java】ラムダ式 ~ 基本編 / Stream API ~

Stream APIの主なメソッド filter * 条件に合致した要素だけ抜き出す map * 要素全てに同じ処理を行い、その結果で新たにリストを作る min / max * 最小 / 最大に合致した要素だけ抜き出す sorted * ソートする サンプル Person.java import java.sql.Timest…

【Java】ラムダ式 ~入門編~

■ ラムダ式 * Java1.8から導入できる ■ 構文 [1] 引数1つ式1つ 引数 -> 式 [2] 引数2つ以上、式1つ (引数1[,引数2]・・・) -> 式 [3] 引数1つ式複数 引数 -> { 処理 return 値; } [4] 引数2つ以上式複数 (引数1[,引数2]・・・) -> { 処理 return 値; } ■ サ…

【Java】Java で暗号化/複合化する ~標準ライブラリを使用した場合~

準備 Eclipse を使っている場合 * 普通にやると「sun.misc.BASE64Encoder」などで、以下「エラー内容」のようなエラーになる エラー内容 Access restriction: The type BASE64Encoder is not accessible due to restriction on required library C:\Program …

【Java】 Java のメモリ構造

Javaのメモリを理解するためのポイント * ガベージ・コレクション(GC)は、時間が掛かる => 時間が掛かるので、効率よくやるようにメモリ構造を工夫してある ガベージ・コレクション(GC) * 以下の関連記事を参照のこと。 https://blogs.yahoo.co.jp/dk521123/…

【Java】ZIP 処理 ~圧縮編~

■ サンプル ZipHelper.java import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStrea…

【Java】JVMのメモリ情報を出力させる

■ JVMオプション -XX:+HeapDumpOnOutOfMemoryError `#`オプション説明 1-XX:+HeapDumpOnOutOfMemoryErrorOutOfMemoryErrorが発生したときにダンプファイルを出力 補足:Tomcatでの指定 * CATALINA_OPTS に指定する => 具体的には、$CATALINA_HOME/bin/setenv…

【Java】Java で、SSL通信を行うには

準備 * 証明書作成は、以下の関連記事を参照のこと http://blogs.yahoo.co.jp/dk521123/33788938.html サンプル http://blogs.yahoo.co.jp/dk521123/33075148.html をベースに修正した。 サーバ側 import java.io.BufferedReader; import java.io.IOExceptio…

【Java】Socket 通信を行う ~Server側/Client側の実装例~

サンプル Server側 SampleSoketServer.java package com.soket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; publ…

【Java】オブジェクトの使用メモリサイズを測る

初めに * main()の呼び出しより前に実行されるメソッドを指定できることを利用する (premainメソッド) 作成手順 [1] Eclipseで、サンプルの「ObjectSizeFetcher.java」を参考にプログラムを書く [2] Eclipseで、「build.xml」を作成する(内容はサンプルの…

【Java】【Axis2】IPアドレスの取得あれこれ

クライアント側IPアドレスを取得 サンプル MessageContext context = MessageContext.getCurrentMessageContext(); String ip = context.getProperty(MessageContext.REMOTE_ADDR).toString(); 参考文献 http://d.hatena.ne.jp/kokuzawa/20091007/1254880496…

【Java】PCリソース情報(ディスク容量、JVMメモリ容量、CPU情報)を取得する

■ PCリソース情報 【1】 ディスク容量 【2】 JVMメモリ容量 【3】 CPU情報 【1】 ディスク容量 * Windowsの場合「new File("C:/")」、Linuxの場合「new File("/")」を指定し、 getTotalSpace() / getFreeSpace() で取得できる サンプル import java.io.File;…