2014年11月23日日曜日

Javaでマルチスレッド/ネットワークプログラミングに入門してみた。

Java全然触ったことないけど、 関西Javaエンジニアの会スペシャル! JavaOne 2014 報告会 メモ なるものにこの間参加してきて、
Oracle 本気やん、いろんなところで使われてるやんということで、
いまさらJavaなんか触り始めた!

Java といえばとりあえずeclipse のイメージが強かったので、
Android SDK にくっついてきた eclipse 開いてJavaプロジェクト立てて実行してみる。
eclipse の環境設定が必要なので以下のサイトを参考にして、JDKの設定を行いました。
http://ameblo.jp/kurabeat/entry-11856811247.html

Java SEについては、JavaSE@TECHSCORE がわかりやすいです。
C/C++ 使ってた身からすると、細かい文法は雰囲気でわかるんで後回しにして、
JavaのAPIどう叩けばいいか分かればいいだけ。
かなり効率よく学べました。

EclipseのTips
 インデント: "cmd + i"

マルチスレッド
 マルチスレッドといったときに、同時に複数のことをやるための技術といった説明がよく見られる。けど、正確には時分割多重の処理として理解するのが正しそう。
いい感じの解説をしている文章があったので引用させてもらいます。

多くのコンピュータはCPUを1つしかもっていません。そのようなコンピュータでは、厳密には1つの処理しか同時には実行することができません。そこで、「マルチスレッド」では、通常「時分割処理」という方法が用いられています。「時分割処理」とは、短い時間間隔で実行する処理を切り替える方法です。複数の処理を頻繁に切り替えて実行することで、仮想的に複数の処理を同時に実行しているように見せかけています。http://www.techscore.com/tech/Java/JavaSE/Thread/1/

 Javaにおける具体的な実装については、extends するパターンと implements するパターンがあるみたい。継承とインタフェースの違いについてはここを参考にした。
 要するに継承階層が同一であればextends、そうでないならimplements とざっくり理解。これだけだと不正確だと思うけど、理解度はのちのち深めていくゆるいイメージ。


ネットワークプログラミング
 通信の端点としてSocket があります。
TCP通信するためだったら、SocketクラスをClient、ServerSocketクラスをServerとして利用。

とりあえずターミナル複数立てて、server/client を実行してみて挙動を確認する。
つながるなーって確認できるJavaのサンプルコードが、以下に用意されていたのでサクッと理解できました。
  - 2.5. TCPサーバプログラム
  - 2.6. TCPクライアントプログラム
サーバー側は複数のクライアントを受け付ける必要があるので、ちゃんと作るならマルチスレッドの知識が必要になってきます。

0 件のコメント:

コメントを投稿