CodeGym
学習
コース
課題
アンケート & クイズ
ゲーム
ヘルプ
スケジュール
コミュニティ
ユーザー
フォーラム
チャット
記事
成功事例
アクティビティ
レビュー
サブスクリプション
ライトテーマ

レッスン

  • レビュー
  • 私たちについて
開始
学習開始
今すぐ学習を始める
  • 学習の進捗
  • コース
  • クエストマップ
  • レッスン
  • バイナリシリアライゼーションの問題点:セキュリティと互換性

    JAVA 25 SELF
    レベル 45,レッスン 0
    この講義では、Java におけるバイナリシリアライゼーションのリスクを解説します。信頼できないソースからのデシリアライズがなぜ危険なのか(「gadget chain」、RCE)、 readObject や readResolve のような特別なメソッドがもたらす脅威、そしてどのように防御するか(ホワイトリスト方式、 JSON/ XML への切り替え、 Jackson のような安全なライブラリ)。クラスのバージョン互換性と serialVersionUID フィールドの役割、 InvalidClassException の挙動、 transient/ static の制約、パフォーマンス、さらにベストプラクティスと典型的なミスについても詳しく説明します。
    利用可能
  • Generics コレクションのシリアライズ: 特徴

    JAVA 25 SELF
    レベル 45,レッスン 1
    コンパイル時の型消去( type erasure)が Generics コレクションのシリアライズにどう影響するかを解説します。実行時には List<String> と List<Integer> が同じ ArrayList として扱われる理由、 ObjectOutputStream/ ObjectInputStream を通じて実際に何が書き込まれ・読み込まれるのか、 ClassCastException や unchecked キャスト警告がどこから来るのかを説明します。入れ子のコレクションや Map/ Set の例、 Gson/ Jackson にも触れ、安全なデシリアライズの実践をまとめます。
    利用可能
  • シリアライズにおける互換性と後方互換性 (backward compatibility)

    JAVA 25 SELF
    レベル 45,レッスン 2
    シリアライズ可能なクラスをどのように進化させてもデータを壊さないかを解説します: なぜ固定の serialVersionUID が必要なのか、JVM が互換性をどう検証するのか、どの変更が安全(フィールドの追加/削除)で、どれが危険(型変更、クラスを別パッケージへ移動)なのか。 transient/ static の役割、 writeObject/ readObject によるカスタムシリアライズの手法、バイナリシリアライズと XML/JSON の違い、互換性確保の戦略と典型的な誤り(例: InvalidClassException)を示します。
    利用可能
  • シリアライズ済みデータの移行とバージョニング

    JAVA 25 SELF
    レベル 45,レッスン 3
    本番環境でシリアライズ可能なクラスを安全に進化させる方法:フィールドや型を変更すると何が起こるのか、クラスのバージョンを serialVersionUID でどう管理するか、いつ変更し、いつ据え置くべきか、 readObject/ readFields を用いた「遅延」移行や「インプレース」変換の適用方法、さらに ObjectInputStream.readClassDescriptor() のような高度な手法。2 つのクラス版を使った実践的なシナリオと、 InvalidClassException の落とし穴を含む典型的なミスを解説します。
    利用可能
  • シリアライゼーションの圧縮とプロファイリング

    JAVA 25 SELF
    レベル 45,レッスン 4
    Java でオブジェクトのシリアライゼーションを小さく・速くする方法: transient で不要なフィールドを除外し、 Externalizable で完全に制御し、ストリーム圧縮( GZIPOutputStream、 ZipOutputStream)を適用し、I/O をバッファリング( BufferedOutputStream、 BufferedInputStream)して、 FileChannel. transferTo による高速コピーでスピードアップします。性能評価には手早い計測として System. nanoTime() を、正確なマイクロベンチマークとして JMH を使います。最後にミニ実験と典型的なミスの解説で締めくくります。
    利用可能
学ぶ
  • 登録
  • Javaコース
  • 課題のサポート
  • 料金
  • ゲームプロジェクト
  • Java構文
コミュニティ
  • ユーザー
  • 記事
  • フォーラム
  • チャット
  • 成功事例
  • アクティビティ
  • アフィリエイトプログラム
会社情報
  • 私たちについて
  • 連絡先
  • レビュー
  • プレスルーム
  • CodeGym for EDU
  • よくある質問
  • サポート
CodeGymCodeGym は、ゼロからJavaプログラミングを学ぶためのオンラインコースです。このコースは初心者がJavaを習得するのに最適です。即時検証付きの1200以上の課題と、Java基礎理論の必要な範囲を含みます。学習の成功を支援するために、クイズ、コーディングプロジェクト、効率的な学習に関するコンテンツ、Java開発者のキャリアに関する機能など、一連のモチベーション機能を導入しています。
フォローする
インターフェース言語
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands
日本語
한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
「プログラマーは生まれるのではなく、育てられる」 © 2026 CodeGym
MastercardVisa
「プログラマーは生まれるのではなく、育てられる」 © 2026 CodeGym