Java Basic

Java Basic

스스로 기초를 다지는 데 도움이 되는 공부 거리를 목차로 정리합니다. 큰 목차는 MIT 6.005의 2: Basic Java와 거의 같습니다.

Language Basic

flowchart TB
    classDef site stroke: none, fill: none ;
    classDef section fill: none ;

    basic_syntax@{ shape: text, label: "문법을 익히는 데 도움이 됩니다" }
    -.- |baeldung| gswj(Get Started with Java)
    --- gswj_basic(Java Language Basics)
    --- gswj_arrays(Java Arrays)
    basic_syntax -.- |oracle| oracle_basic(Language Basic)

    click oracle_basic "https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html"
    click gswj "https://www.baeldung.com/get-started-with-java-series"

    class gswj site;
    class oracle_basic site;

    basic_programming@{ shape: text, label: "문법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
    -.- |MIT OCW| mit_ocw_6092(6.092: Introduction to Programming in Java)
    basic_programming -.- |David J. Eck| javanotes(Introduction to Programming Using Java)
    basic_programming -.- |Robert Sedgewick & Kevin Wayne| introcs_java(Introduction to Programming in Java)

    mit_ocw_6092
    --> mit_ocw_6092_lecture1(Lecture 1 - Types, Variables, Operators)
    --> mit_ocw_6092_lecture2(Lecture 2 - More Types, Methods, Conditionals)
    --> mit_ocw_6092_lecture3(Lecture 3 - Loops, Arrays)

    javanotes
    --> javanotes_chapter1(Chapter 1: Overview: The Mental Landscape)
    --> javanotes_chapter2(Chapter 2: Programming in the Small I: Names and Things)
    --> javanotes_chapter3(Chapter 3: Programming in the Small II: Control)
    --> javanotes_chapter4(Chapter 4: Programming in the Large I: Subroutines)
    --> javanotes_chapter7(Chapter 7: Arrays, ArrayLists, and Records)
    --> javanotes_chapter7_section1([Section 1:
            Array Details])
    --> javanotes_chapter7_section2([Section 2:
            Array Processing])

    introcs_java
    --> introcs_java_chapter1(Chapter 1: Elements of Programming)
    --> introcs_java_chapter2(Chapter 2: Functions)

    click mit_ocw_6092 "https://ocw.mit.edu/courses/6-092-introduction-to-programming-in-java-january-iap-2010/pages/lecture-notes/"
    click javanotes "https://math.hws.edu/javanotes/"
    click introcs_java "https://introcs.cs.princeton.edu/java/home/"

    class mit_ocw_6092 site
    class javanotes site
    class introcs_java site

    class javanotes_chapter7_section1 section
    class javanotes_chapter7_section2 section

Numbers & Strings

flowchart TB
    cs@{ shape: diam, label: "0.3 == 0.1 + 0.1 + 0.1" }
    cs --> |false| start
    cs --> |true| introcs_sc(9\. Scientific Computing,
               Robert Sedgewick & Kevin Wayne)
    --> introcs_sc_float([9.1 Floating Point])
    --> cs

    start@{ shape: sm-circ , label: "" } -.- |oracle| oracle_data(Numbers & Strings)
    subgraph baeldung [ ]
        direction TB
        baeldung_wrapper_classes([Wrapper Classes in Java])
        --> baeldung_number_class(Guide to the Number Class in Java)
        gswj(Get Started with Java) --> gswj_strings(Java Strings)
        end
    start -.- |baeldung| baeldung
    style baeldung stroke-width: 0.1px, fill :none;

    oracle_data &  baeldung 
    -.- prerequisite(Classes & Objects, Essential Java Classes)
    -.- |baeldung| gswj_overflow_underflow([Overflow and Underflow in Java])
    --> gswj_comparing_doubles([Comparing Doubles in Java])

    click oracle_data "https://docs.oracle.com/javase/tutorial/java/data/index.html"
    click introcs_sc_float "https://introcs.cs.princeton.edu/java/91float/"
    click baeldung_wrapper_classes "https://www.baeldung.com/java-wrapper-classes"
    click baeldung_number_class "https://www.baeldung.com/java-number-class"
    click gswj "https://www.baeldung.com/get-started-with-java-series"
    click gswj_comparing_doubles "https://www.baeldung.com/java-comparing-doubles"
    click gswj_overflow_underflow "https://www.baeldung.com/java-overflow-underflow"

    classDef site stroke: none, fill: none;
    classDef section fill: none ;
    classDef group stroke: none, fill: none;

    class gswj site
    class prerequisite site

    class introcs_sc_float section
    class baeldung_wrapper_classes section
    class baeldung_number_class section
    class gswj_comparing_doubles section
    class gswj_overflow_underflow section

Classes & Objects

flowchart TB
    classDef site stroke: none, fill: none;
    classDef group stroke: none, fill: none;
    classDef section fill: none ;

    subgraph programming [ ]
        direction TB

        basic_programming@{ shape: text, label: "문법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
        -.- |MIT OCW| mit_ocw_6092(6.092: Introduction to Programming in Java)
        basic_programming -.- |David J. Eck| javanotes(Introduction to Programming Using Java)
        basic_programming -.- |Robert Sedgewick & Kevin Wayne| introcs_java(Introduction to Programming in Java)

        mit_ocw_6092 --> mit_ocw_6092_lecture4(Lecture 4 - Classes and Objects)
        javanotes --> javanotes_chapter5(Chapter 5: Programming in the Large II: Objects and Classes)
        introcs_java --> introcs_chapter3(Chapter 3: Object-Oriented Programming)

        click mit_ocw_6092 "https://ocw.mit.edu/courses/6-092-introduction-to-programming-in-java-january-iap-2010/pages/lecture-notes/"
        click javanotes "https://math.hws.edu/javanotes/"
        click introcs_java "https://introcs.cs.princeton.edu/java/home/"

        class mit_ocw_6092 site
        class javanotes site
        class introcs_java site
    end

    subgraph syntax [ ]
        direction TB
        basic_syntax@{ shape: text, label: "문법을 익히는 데 도움이 됩니다" }
        -.- |baeldung| gswj(Get Started with Java)
        --> gswj_oo(Java OOP)
        basic_syntax -.- |oracle| oracle_oo(Classes & Objects)
        --> oracle_ii(Interface & Inheritance)

        click oracle_basic "https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html"
        click gswj "https://www.baeldung.com/get-started-with-java-series"
        click oracle_oo "https://docs.oracle.com/javase/tutorial/java/javaOO/index.html"
        click oracle_ii "https://docs.oracle.com/javase/tutorial/java/IandI/index.html"

        class gswj site;
    end

    subgraph supplements [ ]
        direction LR
        mit_ocw_6005_s16([6.005: Software Construction
            Readings])
        --> mit_ocw_6005_s16_equality([15: Equality])
        -.- | baeldung | baeldung
        subgraph baeldung [ ]
        baeldung_equals(["Difference Between == and equals() in Java"])
        --> baeldung_contracts(["Java equals() and hashCode() Contracts"])
        --> baeldung_hashcode(["Guide to hashCode() in Java"])
        --> baeldung_comparable(["Comparing Objects in Java"])
        end
        style baeldung stroke-width: 0.1px, fill :none;

        click mit_ocw_6005_s16 "https://ocw.mit.edu/ans7870/6/6.005/s16/"
        click baeldung_equals "https://www.baeldung.com/java-equals-method-operator-difference"
        click baeldung_contracts "https://www.baeldung.com/java-equals-hashcode-contracts"
        click baeldung_hashcode "https://www.baeldung.com/java-hashcode"
        click baeldung_comparable "https://www.baeldung.com/java-comparing-objects"

        class mit_ocw_6005_s16 site

        class mit_ocw_6005_s16_equality section
        class baeldung_equals section
        class baeldung_contracts section
        class baeldung_hashcode section
        class baeldung_comparable section
    end

    syntax & programming -.- |MIT OCW| mit_ocw_6005_s16

    class syntax group
    class programming group
    class supplements group

Essential Java Classes

flowchart TB
    classDef site stroke: none, fill: none;
    classDef group stroke: none, fill: none;
    classDef section fill: none ;

    subgraph programming [ ]
        direction TB
        basic_programming@{ shape: text, label: "사용법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
        -.- |David J. Eck| javanotes(Introduction to Programming Using Java)
        --> |Chapter 8: Correctness, Robustness, Efficiency| javanotes_chapter8_section1([
            Section 1: Introduction to Correctness and Robustness])
        --> javanotes_chapter8_section2([Section 2: Writing Correct Programs])
        --> javanotes_chapter8_section3([Section 3: Exceptions and try..catch])
        --> |Chapter 11: Input/Output Streams, Files, and Networking| javanotes_chapter11_section1([
            Section 1: I/O Streams, Readers, and Writers])
        --> javanotes_chapter11_section2([Section 2: Files])
        --> javanotes_chapter11_section3([Section 3: Programming With Files])

        click javanotes "https://math.hws.edu/javanotes/"

        class javanotes site
        class javanotes_chapter8_section1 section
        class javanotes_chapter8_section2 section
        class javanotes_chapter8_section3 section
        class javanotes_chapter11_section1 section
        class javanotes_chapter11_section2 section
        class javanotes_chapter11_section3 section
    end

    subgraph syntax [ ]
        direction TB
        basic_syntax@{ shape: text, label: "사용법을 익히는 데 도움이 됩니다" }
        basic_syntax -.- |baeldung| gswj(Getting Started with Java)
        --> gswj_exception(Java Exceptions)
        --> io(Java I/O)
        --> gswj_regular_expressions([A Guide To Java Regular Expressions API])

        basic_syntax -.- |oracle| oracle_essential(Essential Java Classes)
        --> oracle_exceptions(Exceptions)
        --> oracle_io(Basic I/O)
        --> oracle_regular_expressions(Regular Expressions)

        click gswj "https://www.baeldung.com/get-started-with-java-series"
        click gswj_regular_expressions "https://www.baeldung.com/regular-expressions-java"
        click oracle_essential "https://docs.oracle.com/javase/tutorial/essential/index.html"

        class gswj site
        class gswj_regular_expressions section
        class oracle group
        class oracle_essential site
    end

    class syntax group
    class programming group

Collections

flowchart TB
    classDef site stroke: none, fill: none;
    classDef group stroke: none, fill: none;
    classDef section fill: none ;

    subgraph generics [ ]
        direction LR

        generics_begins@{ shape: text, label: "Generics (parametric polymorphism) 곧, type을 parameter로 받아
            type-safety와 reusability가 더 뛰어난 code를 짜는데 도움이 됩니다." }
        -.- |baeldung| baeldung_generics([The Basics of Java Generics])
        --> baeldung_generics_vs_extends_object(["Java Generics:
             < ? > vs.
             < ? extends Object >"])

        generics_begins -.- |oracle| oracle_generics(Generics)
    end
    style generics stroke-width: 0.1px, fill: none;

    click baeldung_generics "https://www.baeldung.com/java-generics"
    click baeldung_generics_vs_extends_object "https://www.baeldung.com/java-generics-vs-extends-object"
    click oracle_generics "https://docs.oracle.com/javase/tutorial/java/generics/index.html"

    class baeldung_generics section
    class baeldung_generics_vs_extends_object section

    subgraph programming [ ]
        direction TB
        basic_programming@{ shape: text, label: "사용법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
        -.- |David J. Eck| javanotes(Introduction to Programming Using Java)
        --> |Chapter 7: Arrays, ArrayLists, and Records| javanotes_chapter7_section3([
            Section 3: ArrayList])
        --> javanotes_10(Chapter 10: Generic Programming and Collection Classes)

        click javanotes "https://math.hws.edu/javanotes/"

        class javanotes site
        class javanotes_chapter7_section3 section
    end

    subgraph syntax [ ]
        direction TB

        basic_syntax@{ shape: text, label: "사용법을 익히는 데 도움이 됩니다" }
        -.- |oracle| oracle_collections(Collections)

        basic_syntax
        -.- |baeldung| gswj(Get Started with Java)
        --> gswj_collections(Java Collections)

        click oracle_collections "https://docs.oracle.com/javase/tutorial/collections/index.html"
        click gswj "https://www.baeldung.com/get-started-with-java-series"

        class gswj site
    end

    generics ---> syntax
    generics ---> programming

    class programming group
    class syntax group

Concurrency & Networking

flowchart TB
    classDef site stroke: none, fill: none;
    classDef group stroke: none, fill: none;
    classDef section fill: none;

    subgraph programming [ ]
        direction TB
        basic_programming@{ shape: text, label: "사용법과 프로그래밍 기초를 더불어 익히는 데 도움이 됩니다" }
        -.- |MIT OCW| mit_ocw_6005_s16_readings(6.005: Software Construction
                        Readings)
        --> mit_ocw_6005_s16_reading19(19: Concurrency)
        --> mit_ocs_6005_s16_reading20(20: Thread Safety)
        --> mit_ocs_6005_s16_reading21(21: Sockets & Networking)
        --> mit_ocs_6005_s16_reading22(22: Queues & Message-Passing)
        --> mit_ocs_6005_s16_reading23(23: Locks & Synchronization)

        basic_programming
        -.- |David J. Eck| javanotes(Introduction to Programming Using Java)
        --> |Chapter 11: Input/Output Streams, Files, and Networking| javanotes_chapter11_section4([
            Section 4: Networking])
        --> javanotes_chapter12(Chapter 12: Threads and Multiprocessing)

        click javanotes "https://math.hws.edu/javanotes/"
        click mit_ocw_6005_s16_readings "https://ocw.mit.edu/ans7870/6/6.005/s16/"

        class mit_ocw_6005_s16_reading19_22 chapter
        class mit_ocw_6005_s16_readings site
        class javanotes site
        class javanotes_chapter11_section4 section
   end

   subgraph syntax [ ]
        direction TB

        basic_syntax@{ shape: text, label: "사용법을 익히는 데 도움이 됩니다" }
        -.- |baeldung| baeldung_concurrency(Java Concurrency Series)
        --> baeldung_concurrency_basics(Java Concurrency Basics)
        --> baeldung_sockets([A Guide to Java Sockets])
        --> baeldung_inputstream_server_socket([Read an InputStream using the Java Server Socket])
        baeldung_sockets --> baeldung_socket_connection_read_timeout([Connection Timeout vs. Read Timeout for Java Sockets])

        click baeldung_concurrency "https://www.baeldung.com/java-concurrency"
        click baeldung_url "https://www.baeldung.com/java-url"
        click baeldung_url_vs_uri "https://www.baeldung.com/java-url-vs-uri"
        click baeldung_sockets "https://www.baeldung.com/a-guide-to-java-sockets"
        click baeldung_inputstream_server_socket "https://www.baeldung.com/java-inputstream-server-socket"
        click baeldung_socket_connection_read_timeout "https://www.baeldung.com/java-socket-connection-read-timeout"
        click baeldung_udp "https://www.baeldung.com/udp-in-java"

        class baeldung_concurrency site

        class baeldung_concurrency_basics chapter
        class baeldung_url section
        class baeldung_url_vs_uri section
        class baeldung_sockets section
        class baeldung_inputstream_server_socket section
        class baeldung_socket_connection_read_timeout section
        class baeldung_udp section
   end

   class programming group
   class syntax group
마지막으로 고친 날