강의

멘토링

로드맵

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件の受講レビュー

  • 더블지님의 프로필 이미지
    더블지

    受講レビュー 28

    平均評価 4.9

    5

    31% 受講後に作成

    자바 + cs 이론까지 같이 공부할 수 있는 유일한 강의

    • 널널한 개발자
      知識共有者

      첫 번째 수강평 고맙습니다. 새 강의를 오픈하면 첫 평가를 정말 목마르게 기다리게 되는 것 같습니다. 게다가 좋게 봐주셔서 마음이 편안해졌습니다. :)

  • ZZAMBA님의 프로필 이미지
    ZZAMBA

    受講レビュー 7

    平均評価 5.0

    5

    100% 受講後に作成

    파일 입출력을 다룰일이 별로 없어서 중요하지 않다 생각하고 살았지만 소켓도 파일이라는 점에서 매우 중요함을 깨닫게 되었습니다. 외에도 수업에서 이전에 다룬 멀티스레드와 논블로킹 비동기 방식으로 서버를 최적화할 수 있는 점도 신선하게 다가온 것 같습니다. 너무 좋은 강의였습니다!

    • 널널한 개발자
      知識共有者

      파일 입/출력은 CS이론이 집중되는 중요한 내용이 다수 포함되어 있습니다. 이미 느끼셨겠지만 그 중요성을 다시 한 번 강조 드립니다. 이러한 인식이 생겼다는 것만으로도 훌륭한 성과를 거두신 것이라는 점도 꼭 말씀드리고 싶습니다. 이제 더 넓은 시야를 갖게 되신 것 같아 강사로써 기분이 좋습니다. :)

  • 김주원님의 프로필 이미지
    김주원

    受講レビュー 9

    平均評価 5.0

    5

    33% 受講後に作成

  • SeongHun Jeong님의 프로필 이미지
    SeongHun Jeong

    受講レビュー 14

    平均評価 5.0

    5

    100% 受講後に作成

  • sunny75님의 프로필 이미지
    sunny75

    受講レビュー 95

    平均評価 5.0

    5

    100% 受講後に作成

    (25/08/02/토 13:30) 널널님의 강의를 들으니, 동기화 / 비정상 에러 생각(LAN선 분리) / context 부화 에 대한 내용이 제게 확 다가 옵니다. 모든 강의 에서 항상 많은 도움을 받고 있네요. 좋은 강의 만들어 주셔서 감사합니다.

    • 널널한 개발자
      知識共有者

      이미 네트워크 및 소켓에 대해 알고 계시므로 Java 환경에서 어떻게 달라지는지만 생각하셔도 충분할 것 같다는 의견을 드려봅니다. 늘 고맙습니다. :)

¥7,865

nullnull8537の他の講座

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

似ている講座

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