ืืื ืฉืื ื Java ืืฉืคืืช ืคืืคืืืจืืืช ืืืจืืช? ืืืืข Java ืฆืจืืื ืืืืืช ืืฉืคื ืืจืืฉืื ื ืืืืื? ืืื ื ืืฆืืจ ืชืืื ืืช ืฉืชืขืืืจ ืื ืืืืื Java ืื ืืืคืก ืืื ืขื ืืื ืืืฉืื ืืืืื ืืืืช ืชืื ืืช ืืฉืคืืช ืืืจืืช. ืืืื ื ืคืจื ืืช ืืืืืืื ืืื ืืฆืืจืช ืงืื ืืืฆืืจ ื-Java ืืืื ืคืืชืื ืืฉืคืืช ืืืจืืช. ืืืืืื ืืืืคืืืงืื ืงืจื ืืช ืืืื ืืื ืืคืืืฉื ืืืฉืชืชืคืื ืขืชืืืืื
- ืฉืืื ืืืืื, ืฉืื ืืืฉื. ืื ื ืืคืชื ื-Yandex.Market, ืืืืื ืื ื ืืืื ืื ืืื ืืืืื ื'ืืืื ืืืื ืืขืฉืืช ืืช ืื ืืืขืืืืช. ืืืื ืชืฉืื ืฉืืื ืกืืืจื: ืืื ืื ื ืืกืคืจ ืืช ืืกืืคืืจ ืืื, ืืื ืืืื ืืคืชื ืืืง ืขื ื ืืกืืื ืจื ืฉื ืื? ืืขืืืื ืืื ืฉืื ื ืขืฆืื ืืืืชื ื'ืืืื ืืืืจืื ื, ืืคื ื ืืฉื ื ืืืฆื, ืื ืื ื ืขืืืื ืืืืจ ืืื ืื ืืื ืืืืื ืืืืืืืช ืืฉ.
ืืคื ื ืฉื ื ืงืืืืชื ืืชืืืืช ื-Yandex.Market. ืคืืชืืชื ืืช ื-backend ืขืืืจ Beru, ืขืืืจ ืืฉืืง ืขืฆืื, ืื ืจืื ืฉืืฉืชืืฉืช ืื. ืขืืฉืื ืื ื ืืืฉืื ืืขืืื ืฉื, ืืฆืืืช ืืืจ. ืื ื ืืืฆืจืื ืคืืืคืืจืื ืื ืืืืืช ืขืืืจ Yandex.Market ืขืืืจ ืฉืืชืคืื ืขืกืงืืื.
ืืืื ื ืชืืื. ืืื ืืืืื ื'ืืืื ืื ืงืืืช ืืื ืืขืฉืืช? ืืขืืืื ืืื ืฉ-Java ืืื ืฉืคืช ืชืื ืืช ืืืื ืืคืืจืกืืช. ืืฉ ืื ืงืืืื ืืืืื ืืืื.
ืืืืืื, ืงืืื ืืื ืืงืก TIOBE ืืื, ืืื ืืงืก ืคืืคืืืจื ืืคืืคืืืจืืืช ืฉื ืฉืคืืช ืชืื ืืช, ืื'ืืืื ืืืงืื ืืจืืฉืื ืฉื. ืืื ืื, ืืืชืจื ืืจืืฉืื ืืืืืื ืชืฉืืื ืื ืฉืจืื ืืืฉืจืืช ืืคื ืืืืช ืขืืกืงืืช ื-Java, ืืืืืจ ืืคืืชืื ื-Java ืชืืื ืชืืืื ืืืฆืื ืขืืืื.
ืืืืืื ืฉืืงืืืื ืืืื ืืืืื, ืื ืฉืืื ืฉืืฉ ืื ืชืืฆื ืชืฉืืื ืืืืื Stack Overflow ืื ืืืชืจืื ืืืจืื. ืืื ืื, ืืขืช ืคืืชืื ื-Java, ืืชื ืืืขืฉื ืืืชื ืงืื ื-JVM, ืื ืฉืชืืื ืืขืืืจ ืืงืืืช ื-Kotlin, Scala ืืฉืคืืช ืืืจืืช ืฉืืฉืชืืฉืืช ื-JVM.
ืื ืืื ืื'ืืืื ืื ืงืืืช ืืื ืืืืืืืืืืืช? ืืฉ ืฉืคืืช ืชืื ืืช ืฉืื ืืช. ืื ืคืืชืจืื ืืขืืืช ืฉืื ืืช, ืืชื ืืืืข ืืช ืื. ืืืืืื, Python ืืฆืืื ืืืชืืืช ืกืงืจืืคืืื ืืฉืืจื ืืืช ืืื ืืคืชืืจ ืืขืืืช ืืืืจืืช.
ืืฆื ืืืืืื, ืืชื ืืืื ืืฉืืื ืืืืคื ืืื ืืงืื ืืืคืขืื. ืืืืืื, ืืฉ ืื ื ืืืื ืืืช, ืืืื ืืืช ืืื ื ืื ืฉื Yandex, ืืงืื ืฉืืื ืืชืื ืืคืืืกืื. ืืื? ืื'ืืืื ืืฉ ืืืจ ืืื - Garbage Collector. ืื ืื ืงื ืืืืจืื RAM ืืืคืฆืื ืืืืชืจืื. ืืืืจ ืืื ืืชืืื ืืืืคื ืกืคืื ืื ื ืืขืืฆืจ ืืช ืืขืืื, ืืืืืจ, ืืื ืขืืฆืจ ืืช ืฉืืจ ืืชืืื ืืช ืืืืื ืืกืคืืจ ืืคืฆืื, ืืืืจืื ื ืงื ืฉื ืืคืฆืื. ืื ืืืจ ืืื ืขืืื ืืืื"ื, ืื ืื ืืื ืื. ืืื"ื ืฉืื ืืืกืข ืืฉืจ, ืืจืืข ืื ืื ืงื ืืช ืืืืืจืื ืฉืื ืืื ืืกืชืื ืขื ืืืืืฉ ืืื. ืืื, ืืื"ื ืืชืื ืขื ืืืงืฆืืขื ืื.
ืืืื ืืขืืืช ื'ืืืื ืคืืชืจ? ืืืื ืืขืืงืจ ืฉืคื ืืคืืชืื ืชืืื ืืืช ืืืืืืช ืฉื ืืชืืืช ืืืืจื ืฉื ืื, ืขื ืืื ืขืฉืจืืช ืื ืืืืช ืื ืฉืื. ืืคืจื, ืืืง ืืืื ืื-backend ื-Yandex.Market ืืชืื ืื'ืืืื. ืืฉ ืื ื ืฆืืืช ืืืืืจ ืืืกืคืจ ืขืจืื, ืขืฉืจื ืื ืฉืื ืืื ืืืช. ืืืงืื ืงื ืืชืืืืงื, ืืื ื ืชืื ืืืจ ืขืฉืจ ืฉื ืื ืื ืืืชืจ, ืืืืงืืื ื ืื ืกืื ืื ืฉืื ืืืฉืื ืืืืื ืื ืืช ืืงืื ืืื.
ืืืื ืืืคืืื ืื ืฆืจืืืื ืืืืืช ืืฉืคื ืืื ืฉืืงืื ืื ืืชืืื ืืงืืืช ืืืื ืฉื ืืชื ืืืื ืืคืชื ืืืชื ืืงืืืช ืืฆืืืชืื ืืืืืื. ืงืืื ืื, ืื ืฆืจืื ืืืืืช ืงืื ืงืจืื, ืืื ืฆืจืื ืืืืืช ืงื ืืืืฉื ืคืชืจืื ืืช ืืจืืืืงืืื ืืื ืืืจืืืื. ืืืืืจ, ืื ืฆืจืื ืืืืืช ืงื ืืืชืื ืืคืฉืืืช ืืจืื ืืืืื ืืื'. ืื ืื ืื ืฉ-Java ืืกืคืงืช ืื ื. ืืืื ืฉืคื ืืืืื ืช ืขืฆืืื. ืื ืืืฉ ืงื ืืืืฉื ืืคืฉืืืช ืืจืื ืืืืื ืืืจืืืืงืืืจืืช ืืืจืืืืช.
ืืฉ ืื ืืจืื ืืกืืจืืช ืืกืคืจืืืช ื-Java, ืื ืืฉืคื ืืื ืืช ืืืชืจ ื-15 ืฉื ืื. ืืืืื ืืืื ืืื, ืื ืื ืฉืืคืฉืจ ืืื ืืืชืื ืขืืื ืืื ืืชืื, ืื ืฉืืฉ ืืื ืืช ืฉื ืกืคืจืืืช ืืื ืื ืฉืืชื ืฆืจืื.
ืืืื ืืืฉืืจืื ืืกืืกืืื, ืืืขืชื, ืฆืจืืืื ืืืืืช ืืฉืืงื JA ืืชืืื? ืงืืื ืื, ืืืืืจ ืืืืข ืืฉืคืช ืืืืื ืฉื Java. ืืื ืืื ืืืืืฉืื ืืกืืจืช ืฉื ืืืจืงืช ืชืืืช. ืืืืืจ ืืื, ืงืืจืื, ืืืืจ ืขื ืื ืืฆืืจื ืืืื ืืืชืจ. ืื ื ืื ืืื ืก ืืืชืจ ืืื ืืขืืืง. ืืื ืืื ืืคืืกื ืืืจืืืืงืืืจื ืืืขืืฆืื. ืื ืื ื ืฆืจืืืื ืืืืืช ืืกืืืืื ืืืชืื ืงืื ืืคื ืืืืื ื ืืจืืืืงืืื ืืช ืืื ืืืชืื ืืืฉืืืื ืืืืืื. ืืื ืกืื ืฉื SQL ืื ORM ืืืฉืืืืช ืฉื ืขืืืื ืขื ืืกื ืื ืชืื ืื. ืืื ืื ืืืชืจ ืขื ืืงืฆื ืืืืืจื.
ืืืืช! ืืืืช Java. ืื ื ืื ืืืืช ืืืื ืืื ืืช ืืืจืืงื - ืืชื ืฆืจืื ืืืขืช ืืช ืืฉืคื ืขืฆืื. ืืื ืืืื ืืฉืื ืื. ืจืืฉืืช, ื'ืืืื ืืืฆืืื ืืจืื ืืจืกืืืช ืืฉื ืื ืืืืจืื ืืช, ืืืืืจ ื-2014-2015 ืืฆืื ืืฉืืืขืืช, ืืืจ ืื ืืฉืืื ืืช, ืืชืฉืืขืืช, ืืขืฉืืจืืช, ืืจืื ืืจืกืืืช ืืืฉืืช, ืืืืฆืื ืืื ืืจืื ืืืจืื ืืื ืืืื. , ืืืฉื, Java Stream API , lambda ืืื'. ืืืจืื ืืืื ืืื ืืืื, ืืจืืื, ืืื ืืืื ืฉืืฉืชืืฉืื ืืื ืืงืื ืืืฆืืจ, ืขื ืื ืฉืืืืื ืืจืืืื ืืช ืืฉืืชื ืฆืจืืืื ืืืขืช. ืืื, ืืกืืจ ืืงืืช ืกืคืจ ืืืืืฃ ืืกืคืจืืืช Java-4 ืืืืืช ืืืืื ืืืชื. ืื ืืชืืื ืืช ืฉืื ื: ืื ืื ื ืืืืืื Java-8 ืืืขืื.
ืื ื ืืงืืืฉืื ืชืฉืืืช ืื ืจืื ืืืืืืฉืื ืืืื Stream API, var ืืื'. ืื ื ืฉืืืื ืืืืื ืจืืืื ืืช ืืืฉืืฉืื ืื ืืืื ืืืืฆืืจ. ืืืืืจ, ื-API ืฉื Stream ืืจืื ืืืชืจ ืืื ืื ืืืืืืืช, ืืืืคื ืืืื, ืืืจ ืืืื ืืื ืื. ืืงืคื ืืฉืื ืื.
ืืืฉ ืื ืืื ื ืืืจืื ืืื ืืืืจืืืจืื, ืืจืืืื ืืื ืืืื. ืืืจืื ืฉื ืจืืื ืื ืื ืืฉืืืื ืื ืขืื ืืชื ืืืชื ืืืื ืงืื ืงืื ืืขืฆืื. ืืชื ืื ืฆืจืื ืืช ืืืจืืืื ืืืื, ืื ืฆืจืื ืืืชื ืืืื? ืืื ืื ืืืืื ืืฉืืื ืืจืืืื ืืช, ืื ืืืืื ืืืขืืื ืื ืืืคืงื. ืืืืคื ืืืื, ืืืื ืืฉืื ืื ืืืจืืืื, ืืืืจืืืจืื ืืืืจืื ืืืจืื.
ืืื ื ืืืืข. ืืชื ืื ืืืื ืืืืช ืืื ืืื ืื, ืืื ืื ืืืื ื ืืืจ ืื ืืชื ืื ืจืง ืืืืข ืฉืืฉ ืกืืื, ืืืืื ืื ืืืืืืื ืืช. ืืื ืืืฉืืืื ืฉืื ืื ืฉื ืืื ืื. ืืืืืื, ืืืืชื ืืืืื ื-Java ืืฉ ืืืฉืืืื ืจืืื, ืืืื HashMap ื-TreeMap. ืืฉ ืืื ืืกืืืคืืืืืงืืช ืฉืื ืืช, ืื ืื ืืืื ืืืจืช ืืืคื ืื. ืืชื ืฆืจืื ืืืขืช ืืื ืื ืฉืื ืื ืืืชื ืืืฉืชืืฉ ืืืืื ืืื.
ืื ืืืื ืื ืืืื ืืื ืื ืื ืืชื ืืืืข ืืื ืืื ื ืื ืชืื ืื ืืืื ืขืืืืื ืืืืคื ืคื ืืื. ืืืืืจ, ืื ืงื ืืืขืช ืืช ืืืกืืืคืืืืืงื ืฉืืื - ืืื ืืืืืืจ ืขืืื, ืืื ืืื ืขืืื ืืืขืืจ, ืืื ืืื ืืืื ื ืขืืื ืืคื ืื - ืืืฉื, ืื ืื ืืื ื-HashMap.
ืืืื ืืฉืื ืื ืื ืืขืฆืื ืืืืจืคืื. ืืื ืืืจืื ืฉืื ืื ืืืื ื ืคืืฆืื ืืงืื ืืืืฆืืจ, ืืื ืื ืคืืคืืืจืืื ืืจืืืื ืืช. ืืืชืื, ืืชื ืฆืจืื ืืืืืช ืืกืืื ืืืฆืืช ืขืฆืื, ืืจืคืื ืืจืืื ืืืขืืืง. ืื ืืื ืืืืืจืืชืืื ืคืฉืืืื.
ืืจืืข ืฉืชืชืืื ืืืชืื ืื ืงืื ืืืื, ืืืจืื, ืืืืฆืขืืช ืกืคืจืืืช, ืงืื ืจื ืืืืงืืช, ืชืืื ืฉืงืฉื ืื ืืื ืืื ืืช ืืขืจืืืช ืืืคืชืืจ ืชืืืช. ืืื ืื ืืขืืงืจ Maven ื- Gradle. ืื ืืืคืฉืจืื ืื ืืืืื ืกืคืจืืืช ืืคืจืืืงื ืฉืื ืืฉืืจื ืืืช. ืืืืืจ, ืืชื ืืืชื XML ืืฉืืจื ืืืช ืืืืืื ืกืคืจืืืช ืืคืจืืืงื. ืืขืจืืืช ืืขืืืืช. ืื ืืขืจื ืืืื, ืืฉืชืืฉ ืืืื ืืื - Maven ืื Gradle.
ืืื - ืืืืืฉืื ืืขืจืืช ืืงืจืช ืืจืกืืืช. ืื ื ืืืืืฅ ืขื Git ืื ืื ืคืืคืืืจื ืืืฉ ืืืื ืืืจืืืื. ืืืขื ืืืื ืืฉืชืืฉืื ื-Git, ืื ืืืจ ืืื ืื, ืืชื ืื ืืืื ืืืืืช ืืืขืืื.
ืืืืื ืกืืืืช ืคืืชืื. ืื ื ืืืืืฅ ืขื IntelliJ Idea. ืื ืืืื ืืืจื ืืช ืชืืืื ืืคืืชืื, ืขืืืจ ืื ืืืื, ืืืชื ืื ืืช ืื ืงืื ื-boilerplate, ืืืืคื ืืืื, ืื ืืื ืื.
ืงืืฉืืจืื ืืืฉืงืืคืืช: SQLZOO , ืืืจืืคืืกื
SQL. ืงืฆืช ืขื backenders. ืืืืงื ืืื ืืื ืืงืจื ืืฆืืืง. ืืืืืื ืืคื ื ืจืืืื ืืืชืืืืช ืืฉื ื ืฉืื, ื ืขืจืช ืืฉืืื ืื ืืฉ ืืชืงืฉืจื ืืืื ืืืืจื ืฉืืขืื ืืืืืื ืืฉืืื ืืืชื ืขื SQL ื-HTTP, ืื ื ืฆืจืืื ืืืืื ืืช ืื. ืืื ืืืขืชื ืืืขื ืืืื ืขื SQL ืื HTTP. ืืืฆืืชื ืืช ืืืชืจ ืืืื ืื ืืื -
ืืื ืื ื ืืืจ ืืืืืจ ืืช ืืจืืืืงืืืจืช ืืกืื ืื ืชืื ืื. ืืื ืื ืืื ื ืืคืชืืืช, ืืื ืืงืกืื, ื ืืจืืืืืฆืื. ืืฉ ืกืืจื ืฉื ืคืืกืืื ืขื ืื ื-Habrรฉ.
ื-Java, ืื ืืกืฃ ื-SQL, ืืฉ ืื ืืื ื ืืขืจืืืช ืืืคืื ืืืก ืืืืืืงื ืืื JPA. ืืฉ ืืืื ืงืื. ืืฉืืื ืืจืืฉืื ื ืืฉ ืงืื SQL ืืืฉืื - SELECT id name FROM info.users WHERE id IN userIds. ืืืกื ืื ืชืื ืื ืฉื ืืืฉืชืืฉืื, ืืืืืื, ืืชืงืืืื ืืืืืื ืืืฉืืืช ืฉืืื.
ืืืืจ ืืื, ืืฉ ืืืคื ืืกืืืื ืฉืืืคื ืืืืืืงื ืืืืกืืก ืืืืืืืงื Java. ืืืฉื ื ืฉืืื ืฉืืืฉืืช ืืืื ืฉืืขืฆื ืืืฆืขืช ืืช ืืงืื ืืื. ืืช ืื ืื ื ืืชื ืืืืืืฃ ืืืืฆืขืืช JPA ืืฉืืจื ืืืช, ืฉืืชืืื ืืืื. ืื ืขืืฉื ืืช ืืืชื ืืืืจ - ืืฆื ืืช All ByIdIn. ืืืืืจ, ืืืชืืกืก ืขื ืฉื ืืฉืืื, ืืื ืืืืฆืจืช ืขืืืจื ืฉืืืืชืช SQL.
ืืืจ ืืื ืื ืืืื. ืื ื ืขืฆืื, ืืฉืื ืืืจืชื SQL, ืืฉืชืืฉืชื ื-JPA. ืืืืคื ืืืื, ืฉืืื ืื. ืื ืืชื ืขืฆืื ืืืื ืืืืื SQL, ืื ืืกืื. ืืืืื, ืืฉ!
ืืืื. ืื ืฉืืข ืขื ืืืจ ืืื ืืกืืจืช ืืืื? ืืชื ืจืืื ืืื ืืื ืืฉ? ืื ืืื ืกืืื. ืืืื ืืืื ืืืจืืฉืืช ืฉื ืื ืืฉืจื ืฉื ืืื ื-Java backend. ืืื ืื, ืืื ืืืืช ืืงืื ืืืชืคืชืืืช ืืืืื. ืืื ืืืื? ืงืืื ืื, ืื ืืกืืจืช ืฉื ืืืจืงืช ืชืืืช. ืื ืขื ืื
Spring Boot ืืื ืืืง ืฉื Spring ืืืืคืฉืจ ืื ืืืคืขืื ืืช ืืคืืืงืฆืืืช ืืฉืจืช ืฉืื ืขื ืืคืชืืจ ืืื. ืืชื ืขืืืจ ืื THID, ืืืืฅ ืขื ืืื ืืคืชืืจืื, ืืขืืฉืื ืืฉ ืื ืืช ืืคืืืงืฆืืืช ืืฉืจืช ืฉืื ืืคืืขืืช ืขื localhost 8080. ืืืืืจ, ืขืืืื ืื ืืชืืช ืฉืืจืช ืงืื ืืืช, ืืื ืื ืืืจ ืขืืื. ืืืจ ืืื ืื ืืืื. ืื ืืชื ืืืชื ืืฉืื ืืฉืื, ืืฉ!
ืืืืื ืืื ืืกืืจืช ืืืืื ืืืื. ืื ืื ืจืง ืงืืื ืืช ืืืฉืื ืืฉืจืช ืฉืื ืืคืืชืจ ืืช ืืืจืงืช ืชืืืช. ืื ืืืคืฉืจ ืื ืืขืฉืืช ืืจืื ืืืจืื, ืืืื ืืฆืืจืช ืฉืืืืช REST API. ืืืืืจ, ืืชืืช ืฉืืื ืืืฉืื ืืฆืืจืคืช ืื ืืช ืืขืจืช Get mapping. ืืขืืฉืื ืืืจ ืืฉ ืื ืฉืืื ืืืฉืื ื-localhost ืฉืืืชืืช ืื Hello world. ืฉืชื ืฉืืจืืช ืงืื ืืื ืขืืื. ืืืจืื ืืื ืืืื.
ืืืืื ืื ืืงื ืขื ืืชืืืช ืืืื ื. ืืื ืืจื ืืื ืืืืงื ืืคืืชืื ืืืื. ืฆืจืื ืืืืืง ืืช ืืงืื. ืืฆืืจื ืื, ื-Java ืืฉ ืกืคืจืืื ืืื ืืื JUnit 5. ื-JUnit ืืืืคื ืืืื, ืืื ืืืจืกื ืืืืจืื ื ืืื ืืืืืฉืืช. ืืฉ ืืื ืืืืืงื, ืื ืืื ื ืงืืืขืืช ืืืืจืื ืืืจืื.
ืืืฉ ืืกืืจืช Mockito ืืืืืื. ืชืืจ ืืขืฆืื ืฉืืฉ ืื ืคืื ืงืฆืืื ืืืืช ืืืฉืื ืฉืืชื ืจืืฆื ืืืืืง. ืืคืื ืงืฆืืื ืืืืช ืขืืฉื ืืจืื ืืืจืื, ืืืื, ืืืคืฉืื ืืืืฆืข, ืืื ื ืื ืกืช ื-VKontakte ืขื ืืืืื ืฉืื, ืืืฉื, ืืืงืืืช ืืช ืืฉื ืืคืจืื ืืืืฉืคืื ืฉื ืืฉืชืืฉ VKontakte ืืืืืื. ืื ืจืื ืฉืื ืชืืืื ืืช VKontakte ืืืืื ืื, ืื ืืืืจ. ืืื ืืชื ืฆืจืื ืืืืืง ืืช ืืคืื ืงืฆืืื ืืืืช, ืื ืขืฉืืช ืืช ืืืืืงื ืืื, ืืืืฆืขืืช Mockito, mok it, ืืืงืื ืืืชื.
ืืชื ืชืืื ืฉืืืฉืจ ืืืืขื ืืงืฉื ืืืืชื ืืื ืขื ืชืขืืื ืืืื ืืื ืื ืืืจืช, ืืื ืืืืืจื ืืืื ืฉื ืืฉืคืื, ืืืฉื, Vasya Pupkin. ืืื ืืขืืื. ืืืืืจ, ืชืืืืง ืืช ืื ืืคืื ืงืฆืืื ืืืืช ืขืืืจ mok one class. ืืืจ ืืื ืื ืืืื.
ืงืืฉืืจ ืืฉืงืืคืืช
ืชืื ืืืช ืขืืฆืื. ืื ืื? ืืื ืื ืชืื ืืืช ืืคืชืจืื ืืขืืืช ืืืคืืกืืืช ืืืชืขืืจืจืืช ืืคืืชืื. ืืคืืชืื, ืืขืชืื ืงืจืืืืช ืืชืขืืจืจืืช ืืขืืืช ืืืืช ืื ืืืืืช ืฉืืืื ื ืืืจ ืืคืชืืจ ืืืืฉืื ืืฆืืจื ืืืื. ืืื, ืื ืฉืื ืืืฆืืื ืฉืืืืช ืขืืืื ืืืืืฆืืช, ืชืื ืืืช ืืกืืืืืช, ืืืฆื ืืคืชืืจ ืืช ืืืขืืืช ืืืื.
ืืฉ ืืชืจ ืขื ืืืคืืกืื ืืคืืคืืืจืืื ืืืืชืจ - refactoring.guru, ืืชื ืืืื ืืงืจืื ืืืชื, ืืืืืช ืืืื ืืคืืกืื ืืฉ, ืืงืจืื ืืืืจื ืฉื ืชืืืืจืืืช. ืืืขืื ืืื ืฉืื ืืืขื ืืกืจ ืชืืขืืช. ืืืขืฉื, ืืคืืกืื ืืื ืชืจืืื ืืื ื ืฉืืืืฉืืื ืืืืืื.
ืชืฉืืขื ืขื ืืื ืืคืืกืื ืืื Singletone ืื Builder. ืื ืฉืืข ืืช ืืืืืื ืืืื? ืืจืื ืื ืฉืื. ืืฉ ืืคืืกืื ืื ืื ืคืฉืืืื ืฉืืชื ืืืื ืืืืฉื ืืขืฆืื. ืืื ืจืื ืืืคืืกืื: ืืกืืจืืืื, ืืคืขื, ืืืืช - ืื ืืจืืจ ืืืื ืืืืฉื ืืืชื.
ืืขื ืฉืื ืชืจืื ืืคืืขื ืืงืื ืฉื ืืื ืืืจ ืืงืื ืฉืืืื ืืืืฉืืช ืืืคืืก ืืื, ืื ืชืืื ืืืืฉื ืืืชื ืืขืฆืื. ืืื, ืชืจืืื ืืฉืื ืืืื ืขื ืืคืืกืื. ืืจืง ืืงืจืื ืขืืืื ื- refactoring.guru ืื ืืืขืื ืืืืืื, ืืื ืืืืื ืฉืืื ืืขืฉืืช ืืืช.
ืืื ืฆืจืื ืืคืืกืื? ื ื ืื ืฉืืฉ ืื ืืืืงื ืืกืืืืช ืฉื User. ืืฉ ืืื ืืืื ืืฉื. ืืื ืืฉืชืืฉ ืืืื ืืืืืช ืื ืืืื ืืื ืฉื. ืืฉืืื ืืืขืื ืืื ืืืืชื.
ืืื ืืืจืืื ืืืชืื ืืฉืชืืฉ? ืืฉื ื ืฉืชื ืืคืฉืจืืืืช - ืื ืงืื ืกืืจืืงืืืจ ืื ืกืืืจ. ืืื ืืืกืจืื ืืช ืฉื ืฉืชื ืืืืฉืืช?
ืึผึทื ึทืึดื. ืืฉืชืืฉ ืืืฉ (7, "ืืื ื"), ืืกืืจ. ืขืืฉืื ื ื ืื ืฉืืื ืื ื ืืืืงื User, ืืื ืืืืงื ืืืจืช, ืขื ืฉืืขื ืฉืืืช ืืกืคืจืืื. ืืืื ืื ืื ืื ืืืืื ืฉืืขื ืืกืคืจืื ืขืืงืืื. ืื ืืจืืจ ืืื ืืืกืคืจืื ืืืื ืืืืื ืืื ืฉืืื ืืืืื ื ืืก. ืืืขืฆื ืื ืืืื.
ืืืคืฉืจืืช ืืฉื ืืื ืืื ืืงืืข. ืืชื ืืืชื ืืืืจืืจ: setId(7), setName(โBondโ). ืืชื ืืืื ืืืื ื ืืก ืฉืืื ืืืืื ืชืืื. ืืื ืืืืืืจ ืืฉ ืืขืื. ืจืืฉืืช, ืืชื ืขืืื ืืฉืืื ืืืงืฆืืช ืืฉืื, ืืฉื ืืช, ืืืืืืืงื ืฉืื ืืชืืจืจ ืื ืืชื ืืฉืื ืื. ืื ืืื ื ืืืื ืืฉืจืฉืืจ ืืืคืืืช ืืขื ืืช ืงืจืืืืช ืืงืื. ืืื ืื ืฉืื ืืืฆืืื ืืคืืก ืืื ืื - Builder.
ืขื ืื ืื? ืืืื ื ื ืกื ืืฉืื ืืช ืืืชืจืื ืืช ืฉื ืฉืชื ืืืืฉืืช - ืืืืืจ ืืื ืื - ืืืืช. ืื ืื ื ืืืฆืจืื ืืืืืืงื ืืกืืื, Builder, ืฉืืืื ืื ืื ืฉืืืช Id ื-Name, ืฉืืขืฆืื ืืืื ื ืขื ืกืื ืืงืืืข, ืืฉืชืืื ืื ืฉืืืช Build ืฉืืืืืจื ืื ืืฉืชืืฉ ืืืฉ ืขื ืื ืืคืจืืืจืื. ืื ืื ื ืืงืืืื ืืืืืืงื ืืืชื ืืฉืชื ื ืืืืืืจ. ืืื ืื!
ืื ืืืขืืืช? ืืื ืืฉ ืื ื ืืช ื-Builder ืืงืืืกื. ืืืขืื ืืื ืฉืื ืื ื ืขืืืื ืืืืืื ืืฉืืื ืืืืืง ืืืืื ืฉืื. ืืื ืฉืืื ื ืืืงืจ ืืช ืืืืื, ืืืงืจื ืืื ื-Builder ืืื ืืืืชืื ืืืคืก, ืื ืืกืื int ืืื ื ื ืืชื ื- null. ืืื ื ืขืฉื ืืช ืืฉื "ืืื ื" ืื ืฉืื ืืืงืจ ืืืฉืจื ืืืืื, ืืืื ืื ื ืืฉืชืืฉ ืืืฉ ืขื ืืืื "0" ืืืฉื "ืืื ื". ืื ืืื ืื.
ืืืื ื ื ืกื ืืืืืื ืืื. ื-Builder ื ืฉื ื ืืช int ื-int ืื ืฉืืืื nullable. ืขืืฉืื ืืื ืืฆืืื.
ืื ื ื ืกื ืืืฆืืจ ืืฉืชืืฉ ืืฉื "Bond", ืืฉืฉืื ืืฉืื ืืช ืืืืื ืฉืื, ื ืงืื ืืจืื ืืฆืืืข null, ืื ืืืืื ืืื ื ื ืืชื ื-null, ืื-Builder ืืฉ null, ืืืืืื ืืจืื ืืฆืืืข.
ืืื ืื ืื ื ืขืืืื ืืืืืื ืืฉืืื ืืฉืื ืฉื, ืื ืืืืจื ื ืืช ืืฉืืืืจ ืืืืืจ ืฉื ืืืืืืืงื ื-null. ืืขืช, ืืืฉืจ ืื ื ืืื ืื ืืช ืืืืืืืงื ืฉืื ื ื-Builder, ืืื ืืืืง ืฉืืฉืื ืืื ื ื ืืชื ื- null. ืืื ืื ืืื.
ืืืื ื ืกืชืื ืขื ืืืืืื ืืืืจืื ื. ืืืงืจื ืืื, ืื ืืืืฉืื ื ืฉืื ืืช null ืืืื ืืจืืฆื ืฉื ืืืื, ืื ืืืื ื ืืืจ ืืืขืช ืืื ืฉืขืฉืืช ืืช ืื ืืื ืื ืืื ืื ืฉืืชื ืขืืฉื ืืขืืช ืขืืฉืื.
ืืชื ืฆืจืื ืืืจืืง ืฉืืืื ืื ืืจืืข ืืฆืืจืช ืืืฉืชืืฉ, ืืื ืืืฉืจ ืืชื ืืืืืจ null ืืืืื. ืืื, ืืืื ื ื ืฉื ื ืืช ืืงืืืข ืฉืื ื-int, ืืืื ืืฉืืข ืฉืืจืงื ืืื.
ืืงืืฆืืจ, ืื ืืืขื? ืืฉ ืืคืืก Builder ืคืฉืื, ืืื ืืคืืื ืืืืฉืื ืฉืื ืืฉ ืืื ืืงืืืืช, ืื ืื ืืืื ืืื ืื ืืืกืชืื ืขื ืืืฉืืืื ืฉืื ืื ืฉื ืืคืืกืื. ืืื ืืคืืก ืืฉ ืขืฉืจืืช ืืืฉืืืื. ืื ืื ืืืื ืืขื ืืื.
ืืื ื ืืชืื Builder ืืงืื ืืืฆืืจ? ืื ื ืืืฉืชืืฉ ืฉืื ื. ืื ื ืืฆืืืืื ืืืื ืกืืืื Builder ืืกืคืจืืืช Lombok, ืืืื ืขืฆืื ืืืืฆืจ ืขืืืจื ื Builder. ืืืืืจ, ืื ืื ื ืื ืืืชืืื ืฉืื ืงืื, ืืื Java ืืืจ ืืืฉืืช ืฉืืืืืงื ืืื ืืฉ Builder, ืืื ืื ื ืืืืืื ืืงืจืื ืืื ืืื.
ืืืจ ืืืจืชื ืฉืื'ืืืื ืืฉ ืกืคืจืืืช ืืืขื ืืื ืืืจ, ืืืื Lombok, ืกืคืจืืื ืืื ืืื ืฉืืืคืฉืจืช ืืืืื ืข ืืืชืืืช boilerplate. ืืื ื, GET.
ืืคืืกืื ืืืืืื ืืืืืช ืืืจืืืืืื - ืงืฉืืจืื ืื ืจืง ืืืืืงื ืืืช, ืืื ืืืขืจืืช ืืืื. ืืฉ ืขืืงืจืื ืื ืื ืืื ืื ืืชืื ืื ืืขืจืืช: ืขืืงืจืื ืืืจืืืช ืืืืื. ืขื ืื ืืื ืืืืจ? ืืขืืืื ืฉืื ืืืืงื ืืืืืช ืืืืืช ืืืจืืืช ืืืืง ืืืคืื ืงืฆืืื ืืืืช ืฉืื. ืืืงืจื ืื, ืืฉ ืื ื ืืงืจ ืฉืืชืงืฉืจ ืขื ืืฉืชืืฉืื, ืืืืืืงืื JSON. ืืฉ ืืช Facade, ืืฉืจ ืืืืจื ืืืืืืงืื JSON ืืืืืืื ืฉืืคืืืงืฆืืืช Java ืชืขืืื ืืืชื. ืืฉ ืฉืืจืืช ืฉืืฉ ืื ืืืืืื ืืืจืื ืฉืขืืื ืขื ืืืืืืื ืืืื. ืืฉ Data Access Object ืฉืืื ืืก ืืช ืืืืืืื ืืืื ืืืกื ืื ืชืื ืื ืืืืืืจ ืืืชื ืืืกื ืื ืชืื ืื. ืืืฉ ืืช ืืกื ืื ืชืื ืื ืขืฆืื. ืืืืืื ืืืจืืช, ืื ืื ืืื ืืืืืงื ืืืช, ืืื ืื ืื ื ืขืืฉืื ืืืืฉื ืืืืงืืช ืฉืื ืืช, ืืื ืขืื ืืคืืก.
ืืืืจ ืฉืืืืช ืคืืืช ืื ืืืชืจ ื'ืืืื, ืื ื ืืืจ ืืืชืื ืคืจืืืงื ืืฉืื ืฉืืืืื ืืกื ื ืชืื ืื, ืืขืืื ืขื ืืืฉืงื API ืืืจืื, ืืืืฉืืฃ ืืช ืืคืืืงืฆืืืช ืืฉืจืช ืฉืื ืืืงืืืืช REST API. ืื ืืืื ืืืจ ื ืืืจ ืืืืกืืฃ ืืงืืจืืช ืืืืื ืฉืื, ืื ืืืื ืกืืื ืืื ืื ืืืื ืื ืฉืื. ืขื ืื ืืชื ืืืื ืืืืช ืืืงืื ืขืืืื.
ืื ื ืืืืื ืืืืฉืื ืืฉืจืช ืฉืื. ืืฉื ื ืืฉื ืืื ืฉืื, ืืชืืชื ืขืืืื ืขื ืืืืจ'ื. ืื ืืชืื ืืคืืืงืฆืื ืื ืืื ืืืจืืื ืืืจืืขืื. ืฉื, ืืฉืชืืฉืื ืืืื ืืืืื ืก ืืจื VKontakte, ืืืงื ื ืงืืืืช ืขื ืืืคื, ืืืฆืืจ ืืืจืืขืื, ืืืืืื ืืช ืืืจืืื ืืืืื, ืืฉืืืจ ืชืืื ืืช ืฉื ืืืจืืขืื ืืื'.
ืื ืขืฉืืชื ืืคืจืืืงื? ืืชื ืืืฉืื ืฉืจืช ื-Spring Boot ืืืื ืืืฉืชืืฉ ื-SQL. ืื ืืืจืชื ืืืชื, ืืฉืชืืฉืชื ื-JPA. ืื ืื ืืืื ืืขืฉืืช? ืืืื ืก ื-VK ืืจื OAuth-2. ืงื ืืช ืืืกืืืื ืฉื ืืืฉืชืืฉ, ืื ืืืชื ื-VK, ืชืืืืง ืฉืื ืืฉืชืืฉ ืืืืชื. ืงืื ืืืืข ืขื ืืฉืชืืฉืื ืืจื VKontakte. ืืื ืืฆืืื ืืฉืืืจ ืืืืข ืืืกื ื ืชืื ืื, ืื ืืืืฆืขืืช JPA. ืฉืืืจ ืืืืืื ืืช ืชืืื ืืช ืืงืืฆืื ืืืจืื ืืืืืจืื ืืืืฉื, ืืฉืืืจ ืงืืฉืืจืื ืืืืื ืืืกื ืื ืชืื ืื. ืืืืชื ืืื ืื ืืืขืชื ืฉืืฉ ืืืืืืงืื CLOB ืืืกื ืื ืชืื ืื, ืื ืขืฉืืชื ืืช ืื ืืื. ืืื REST API ืขืืืจ ืืฉืชืืฉืื, ืืืฉืืื ืืงืื. ืืืื ืืืืงืืช ืืืืื ืืคืื ืงืฆืืื ืืืืช ืืกืืกืืช.
[โฆ] ืืืืื ืงืื ื ืืืืืื ืืืืฆืืืช ืฉืื ืฉื ื'ืืืื. ืืฉื ื ืืจืืฉืื ื ืฉืื ืืืื ืืืจืกืืื ืืืืื ืืืชื C# ืืงืืืืชื ืืื ื ืืชืื ืืช OOP - ืื ืื ืฉืืขืืจืื, ืืืฉืงืื, ืืคืฉืื ืืืื ืื ื ืืืฆืื. ืื ืขืืจ ืื ืืืื. ืืื ืื, ืืืืื Java ืืื ืื ืงืฉื; ืื ืืจืืจ ืืืืข ืืฉ ืฆืืจื ืืฉืืขืืจืื.
ืืฉื ื ืืฉื ืืื ืฉืื ืืืื ืืืจืกืืื, ืฉืื ืืืืื ืืช Java core, ืืื ืื ืขืฆืจืชื ืฉื, ืืืืชื ืืืืื ืืืื ืืขืฆืื ืืืชืืชื ืขืืืื ืืงืืจืก, ืืคืจืืืงื ืฉืื, ืฉืฆืืื ืชื ืืืขืื. ืืขื ืื ืื, ืืฆืืชื ืืืชืืืืช ื-Yandex, ืขืืจืชื ืจืืืื ืื ืื ืกืชื ื-Yandex.Market. ืฉื ืืชืืชื ืืช ื-backend ืขืืืจ Beru, ืื ืืฉืืง ืฉืื ื, ืืขืืืจ Yandex.Market ืขืฆืื.
ืืืืจ ืืื, ืืคื ื ืืฆื ืฉื ื, ืขืืจืชื ืืฆืืืช ืืืจ ืืืืชื ืฉืืง. ืื ื ืขืืฉืื ืื ืืืืืงื ืขืืืจ ืฉืืชืคืื ืขืกืงืืื. ืื ืื ื ืืคืืืคืืจืื ืืื ืืืืืช, ืื ืื ื ืฉืืืฉื ื-backend, ืื ืืฉ ืื ื ืชื ืืืื ืืืื ืฉื ืืฉืคืขื ืขื ืืคืจืืืงื. ืื ืืืื ืืขื ืืื, ืืืขื ืืืืช. ืืืืืจ ืื ืื ื ืืขืฆื ืืกืคืงืื ื ืชืื ืื ืขื ืืฉืืง โ ืืื ืืืืืจืืช, ืืืืื ืงืืืืจืืืช, ืืืืื ืืืืื, ืืฉืืชืคืื ืขืกืงืืื, ืืืจืืช ืืืืืืช ืืืืืจืืช. ืืื ืื ื ืจืง ืฉืืืฉื, ืื ืื ื ืืืชืืื ืืช ืืงืื ืืื, ืืื ืืืื ืืื ืื.
ืชืืื! ืงืืฉืืจืื ืฉืืืืฉืืื:
-
-
-
-
-
-
-
-
ืืงืืจ: www.habr.com