강의

멘토링

로드맵

Inflearn brand logo image
BEST
Programming

/

Programming Language

基礎しっかり!本気で始めるJava Part 3(下):ソケットとファイルI/O

java.ioを起点に、NIOおよびNIO.2をベースとした高性能な入出力システムを開発できるようになります。何よりも、ファイルの入出力をマスターする瞬間、高性能サーバー開発までおまけで習得できるようにします!

  • nullnull8537
Java
Network
tcpsocket

学習した受講者のレビュー

こんなことが学べます

  • Javaを使ってファイル入出力ができます。

  • java.ioを超えて、NIO(New I/O)、AIO(Asynchronous I/O)ベースの高性能システム開発方法を学べます。

  • AIOベース 高性能 TCP/IPサーバーシステム を開発できます。

高性能AIO非同期ファイルの入出力とソケットの本質について確実に学ぶことができます。
開発者の競争力は唯一のスキルです。この講義で確実に差別化された競争力を確保しましょう!

「ファイル」についてこんなに深く扱う理由🤔

この講義をきちんと終えたら
専攻者に批判できる高い理解に基づいて
Javaを活用できます。

ファイル入出力の各種理論

ファイルシステム自体について、オペレーティングシステムのクラスで扱う内容を詳しく学びます。これに基づいて、非ブロック化I / Oと非同期入出力について正確に理解できます。

NIOベースのファイル入出力

従来のjava.ioベースのファイル入出力を超えて、NIO(New I/O)を利用した入出力方法を学びます。これにより、将来の高性能サーバー開発のために必ず知っておくべき重要な理論の理解を最大化することができます。

高性能AIO

高性能サーバーを開発するには、最適化された方法を使用するだけでなく、オペレーティングシステムが提供するリソースを利用できる必要があります。これを上にJavaはAIO(Asynchronous I/O)を提供しており、本授業により確実な使い方と動作原理を理解できます。

TCP/IPソケットプログラミング

NIOとAIOを適用して、高性能チャットサーバーをどのように開発できるかを説明します。また、関連するネットワーク理論を一緒に学ぶことで、単純な活用ではなく原理の理解に基づいてコードを書くことができます。


学習対象


高性能システムが動作する
原理を正しく知りたい
現職開発者


差別化された競争を備えて
バックエンド開発者として
就職したい就職準備生


たくさん書く言語だから
学んだが本質をよく知らない
1~2年目ジュニア開発者

学習ロードマップ🏃🏻

ひどく始まるJavaシリーズは合計4つのPartから成ります。
別途1,2講義は、Springバックエンド開発者として成長するために一緒に聞くと良い講義です🙂

  • Part 1: 基本的な文法、手続き型プログラミング

  • パート2:オブジェクト指向プログラミング+データ構造

  • Part 3: システム活用プログラムの作成

  • パート4:Spring Frameworkに進むための準備

  • 別途1:Webインフラストラクチャ技術の理解とDB

  • 別途 2: SQL 拡張


パート3は、マルチスレッドプログラミングと同期技術、CAS(Compare And Swap、Set)、ロックフリー構造、ファイル入出力、ソケットプログラミングなどの高度な開発者になるために知っておくべきことが多数含まれています。扱う内容が多すぎて、上、下編で区分されており、 上部は、Java Memory ModelとJVMの理解に基づいてマルチスレッドベースのプログラミング手法を深く扱っています

高性能システム開発のためにjava.io を超えて NIO と AIO について学習し、これらの理論に基づいて高性能サーバーシステムをどのように開発できるか理解できます。

この講義を聞いた後...

  • ファイルシステムに関する重要な概念を明確に理解することができます。

  • 従来のファイル入出力技術はもちろん、NIO(New I / O)ベースの高性能入出力技術を理解して活用できます。

  • 入出力効率を最大化するために、オペレーティングシステムレベルのサポートを受けることができるAIO(Asynchronous I/O)を活用できます。

  • ソケットの本質を理解し、高性能TCP / IPサーバーシステムを開発することができます。

ひどく始まるJavaは
ただJava講義ではありません。

1⃣
ファイルシステムの概念的な理解は非常に重要です!


  • ファイルの入出力を学習する前に、ファイル処理に関するオペレーティングシステムレベルの動作構造を学ぶことができます。

  • Buffered I/O と Non-buffered I/O の内部的な違いを理解し、パフォーマンスの違いが発生する根本的な理由を理解できます。

  • Java.ioベースの入出力を超えた高性能入出力システムを理解するための理論を確立します

2⃣
高性能システムに発展するための非同期入出力技術


  • 従来のファイル入出力システムを超えて、非同期ファイル入出力により高性能を確保する方法を学ぶことができます。

  • I/O 多重化ベースの入出力技術を理解し、本番で活用できるようサポートします。

  • AIO(Asynchronous I/O)を活用して、C/C++ ベースのアプリケーションのパフォーマンスに匹敵する高性能システムを開発できます。

3⃣
TCP/IPソケットプログラミングとネットワークの理解


  • 最初のEchoサービスをはじめ、段階的に機能を改善し、最終的にはAIOベースの高性能チャットサーバーシステムに発展させます。

  • ソケットプログラミングに関しては、必ず知っておくべき必須ネットワーク理論について学習することで、単純な暗記ではなく理解できるように助けます。

  • 適切な練習を進めるために、ルーターが使用される一般的な仮定と単一のホストベースの環境の特殊性と違いについて理解し、実践に取り組んでいます。

4⃣
整理された教育資料と板書📜


  • すべての授業内容はPPT資料に基づいていますが、まるでホワイトボードに板書をするかのように説明が続きます。

  • これにより、受講者は完成した1つの結果だけを見るのではなく、構造が誕生した背景と理由全体の流れを総合的に理解することができます。

5⃣
目標は差別化された競争力と就職です💼

  • 本格的なJavaプログラミングを学ぶ前に、この授業が就職を目指していることを明確に伝えます。そして

    講師の長年の経験を踏まえ、明確な学習ロードマップと所要時間を提示します。

  • 間違った選択で時間を無駄にすることがないように、最初から適切な学習配分とスケジュールを確立するように誘導します。

練習環境

  • オペレーティングシステムとバージョン(OS): Windows 11

  • 使用ツール: IntelliJ IDEA 2024.2.3 (Community Edition)

  • PC仕様:Windows 11 OSとIntelliJが無理なく動作できるレベル

学習資料

  • 授業に使用されたPPT資料(PDFファイルで提供)

  • 完全な例と必須の練習問題正解(Zip圧縮ファイルとして提供)

選手の知識と注意事項

  • 「基礎タンタン」ひどく始まるJava Part 1~3(上)
    (※基本的な文法やOOPはもちろんマルチスレッドと同期について知っていると仮定)


こんな方に
おすすめです

学習対象は
誰でしょう?

  • Javaベースの高性能バックエンドシステムを開発したい方

  • ソケットの本質を理解し、実務ですぐに使える高性能サーバーを開発したい方

  • 同期/非同期ファイル入出力の意味をしっかり理解し、初級レベルを確実に超えたい方

前提知識、
必要でしょうか?

  • 「本気で始める Java Part2~3(상)」の講義で扱っている内容を理解している方

こんにちは
です。

37,006

受講生

2,151

受講レビュー

1,098

回答

4.9

講座評価

24

講座

널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다.  반갑습니다. ^^  

カリキュラム

全体

45件 ∙ (9時間 15分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

11件

5.0

11件の受講レビュー

  • twoj님의 프로필 이미지
    twoj

    受講レビュー 28

    平均評価 4.9

    5

    31% 受講後に作成

    The only lecture to study Java + CS theory together

    • nullnull8537
      知識共有者

      Thank you for the first course review. When I launch a new course, I feel like I truly thirst for the first review. Moreover, seeing that you reviewed it favorably has put my mind at ease. :)

  • rksidksrksi님의 프로필 이미지
    rksidksrksi

    受講レビュー 7

    平均評価 5.0

    5

    100% 受講後に作成

    I thought file I/O wasn't very important since I rarely dealt with it, but I came to realize how crucial it is from the perspective that sockets are also files. Additionally, it was refreshing to learn how servers can be optimized using multithreading and non-blocking asynchronous methods that were covered earlier in the class. It was such a great lecture!

    • nullnull8537
      知識共有者

      File input/output contains numerous important concepts where CS theory is concentrated. You've probably already felt this, but I want to emphasize its importance once again. I also want to make sure to tell you that just having this awareness is already a great achievement. It seems like you now have a broader perspective, which makes me happy as an instructor. :)

  • jw12님의 프로필 이미지
    jw12

    受講レビュー 9

    平均評価 5.0

    5

    33% 受講後に作成

    • nullnull8537
      知識共有者

      Thank you for the good review. :)

  • tjdgns55063964님의 프로필 이미지
    tjdgns55063964

    受講レビュー 14

    平均評価 5.0

    5

    100% 受講後に作成

    • nullnull8537
      知識共有者

      Thank you for the good review. :)

  • aceoftop1975님의 프로필 이미지
    aceoftop1975

    受講レビュー 95

    平均評価 5.0

    5

    100% 受講後に作成

    (25/08/02/Sat 13:30) After listening to your lecture, the content about synchronization / abnormal error considerations (LAN cable disconnection) / context corruption really resonates with me. I'm always getting a lot of help from all your lectures. Thank you for creating such great lectures.

    • nullnull8537
      知識共有者

      Since you already know about networks and sockets, I think it would be sufficient to just consider how things differ in the Java environment. Thank you as always. :)

¥7,865

nullnull8537の他の講座

知識共有者の他の講座を見てみましょう!

似ている講座

同じ分野の他の講座を見てみましょう!