diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 758747e..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: ci -on: - push: - branches: - - develop -permissions: - contents: write -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: 3.x - - uses: actions/cache@v3 - with: - key: mkdocs-material-${{ github.ref }} - path: .cache - restore-keys: | - mkdocs-material- - - run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mike - - run: mkdocs gh-deploy --force diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e18de46..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.idea/ -site/ -venv/ \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..1115cc6 --- /dev/null +++ b/404.html @@ -0,0 +1,595 @@ + + + + + + + + + + + + + + + + + + Руководство по вкатыванию в Backend на Java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index fa0086a..0000000 --- a/LICENSE.txt +++ /dev/null @@ -1,373 +0,0 @@ -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 5de570f..0000000 --- a/README.md +++ /dev/null @@ -1,52 +0,0 @@ -Данный репозиторий содержит инструкцию по вкатыванию в Backend на Java. -Инструкция описана на языке разметки Markdown. Для генерации использован статический генератор сайтов [MkDocs](https://www.mkdocs.org/). Тема - [MkDocs Material](https://squidfunk.github.io/mkdocs-material/) - -**Руководство находится здесь**: - - [https://EightM.github.io/JavaBackendStartGuide](https://eightm.github.io/JavaBackendStartGuide/) - -## Локальное развертывание и отладка - -### Установка Python - -Python 3.7+. Python можно поставить как из пакетного менеджера операционной системы, так и скачав дистрибутив с [официального сайта](https://www.python.org/). - -### Настройка виртуального окружения - -Открываем терминал. Для начала, устанавливаем пакет для работы с виртуальными окружениями Python: - -`py -m pip install virtualenv` - -Создаем папку виртуального окружения: - -`py -m virtualenv venv` - -После чего, в корне проекта можно увидеть папку venv. -Активируем виртуальное окружение: - -`.\venv\Scripts\activate` - -Устанавливаем в виртуальное окружение все необходимые для работы пакеты: - -`pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mike` - -### Запуск - -Выполняем в терминале команду: - -`mkdocs serve` - -В результате будет запущен сайт с инструкцией по адресу `127.0.0.1:8000`. -Подробнее можно почитать [ТУТ](https://squidfunk.github.io/mkdocs-material/creating-your-site). - -### Дополнение для контрибьютеров - -Принцип расширения документации не меняется. Пишем, используя [Markdown](https://www.markdownguide.org/) , а [MkDocs](https://www.mkdocs.org/) отображает в удобном для нас формате. Чтобы понять принцип, по которому строится навигация сайта, стоит обратить внимание на раздел *nav* в файле *mkdocs.yml* в корне репозитория. Верхний уровень навигации автоматически отображается в части сайта (см. св-во *navigation.tabs*) под заголовком. -Визуальное отображение динамически подхватывает изменения, достаточно сохранить редактируемый markdown-файл, зажав в редакторе комбинацию `CTRL + S`. -[MkDocs](https://www.mkdocs.org/) имеет огромное количество плагинов, интересные подборки можно подсмотреть [тут](https://github.com/mkdocs/best-of-mkdocs) и, конечно же, [тут](https://squidfunk.github.io/mkdocs-material/reference/). -Наконец, я бы обратил внимание на разделы [Setup](https://squidfunk.github.io/mkdocs-material/setup/) и [Reference](https://squidfunk.github.io/mkdocs-material/reference/) в [документации](https://squidfunk.github.io/mkdocs-material/). - - -## Развертывание онлайн (на платформе Github Pages) - -В папке *github/workflows* расположен файл *ci.yml*. В данном файле описана инструкция для платформы *Github Pages*. Как только изменения попадают в ветку *develop*, публикуется новая статическая версия сайта. diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000..1cf13b9 Binary files /dev/null and b/assets/images/favicon.png differ diff --git a/assets/javascripts/bundle.220ee61c.min.js b/assets/javascripts/bundle.220ee61c.min.js new file mode 100644 index 0000000..116072a --- /dev/null +++ b/assets/javascripts/bundle.220ee61c.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Ci=Object.create;var gr=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Hi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var rn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&rn(e,r,t[r]);if(Ht)for(var r of Ht(t))nn.call(t,r)&&rn(e,r,t[r]);return e};var on=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&nn.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ki(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=Ri(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ci(Hi(e)):{},Pi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var sn=Pt((xr,an)=>{(function(e,t){typeof xr=="object"&&typeof an!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Qe=O.type,De=O.tagName;return!!(De==="INPUT"&&s[Qe]&&!O.readOnly||De==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(a(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){a(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){a(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),Y())}function Y(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function B(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,B())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Y(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var cn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},s=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(B,N){d.append(N,B)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Y=!0,B=this;["append","delete","set"].forEach(function(O){var Qe=h[O];h[O]=function(){Qe.apply(h,arguments),v&&(Y=!1,B.search=h.toString(),Y=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,Y&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(f){Object.defineProperty(s,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){a(f)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var qr=Pt((Mt,Nr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof Nr=="object"?Nr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ai}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var E=p()(T);return m("cut"),E},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[T?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var Y=function(T,E){var H=v(T);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},B=function(T){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof T=="string"?H=Y(T,E):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?H=Y(T.value,E):(H=p()(T),m("copy")),H},N=B;function O(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Qe=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.action,H=E===void 0?"copy":E,I=T.container,q=T.target,Me=T.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function Ei(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function tn(j,T){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=c()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ai=Li},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var rs=/["'&<>]/;Yo.exports=ns;function ns(e){var t=""+e,r=rs.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof et?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function pn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{ln(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ln(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function ln(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new xn(r,n)},t}(F);var xn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Sn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Oe=new Sn(wn);var M=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Te(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=zi();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return un(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return Ni(e);if(pt(e))return qi(e);if(Nt(e))return Ki(e);if(Kt(e))return On(e);if(Gt(e))return Qi(e);if(Jt(e))return Yi(e)}throw Qt(e)}function Ni(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qi(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Dn(function(){return new Zt}))}}function Vn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,Y=function(){p==null||p.unsubscribe(),p=void 0},B=function(){Y(),u=m=void 0,h=v=!1},N=function(){var O=u;B(),O==null||O.unsubscribe()};return y(function(O,Qe){d++,!v&&!h&&Y();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,f))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,Y(),p=$r(B,o,$e),De.error($e)},complete:function(){h=!0,Y(),p=$r(B,s),De.complete()}}),U(O).subscribe(u))})(c)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),J())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Kn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>rr(e)),V(rr(e)))}var Yn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Wr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),va?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Wr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ba.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Gn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?M:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function _(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=_("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():M))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>M),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=_("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return G([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=G([n,r]).pipe(l(()=>Xe(e)));return G([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + +

CI/CD

+ +

Основы CI/CD

+

Раньше, когда мир был медленнее, программы выпускались крупными релизами (иногда даже раз в год), которые чаще всего вручную устанавливались на сервер. Исправляющие патчи выпускали быстрее, но тоже не то чтобы очень часто.

+

В современном мире ситуация значительно изменилась. Наши пользователи не готовы ждать, пока вы наконец-то запилите такую необходимую для них фичу. Они хотят её здесь и сейчас. Разработчики подстроились под эти желания и изменили подход к своей работе. Если мы что-то делаем регулярно, зачем это делать вручную? Если всё есть код, то мы можем делать с ним что угодно, отправлять куда угодно. Так появилась методика непрерывной интеграции и непрерывного развертывания.

+

Разработчик запушил новую фичу? Пора сделать рутинные действия: получить свежие изменения, запустить юнит-тесты, собрать приложение под нужные платформы, развернуть тестовое окружение и запустить интеграционные тесты. Все этапы прошли успешно? Значит, будем считать, что код стабилен и его можно отправить прямо на продуктив, где пользователи сразу получат такую долгожданную фичу и заметно веселее понесут бизнесу свои деньги. Все эти рутинные действия берет на себя система непрерывной интеграции. От нас требуется только предоставить ей необходимое окружение и предоставить скрипт конвейерной сборки. Всё остальное она берет на себя, активно работая на невидимом фронте, лишь периодически оповещая людей, если что-то пошло не так.

+

Звучит как идеальный мир, где все счастливы, но, к сожалению, в жизни всё несколько сложнее. Всегда есть перечень «Но» переменной длины, который вносит коррективы. Но сама концепция CI/CD и методология DevOps, к которой она относится, является сейчас крайне популярной и эффективной организацией создания и обновления наших продуктов. Ты найдешь ей применение практически на любом проекте.

+

Jenkins

+

Дженкинс — один из наиболее популярных серверов непрерывной интеграции. Что его делает таким популярным? Во-первых, он бесплатный и опенсорсный. Во-вторых, он чрезвычайно расширяемый благодаря сотням различных плагинов и библиотек. Не нашел нужную? Всегда можно запилить свою, ведь Jenkins написан на нашей любимой Java. Настройку наших конвейеров можно производить прямо на Groovy, что предоставляет нам практически неограниченные возможности.

+

Из минусов можно отметить откровенно устаревший интерфейс, и понимание, что если что-то пошло не так, в поддержку не напишешь, придется ковыряться самому. Следствие бесплатности, увы.

+

Однако сделать свои первые шаги и запустить первые конвейеры довольно легко. Просто следуй официальному гайду и очень скоро твоё приложение научится тестировать и собирать само себя. Ну не чудо ли?

+ +
+
+ + + Последнее обновление: + August 9, 2023 + +
+ Дата создания: + August 9, 2023 + + +
+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/containers/index.html b/containers/index.html new file mode 100644 index 0000000..326a5ea --- /dev/null +++ b/containers/index.html @@ -0,0 +1,793 @@ + + + + + + + + + + + + + + + + + + + + + + Контейнеризация - Руководство по вкатыванию в Backend на Java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + +

Контейнеризация

+ +

Контейнеры

+

В смутные времена, когда возникала торжественная необходимость задеплоить приложение на прод, подготовить рабочее окружение для разработчика или просто прогнать тесты на тестовом стенде, приходилось всё это делать ручками. Ты наверняка сталкивался с этим в повседневной жизни: хочешь установить программу, а ей нужен, например, установленный .NET. А ему тоже что-то нужно. И так мы проходим иногда весьма длинную цепочку пока, наконец, не получаем установленную и возможно даже работающую программу.

+

А что, если нам нужно переустановить систему? А что, если нужно это сделать на другой ОС? Со всем этим нам поможет технология упаковки приложений в контейнеры. Контейнеры позволяют нам инкапуслировать всю среду, которая необходима для работы нашей программы, внутри черного ящика. Это значит, что сама основная машина не будет замусориваться бесконечными библиотеками и доп. софтом, всё это будет аккуратно упаковано и не будет никому мешать. Удалил контейнер и вместе с ним уедет в небытие вся его обвязка. Никаких больше проблем с конфликтом версий у разного ПО. Счастье для всех, даром и никто не уйдет обиженным.

+

Исторически, у джавистов ещё в бородатые времена были сервлеты и контейнеры сервлетов, которые примерно про это, но не совсем. Однако, у всех остальных такого счастья не было и они придумали свои решения этой проблемы. Из тех, что наиболее на слуху, стоит отметить Docker и Kubernetes.

+

Docker

+

Docker, если по умному, — система по автоматизации и управлению нашими контейнерами. Мы ей даем контейнер, а она его запускает, настраивает и подготавливает к работе. Суть самих контейнеров простая как топор: мы описываем, в специальном формате, что нужно для нашего приложения (ОС, библиотеки и прочее). Весь минимальный набор, необходимый для корректной работы нашего приложения. А потом запекаем это как слоеный пирог. Собрал ты контейнер, у которого в основе Ubuntu и радуешься жизни, всё работает. А потом захотел стать модным и заменить убунту на alpine, поменял пару строк в своем файле и снова радуешься жизни. Docker хорош там, где нужно тестовое окружение или окружение для разработчика.

+

Помни, что готовить докер в продуктиве гораздо сложнее, так как сразу возникает куча вопросов, например, по поводу производительности и безопасности. Для твоих учебных проектов это некритично, но в случае чего-то серьезного, лучше положиться на SRE-инженера / системного администратора.

+

По учебным материалам обрати внимание на:

+
    +
  • Jeff Nickolof. Docker in Action. Серия «in Action» обычно довольно качественная сжатая (но не чересчур), по самым разным темам. Докер не исключение, если хочешь быстро получить базовые знания, данная книга тебе поможет;
  • +
  • Официальная документация. Куда уж без документации. Написана хорошо, много полезных примеров и гайдов, не стесняйся туда почаще заглядывать.
  • +
+

После того как ознакомишься с учебными материалами, попробуй упаковать с помощью докера любое своё приложение и задеплоить, например, на Heroku. Гайд по деплою докер-образов в Heroku, можно найти здесь.

+

Kubernetes

+

Один контейнер — это хорошо, это надежно. Но что, если мы поддались волне хайпа и теперь у нас из всех щелей лезут микросервисы? Что, если контейнеров у нас десятки, если не сотни? Как управлять всем этим зоопарком и не сойти с ума? Здесь к нам на помощь придет оркестратор Kubernetes или просто кубер. По самому термину «оркестратор» можно догадаться, что его задача состоит в управлении и контроле за нашим многочисленным зоопарком контейнеров. Он позволяет нам их запускать, заменять на другие, следить за их состоянием, автоматически перезапускать, если кто-то упал и даже автоматически масштабироваться в зависимости от текущей нагрузки.

+

К сожалению, с большой силой приходит большая головная боль, поэтому обычно с кубером работает специальный человек — SRE-инженер. SRE это такой умный человек, который следует философии DevOps. Если есть желание, можешь ознакомиться с бесплатной книгой от Google, где описывается их виденье данной профессии.

+

На начальном этапе тебе достаточно будет знать, что кубер существует, что он классный и его очень трудно готовить без соответствующего опыта.

+ +
+
+ + + Последнее обновление: + August 9, 2023 + +
+ Дата создания: + August 9, 2023 + + +
+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/docs/cicd.md b/docs/cicd.md deleted file mode 100644 index 6bc85b6..0000000 --- a/docs/cicd.md +++ /dev/null @@ -1,17 +0,0 @@ -### Основы CI/CD - -Раньше, когда мир был медленнее, программы выпускались крупными релизами (иногда даже раз в год), которые чаще всего вручную устанавливались на сервер. Исправляющие патчи выпускали быстрее, но тоже не то чтобы очень часто. - -В современном мире ситуация значительно изменилась. Наши пользователи не готовы ждать, пока вы наконец-то запилите такую необходимую для них фичу. Они хотят её здесь и сейчас. Разработчики подстроились под эти желания и изменили подход к своей работе. Если мы что-то делаем регулярно, зачем это делать вручную? Если всё есть код, то мы можем делать с ним что угодно, отправлять куда угодно. Так появилась методика непрерывной интеграции и непрерывного развертывания. - -Разработчик запушил новую фичу? Пора сделать рутинные действия: получить свежие изменения, запустить юнит-тесты, собрать приложение под нужные платформы, развернуть тестовое окружение и запустить интеграционные тесты. Все этапы прошли успешно? Значит, будем считать, что код стабилен и его можно отправить прямо на продуктив, где пользователи сразу получат такую долгожданную фичу и заметно веселее понесут бизнесу свои деньги. Все эти рутинные действия берет на себя система непрерывной интеграции. От нас требуется только предоставить ей необходимое окружение и предоставить скрипт конвейерной сборки. Всё остальное она берет на себя, активно работая на невидимом фронте, лишь периодически оповещая людей, если что-то пошло не так. - -Звучит как идеальный мир, где все счастливы, но, к сожалению, в жизни всё несколько сложнее. Всегда есть перечень «Но» переменной длины, который вносит коррективы. Но сама концепция CI/CD и методология DevOps, к которой она относится, является сейчас крайне популярной и эффективной организацией создания и обновления наших продуктов. Ты найдешь ей применение практически на любом проекте. - -#### Jenkins - -Дженкинс — один из наиболее популярных серверов непрерывной интеграции. Что его делает таким популярным? Во-первых, он бесплатный и опенсорсный. Во-вторых, он **чрезвычайно** расширяемый благодаря сотням различных плагинов и библиотек. Не нашел нужную? Всегда можно запилить свою, ведь Jenkins написан на нашей любимой Java. Настройку наших конвейеров можно производить прямо на Groovy, что предоставляет нам практически неограниченные возможности. - -Из минусов можно отметить откровенно устаревший интерфейс, и понимание, что если что-то пошло не так, в поддержку не напишешь, придется ковыряться самому. Следствие бесплатности, увы. - -Однако сделать свои первые шаги и запустить первые конвейеры довольно легко. Просто следуй официальному [гайду](https://www.jenkins.io/doc/pipeline/tour/getting-started/) и очень скоро твоё приложение научится тестировать и собирать само себя. Ну не чудо ли? \ No newline at end of file diff --git a/docs/containers.md b/docs/containers.md deleted file mode 100644 index 43bd64d..0000000 --- a/docs/containers.md +++ /dev/null @@ -1,28 +0,0 @@ -### Контейнеры - -В смутные времена, когда возникала торжественная необходимость задеплоить приложение на прод, подготовить рабочее окружение для разработчика или просто прогнать тесты на тестовом стенде, приходилось всё это делать ручками. Ты наверняка сталкивался с этим в повседневной жизни: хочешь установить программу, а ей нужен, например, установленный .NET. А ему тоже что-то нужно. И так мы проходим иногда весьма длинную цепочку пока, наконец, не получаем установленную и возможно даже работающую программу. - -А что, если нам нужно переустановить систему? А что, если нужно это сделать на другой ОС? Со всем этим нам поможет технология упаковки приложений в контейнеры. Контейнеры позволяют нам инкапуслировать всю среду, которая необходима для работы нашей программы, внутри черного ящика. Это значит, что сама основная машина не будет замусориваться бесконечными библиотеками и доп. софтом, всё это будет аккуратно упаковано и не будет никому мешать. Удалил контейнер и вместе с ним уедет в небытие вся его обвязка. Никаких больше проблем с конфликтом версий у разного ПО. Счастье для всех, даром и никто не уйдет обиженным. - -Исторически, у джавистов ещё в бородатые времена были сервлеты и контейнеры сервлетов, которые примерно про это, но не совсем. Однако, у всех остальных такого счастья не было и они придумали свои решения этой проблемы. Из тех, что наиболее на слуху, стоит отметить Docker и Kubernetes. - -#### Docker - -Docker, если по умному, — система по автоматизации и управлению нашими контейнерами. Мы ей даем контейнер, а она его запускает, настраивает и подготавливает к работе. Суть самих контейнеров простая как топор: мы описываем, в специальном формате, что нужно для нашего приложения (ОС, библиотеки и прочее). Весь **минимальный** набор, необходимый для корректной работы нашего приложения. А потом запекаем это как слоеный пирог. Собрал ты контейнер, у которого в основе Ubuntu и радуешься жизни, всё работает. А потом захотел стать модным и заменить убунту на alpine, поменял пару строк в своем файле и снова радуешься жизни. Docker хорош там, где нужно тестовое окружение или окружение для разработчика. - -Помни, что готовить докер в продуктиве гораздо сложнее, так как сразу возникает куча вопросов, например, по поводу производительности и безопасности. Для твоих учебных проектов это некритично, но в случае чего-то серьезного, лучше положиться на SRE-инженера / системного администратора. - -По учебным материалам обрати внимание на: - -- Jeff Nickolof. Docker in Action. Серия «in Action» обычно довольно качественная сжатая (но не чересчур), по самым разным темам. Докер не исключение, если хочешь быстро получить базовые знания, данная книга тебе поможет; -- Официальная документация. Куда уж без документации. Написана хорошо, много полезных примеров и гайдов, не стесняйся туда почаще заглядывать. - -После того как ознакомишься с учебными материалами, попробуй упаковать с помощью докера любое своё приложение и задеплоить, например, на Heroku. Гайд по деплою докер-образов в Heroku, можно найти [здесь](https://devcenter.heroku.com/categories/deploying-with-docker). - -#### Kubernetes - -Один контейнер — это хорошо, это надежно. Но что, если мы поддались волне хайпа и теперь у нас из всех щелей лезут микросервисы? Что, если контейнеров у нас десятки, если не сотни? Как управлять всем этим зоопарком и не сойти с ума? Здесь к нам на помощь придет оркестратор Kubernetes или просто кубер. По самому термину «оркестратор» можно догадаться, что его задача состоит в управлении и контроле за нашим многочисленным зоопарком контейнеров. Он позволяет нам их запускать, заменять на другие, следить за их состоянием, автоматически перезапускать, если кто-то упал и даже автоматически масштабироваться в зависимости от текущей нагрузки. - -К сожалению, с большой силой приходит большая головная боль, поэтому обычно с кубером работает специальный человек — SRE-инженер. SRE это такой умный человек, который следует философии DevOps. Если есть желание, можешь ознакомиться с бесплатной [книгой](https://sre.google/sre-book/table-of-contents/) от Google, где описывается их виденье данной профессии. - -На начальном этапе тебе достаточно будет знать, что кубер существует, что он классный и его очень трудно готовить без соответствующего опыта. \ No newline at end of file diff --git a/docs/eventually.md b/docs/eventually.md deleted file mode 100644 index 1bd756d..0000000 --- a/docs/eventually.md +++ /dev/null @@ -1,7 +0,0 @@ -### Напутствие - -Если ты смог осилить все перечисленные выше темы, можешь собой гордиться (впрочем, гордиться собой можешь при любом удобном случае). В руководстве мы намеренно не расписывали каждый аспект в мельчайших деталях. Его цель — создать для тебя красную нить, которой ты можешь следовать активно смотря по сторонам. Есть ещё десятки важных и интересных тем, с которыми ты обязательно столкнешься. Выбрав карьеру разработчика, ты обречен учиться до конца своей карьеры, так что постарайся расслабиться и получать от этого удовольствие. У тебя обязательно получится! - -### Собеседования - -Если ты считаешь, что уже готов к официальному трудоустройству, то советуем обратить внимание на данный [Ресурс](https://github.com/enhorse/java-interview). Полагаем, он очень поможет тебе в данном нелегком деле. \ No newline at end of file diff --git a/docs/hello-new-world.md b/docs/hello-new-world.md deleted file mode 100644 index fec09d0..0000000 --- a/docs/hello-new-world.md +++ /dev/null @@ -1,86 +0,0 @@ -#### Так держать - -Если ты добрался до этого пункта, мы мысленно пожимаем тебе руку. Осилить такое количество материала и не сдаться — достойно уважения. Но наше путешествие продолжается. Имей в виду, что если Core ты должен знать назубок, то знание всего ниже перечисленного может варьироваться от базового до нормального. Полностью прокачаться можно, увы, только на реальной работе. - -#### Web-подготовка - -Как ни странно, для того чтобы стать хорошим web-разработчиком, необходимо хорошо разбираться в этой самой паутине. И хотя базу обычно дают в университете, убедись, что ты помнишь/знаешь, что такое JSON, чем RESTful API отличается от SOAP, какие бывают HTTP-методы и прочие базовые штуки. Дальше по тексту подразумеваем, что ты не впадешь в ступор от слова "endpoint". - -#### Системы сборки - -Современные приложения редко состоят из парочки классов которые запускаются из среды разработки. Работа с зависимостями твоего проекта, его сборка/упаковка, всё это ответственность систем сборки. Они берут на себя нудную и иногда тяжелую работу, чтобы твой проект на развалился под грузом [JAR hell](https://dzone.com/articles/what-is-jar-hell). На данный момент, для Java есть две наиболее популярных системы сборки: - -1. [Gradle](https://gradle.org/). Модно, молодежно, инкрементальная компиляция, описание билд-файла на Groovy или Kotlin DSL. Быстрый старт [здесь](https://docs.gradle.org/current/samples/sample_building_java_applications.html). -2. [Maven](https://maven.apache.org/). Почти нестареющая классика. Описание билда файла на XML, есть множество плагинов на любой вкус, расширяющих стандартную функциональность. Быстрый старт [здесь](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html). - -Попробуй оба варианта, останься на том который тебе больше нравится. Явного фаворита среди них нет, Gradle часто ругают за сложность настройки, Maven за медлительность и многословность. На рынке они распределены почти 50/50, так что смотри сам. Мы советуем Maven, так как новичку зачастую проще работать именно с ним. С этого момента **все** твои проекты должны собираться только с использованием выбранной тобой системой сборки. Они используются в любом реальном проекте, и ты должен уметь такие проекты открывать, дорабатывать и собирать. - -#### Тестирование - -Ты можешь быть уверенным в качестве своего кода, но ещё больше уверенности тебе даст покрытие своего кода тестами. Тестирование это отдельная крупная тема для разговора. Их бывает много разных видов, разной степени полезности с использованием разных инструментов. Мы советуем начать с модульного (unit) тестирования. Наиболее популярным фреймворком для unit тестирования является JUnit. Начать своё погружение в этот увлекательный мир ты можешь - -- со сборника статей Baeldung [здесь](https://www.baeldung.com/junit); -- с официальных [гайдов](https://junit.org/junit5/docs/current/user-guide/) JUnit. - -#### Логирование - -Чем крупнее твоё приложение, тем больше возникает необходимость понимать, что за процессы в нем происходят. Отладка возникающих ошибок, сбор статистики и многое другое практически невозможно без наличия логов. С системами логирования в Java всё очень плохо. Их много, у них разный подход к конфигурации, а ещё они могут связываться друг с другом в забавных франкенштейнов. Из наиболее популярного, обрати внимание на: - -- Logback; -- Log4j2; -- JBoss logging. - -Проще всего будет настроить SLF4J Simple по этому [мануалу](http://www.slf4j.org/manual.html). Сам SLF4J это фасад для движков логирования, вроде тех, что мы перечислили выше, но в нем есть возможность подключить небольшой встроенный движок, который отлично закроет твои начальные потребности. И помни, с этого момента в твоём коде не должно быть ни одного ```System.out.println```, только взрослое логирование. - -#### SQL - -Современный web-мир невозможен без данных, а где данные, там и базы данных. Тебе нужно понимать синтаксис SQL и уметь писать на нем запросы. В этом тебе поможет: - -1. [Туториал](https://www.w3schools.com/sql/) от W3Schools; -2. Книга Алана Бьюли «Изучаем SQL»; -3. Прорешивание задачек на [SQL-EX](https://www.sql-ex.ru/learn_exercises.php); -4. Если у тебя есть доступ к HyperSkill, пройди раздел «Databases and SQL» вот [тут;](https://hyperskill.org/knowledge-map/520) -5. Интерактивный [тренажер](https://stepik.org/course/63054/promo) по SQL на Stepik, ориентированный на практические задачи с минимальной подачей теории. - -Становится джедаем запросов не надо, но у тебя должно сложиться понимание как ты можешь вертеть данные на своей будущей БД. - -#### Базы данных - -После того как ты овладел SQL, самое время подключить к своему приложению настоящую базу данных. Систем управления базой данных великое множество, на начальном этапе обрати внимание на: - -1. PostgreSQL/MySQL — классические реляционные СУБД; -2. H2 — легковесная in-memory СУБД, хорошо подойдет для твоих небольших проектов; -3. MongoDB — популярная NoSQL СУБД - -Читать многотомные руководства на начальном пути обучения по ним не потребуется. Для начала тебе будет достаточно знать как установить СУБД и как заглянуть внутрь табличек. - -##### JDBC - -Итак, у тебя появилась база данных, теперь ты хочешь трогать её данные прямо из своего уютного кода. Тут на помощь придёт добрый дедушка JDBC. JDBC — это такое относительно низкоуровневое API (довольно старое, но супернадежное), которое предоставляет тебе возможность работать с твоей базой данной прямо из кода. Открываешь соединения, пишешь ручками запросы, отправляешь запрос на исполнение, получаешь выборку с результатами. Получается много кода, куча лапши `try-catch`, зато весьма производительно и гибко. В современном мире люди обычно пользуются инструментами более высокого уровня типа Spring Data, но не стоит забывать наши корни. Поэтому ознакомься на досуге с бесплатным руководством Oracle: [JDBC Basics](https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html) - -#### ORM - -Если ты ещё не задумывался о философских вопросах, то сейчас самое время. Вот живут у тебя таблицы в базе данных, связанные между собой в забавные клубки, и в ус не дуют. И с другой стороны баррикад, ты разработчик с горящими глазами и ворохом Java классов в твоем проекте. И хочешь ты, чтобы написал ты SQL-запрос и получил в ответ набор `List`, а не JDBC-выборку, обрабатывая которую руками, приходится создавать объекты и кастовать типы направо и налево как заправский колдун. - -Такие страдания испытал не ты первый, поэтому умные люди собрались и придумали концепцию ORM. Основной смысл ORM в том, чтобы взять на себя тяжелую работу по преобразованию твоих Java-типов в типы базы данных и обратно. Ты как разработчик аннотируешь свои классы оставляя подсказки для фреймворка какие типы ты хочешь получить, а потом просто пользуешься обычными методами. Написал `save(ListWithMyObjects)`, а он сам как по волшебству, превратился в SQL-запрос и обновил данные. - -Звучит слишком хорошо, чтобы быть правдой, не так ли? Так и есть. Правильная готовка ORM — это настоящая головная боль и балансирование на острие ножа, но тебе придется к этому прикоснуться. - -##### Hibernate - -Он же просто хибер. Самый популярный Java-фреймворк, предназначенный для решения ORM задач. Море возможностей, море подводных камней, море страданий. Профессионально его готовить мало кто умеет, но приобщиться надо. Материалов по нему великое множество, но обрати внимание на эти: - -- Один из самых известных Hibernate-профессионалов, Vlad Mihalcea, ведет уютный [сайтик](https://vladmihalcea.com/tutorials/hibernate/) на котором содержатся десятки полезных статей, ответов на вопросы и обзоры подводных камней. Подпишись, читай, приобщайся. Когда у тебя на проекте выстрелит проблема по хиберу, Влад может прийти на помощь; -- Бауэр, Кинг, Грегори. Java Persistence API и Hibernate. Одновременно является и справочником и руководством. Написана тяжело, читается тяжело, но достаточно объемно покрывает необходимые темы. Читать, возможно, придется в несколько заходов, но лучше осилить; -- Официальная [документация](https://docs.jboss.org/hibernate/orm/5.5/userguide/html_single/Hibernate_User_Guide.html#preface). Написано хорошо, в меру разжевано, сопровождается примерами. Целиком читать необязательно, но периодически заглядывать полезно. - -### Конференции - -Java-конференции — это такие партийные съезды всех пролетариев джавистов. Много докладов о том, как наши микросервисы бороздят просторы облаков, разбор кишочков популярных фреймворков и многое другое. - -Самое ценное в конференциях — это обмен опытом со своими братьями по цеху. Идеальное место, чтобы устраивать срачи с популярными Java-персоналиями, узнавать, чем сейчас дышат, и держать нос по ветру. В 2021 году всё это ушло в онлайн, что несколько сбивает настрой, но по-прежнему насыщенно хорошими докладами. Стоит отметить две наиболее популярные в наших краях конференции: - -- Joker; -- JPoint. - -Два брата акробата, первый традиционно проходит в Питере, второй — в Москве. Доклады часто пересекаются, но при желании можно спокойно ходить на обе конференции, благо они разнесены по сезонам. Видосы с прошлых сезонов стали открывать бесплатно всем желающим, к чему обязательно стоит приобщиться на [ютубе](https://www.youtube.com/c/JUGru/playlists). \ No newline at end of file diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index ea10b0e..0000000 --- a/docs/index.md +++ /dev/null @@ -1,50 +0,0 @@ - -??? warning "Дисклеймер" - - - *в руководстве рассматривается развитие Java backend-разработчика* - - *руководство написано исходя из того, что читатель не полный новичок в CS, и у него есть базовые знания* - - *руководство намеренно написано в неформальном стиле, в формате монолога. Все предлагаемые изменения должны соответствовать данному стилю* - - *целью руководства не является составление полного списка всех возможных курсов, книг или обучающих материалов. Состав должен представлять собой краткий, но не кратчайший список из максимально полезных обучающих материалов, советов и рекомендаций* - - *Использование изображений в руководстве разрешено только в крайних случаях. Оставьте картинки профильным статьям*. - -## Благодарности - -Отдельное спасибо Вите за все запятые, дефисы и тире. -Особая признательность всем тем замечательным людям, которые помогали советами, критикой и собственными дополнениями материала. Вы лучшие. - -## Почему Java? - -Первый вопрос который приходит в голову, когда выбираешь язык. На то, чтобы выбрать Java есть целый ряд причин: - -1. **Огромная база кода.** Если ты хочешь что-то сделать, с большой вероятностью для этого уже есть библиотека; -2. **Отличная документация.** Подробнейшее описание API языка (Javadoc), дотошно описанная спецификация самого языка (JLS) и спецификация модели памяти (JMM) добавляют уверенности, что если у тебя появился вопрос: «Как это работает?» или «Почему это работает именно так?» — на него получится найти ответ; -3. **Гибкость.** Java — это не только язык, но и JVM платформа. С использованием этой платформы написаны, например, Kotlin (привет, Android), Scala (привет, ФинТех) и Clojure. Всё это позволяет нам, оседлав Java и потратив некоторое время, дрейфовать в сторону той предметной области, которая наиболее интересна; -4. **Сообщество.** Если у тебя появился вопрос, на него, скорее всего, ответили ещё в 2010. Если у тебя появилась гениальная идея проекта, на гитхабе, вероятно, уже есть десяток различных реализаций. Новичкам всегда радостно помогут советами прочитать, наконец, Javadoc; -5. **Карьерные возможности.** Java повсюду: backend, mobile, desktop (нет, он не умер). Без работы точно не останешься. - -Есть и ворох недостатков: - -1. **Многословность**. Java многословна. То, что сейчас в Python занимает одну строку, в Java займёт 10. Не такой большой минус в современном мире, где есть Intellij и автодополнение, плюс в язык добавляются модные фичи вроде `var`. К тому же в языках вроде Kotlin или Scala можно писать достаточно компактный код; -2. **Обилие устаревшего кода.** Java появилась в 1995 году, и с тех пор было написано много кода. Чертовски много. Всё это нужно поддерживать, развивать и лелеять, так как бизнес очень не любит тратить деньги. Например, Java 8 вышла в 2014 году, а согласно [опросу](https://www.jetbrains.com/ru-ru/lp/devecosystem-2020/java/) JetBrains в 2020 году, её доля составляет 75%! Так что, залетев на работу, с высокой долей вероятности ты будешь писать на старой версии, в которой нет современного сахара, увы; -3. **Ограниченная сфера применения.** В современном мире Java по настоящему блистает в качестве backend-языка. Да, ты можешь писать mobile, но там развивается Kotlin. Да, ты можешь писать desktop, но люди выбирают Electron. Локомотив хайпа находится в вебе, поэтому мы садимся именно в него. - -## Подготовка - -Перед обучением тебе понадобится: - -- **Установка Java**. Всегда бери самую свежую версию. Даже если на работе будешь писать на восьмерке, стоит держать руку на пульсе и быть в курсе всех современных Java фишек. - -- **Среда разработки.** Используй intellij IDEA Community, скажешь спасибо потом. Из альтернатив есть: - - Eclipse. Старый, неудобный, но ещё относительно популярный в некоторых местах; - - VS Code. Это не IDE, но хороший редактор кода, который обвешивают кучей плагинов. -- **Знакомство с Git**. Гит — система контроля версий. Если ты когда-нибудь слышал слова "коммиты", "ветки" и "PR" — это оно. Для начала хватит простого [гайда](https://rogerdudler.github.io/git-guide/index.ru.html), чтобы понимать базовые термины. Потом стоит почитать документацию к своей IDE. IDEA, например, поддерживает работу с гит из коробки. -- **Профиль на GitHub**. Гитхаб — это такая социальная сеть для разработчиков. Ставь лайки библиотекам, которые используешь, и изучай тренды. Не стесняйся выкладывать туда все свои мелкие проекты, только не забывай про Readme. Потом будешь рад, когда понадобится найти проект, в котором ты уже делал работающие аспекты или работу с авторизацией. -- **Ведение заметок.** Очень важный пункт. Тебе предстоит поглощать огромное количество информации, большую часть которой ты забудешь уже на следующий день. Чтобы помочь своему мозгу, начни вести заметки по методике ZettelKasten, например, в notion.io https://habr.com/ru/post/509756/. -- **Будь в курсе**. Java активно развивается. Чтобы не остаться в стороне от важных новостей, ты должен их читать. Начни с подписки на ежемесячную подборку [Java Annotated](https://blog.jetbrains.com/idea/tag/java-annotated/) и подписывайся на интересных авторов. - - -## Обучение - -Если хорошенько поискать, можно найти десятки статей о том, какие книги лучше читать и какие курсы лучше проходить. Заботливые люди рисуют дорожные карты и, казалось бы, просто бери и следуй гайдам. Но проблема в том, что их слишком много! Современный мир backend-разработки требует от тебя разбираться в куче вещей, и простой человек Василий, попробовав во всём этом разобраться, очень скоро почувствует беспомощность, грусть и отчаяние. - -Однако, всё не так страшно. Учиться придется очень много, к счастью, мы отобрали только самые лучшие материалы. \ No newline at end of file diff --git a/docs/java-core-advanced.md b/docs/java-core-advanced.md deleted file mode 100644 index 320885b..0000000 --- a/docs/java-core-advanced.md +++ /dev/null @@ -1,61 +0,0 @@ -### Java Core Advanced - -Итак, ты уже уверенно владеешь базовыми средствами языка. Без проблем решаешь базовые задачи, знаешь состав Collections Framework, понимаешь отличие HashMap от TreeMap и даже знаешь что есть стримы и есть другие стримы. Самое время нырнуть в Core ещё глубже. - -#### Книги - -##### Рауль Урма, Марио Фуско, Алан Майкрофт. «Современный язык Java» - -Выход Java 8 изменил экосистему Java навсегда. Stream API, default методы, лямбды — без этих вещей невозможно представить современную Java-разработку. В этой книге подробно описаны все киллер фичи Java 8. Некоторые моменты, вроде конкурентности могут быть непонятными, но обязательно вернись к ним позже. - -*Обрати внимание, в русском переводе есть проблема с перепутанными примерами кода в первых главах.* - -##### Брайан Гетц. «Java Concurrency на практике» - -Современный web — это высокие нагрузки, тысячи клиентов, и терабайты данных. Чтобы твоё приложение могло утилизировать ресурсы сервера по максимуму, ты должен стать джедаем конкурентного/параллельного программирования. Эта книга must-read абсолютно для всех java-разработчиков. Несмотря на то, что она написана для Java 5, все её советы актуальны и по сей день. Может читаться тяжело, но прочитать её ты обязан. - -##### Адитья Бхаргава. «Грокаем алогритмы» - -По поводу того, когда лучше знакомиться с алгоритмами, ведутся бесконечные диспуты. Наше мнение — каждый решает сам для себя. Но конкретно эту книгу лучше прочитать пораньше. Она в интересной форме расскажет про базовые термины вроде сложности алгоритмов, познакомит тебя с некоторыми видами сортировок и прочими интересными штуками. Звучит сложно, но поверь, это именно та книга, которая может вызвать у тебя любовь к алгоритмам. - -##### (Опционально) Роберт Лафоре. «Структуры данных и алгоритмы Java» - -Многие критикуют данную книгу из-за странного стиля кода и занудной подачи материала, но если вдруг тебе захотелось копнуть алгоритмы чуть поглубже, можешь попробовать. - -##### (Опционально) Николай Палрог. «Система модулей Java» - -Одной из ключевых фишек Java 9, стала новая система модулей, которая позволяет получить абстракцию над привычными пакетами и получить более сильную инкапсуляцию классов. Её весьма неохотно используют (в основном из-за лени и легаси), но умение готовить модули будет приятным бонусом к твоим навыкам и пригодится, если вдруг захочешь пройти официальную сертификацию Oracle. - -##### (Опционально) Кен Коузен. «Современный Java. Рецепты программирования» - -Практически всё тоже, что в книге Урмы, только как сборник кратких рецептов: как использовать коллекторы, компараторы, потоки и прочие «новинки» Java 8. Всё это с небольшими понятными примерами. Книга весьма хороша как краткая выжимка или handbook. - -#### Видео - -##### Jakob Jenkov, [Java Concurrency And Multithreading](https://www.youtube.com/playlist?list=PLL8woMHwr36EDxjUoCzboZjedsnhLP1j4) - -Хорошее дополнение к книге Брайана Гетца по многопоточности. Некоторые темы пересекаются, некоторые темы затрагивают внутреннее устройство языка/JVM вроде модели памяти. Одних этих видео не хватит чтобы полностью разобраться с многопоточностью, но они отлично помогут укрепить или дополнить твоё представление об этой страшной и сложной вещи. - -#### Паттерны - -Многие проблемы, которые возникают при разработке приложений появляются из-за ошибок допущенных при проектировании. Умные люди выявили повторяющиеся из проекта в проект решения и закономерности (паттерны) и сделали их классификацию. Почему важно их знать? Паттерны описывают типичные способы решения часто встречающихся проблем при проектировании программ, что позволяет тебе не изобретать велосипед, а твоим коллегам гораздо быстрее понимать, что происходит в коде. Однако помни, что использование популярных паттернов при решении каждой задачи является скорее плохой практикой чем хорошей. Всё хорошо в меру, и с опытом ты поймешь ту тонкую грань, когда паттерны реально сделают архитектуру твоего кода лучше, а когда только навредят. - -Паттернов много, хороших и разных, но зубрить их не надо. Пробегись по списку, посмотри на те которые тебя заинтересуют. На текущем этапе твоя задача оставить якорь в памяти, что такие вещи существуют. - - Из ресурсов по паттернам можно выделить: - -1. [Refactoring guru](https://refactoring.guru/ru/design-patterns). Модно, молодежно, доступный язык. -2. **Design Patterns: Elements of Reusable Object-Oriented Software (GoF)** — сухой академический оригинал, сможешь осилить — хорошо, не сможешь — используй другие источники. - -#### Упражнения - -Подойдут всё те же сайты которые были на прошлом этапе, но уже с более высокой сложностью. Старайся решать задачи с использованием «современных» функциональных фишек Java: Stream API и лямбды. - -#### Подведение итогов Advanced Core - -Помнишь те карточки которые ты поленился сделать на прошлом этапе? Самое время добавить новые: - -1. [Потоки ввода-вывода в Java](https://github.com/enhorse/java-interview#Потоки-вводавывода-в-java) -2. [Сериализация](https://github.com/enhorse/java-interview#Сериализация) -3. [Многопоточность](https://github.com/enhorse/java-interview#Многопоточность) -4. [Шаблоны проектирования](https://github.com/enhorse/java-interview#Шаблоны-проектирования) \ No newline at end of file diff --git a/docs/java-core.md b/docs/java-core.md deleted file mode 100644 index 1c3b12c..0000000 --- a/docs/java-core.md +++ /dev/null @@ -1,93 +0,0 @@ -### Java Core Base - -Java Core — это основа понимания языка и его возможностях, работающих «из коробки». Так как это фундамент, подойти к его формированию стоит очень ответственно, чтобы не страдать позже и не пытаться изобрести велосипед. Не стоит пытаться экономить время, хитрить и пропускать «неинтересные» куски. Поверь, уверенная база тебе воздастся в будущем, ибо на собеседованиях гоняют в основном по Core. - -#### Курсы - -**Помни, что ни один из курсов не дает полную базу. Используй их как дополнение к книгам.** - -##### Туториалы от Oracle - -Oracle является разработчиком языка и предоставляет собственные обучающие [материалы](https://docs.oracle.com/javase/tutorial/) довольно неплохого качества. Ещё и бесплатно. Из минусов: рассматривается java 8, некоторые темы рассмотрены очень сжато. Но всё равно обязательно загляни, там много интересного. - -##### JavaRush - -В странах СНГ и Украине весьма популярен великий и ужасный JavaRush. Интернет пестрит историями успеха, как простой слесарь Григорий стал успешным и теперь зарабатывает 300кк/наносек. Тысячи практических задач! Сотни тысяч пользователей! За какие-то смешные деньги ты сможешь полностью изменить свою жизнь! - -Так вот, ни в коем случае на это не ведись. JavaRush очень сильно страдает отрывочной подачей теории, из-за чего люди застревают даже на простых задачках. Задумайся, при создании технической книги она проходит множество стадий вычитки и рецензирования. На JavaRush таким, понятное дело, никто не занимается. Не трать зря время, деньги и нервы, и представь, что такого сайта просто не существует. Даже если ты знаешь человека, который знает человека, который сказал, что там всё круто. - -##### Stepik - -Агрегатор курсов от различных авторов разной степени качества. Начать можно с [Java. Базовый курс](https://stepik.org/course/187/promo). - -##### HyperSkill (JetBrains Academy) - -Совместный проект Stepik и JetBrains. Содержит треки (курсы) по разным языкам: Python, Java, Kotlin, JS. - -Обучение ведется в разрезе мини-проектов: выбираете проект определенной сложности (от консольных крестиков-ноликов до интеграций со Spotify и веб-приложений), который разбивается на несколько стадий. По каждой стадии дается набор теории, по теории проходятся мелкие задачки. Кто-то скажет, что весьма смахивает на JavaRush, но отличие в качестве материала. Часть берется со Stepik, часть создают сами с модерированием и предварительной бетой. - -Тем у них ОЧЕНЬ много, от Java Core до математики и алгоритмов. Core описан очень хорошо, остальные похрамывают. - -Материал полностью на «русском английском», так что читать его несложно, но иногда непонятно, что пытался сказать автор. Платный, с триальным доступом. - -Из минусов: очень задумчивый интерфейс, некоторые проекты крайне скудны на описание, некоторые тесты приходится «хакать» из-за непонятной логики проверки. В остальном — идеальный вариант для механического прорешивания простых задачек. - -##### YouTube - -Тысячи индусов и сочувствующих готовы прийти на помощь. Заманивают бесплатностью и объемом материалов, но помни что за актуальность и адекватность материала отвечает только сам автор. Начни с бесплатного курса Тагира Валеева, весна 2020. [Туть](https://www.youtube.com/playlist?list=PLlb7e2G7aSpRZSRZxANkvpYC82BXUzCTY). -Есть более свежая версия [курса](https://www.youtube.com/watch?v=QGHGR0xEcFA&list=PLlb7e2G7aSpTCB2OxGlezpgOXwq4xer7Z), вышедшая в 2022 году. Каких-то сильных отличий нет, можешь смотреть любой вариант. - -Тагир — широко известный во всем мире джавист, работает в JetBrains, является Java чемпионом (да, это реальное звание). В курсе погружается довольно углубленно внутрь устройства языка, может тяжеловато заходить, поэтому параллельно можешь шлифовать другими материалами. - -##### Udemy - -Обрати внимание на курс от Tim Buchalka, вот [здесь](https://www.udemy.com/course/java-the-complete-java-developer-course/). Он очень хорошо и подробно разжевывает Java в серии небольших видео, общей длительностью около 80 часов. Даже упражнения после тем есть. Говорит с австралийским акцентом, но есть английские субтитры, так что рекомендую. Эдакая видеоверсия Шилдта по подробности материала. На цены в 10к+ рублей не смотри, на Udemy постоянно идут распродажи со скидками в 80-90%. Так что если видишь полный прайс, просто добавь курс в вишлист и подожди пару недель. - -#### Книги - -Лучше всего читать на английском, но можно и переводы. Помни, что переводы зачастую являются устаревшими и ВНЕЗАПНО труднее читаются из-за того, что одни и те же термины в разных книгах могут переводить по разному. - -##### Герберт Шилдт, «Java. Полное руководство» и «Java. Руководство для начинающих» - -«Полное руководство» — это увесистый том на 1.5к страниц, который с трудом помещается в руках. Бери его если у тебя есть безответная любовь к справочникам или если ты любишь максимально дотошное описание API языка. Если нет, бери «Руководство для начинающих», которое в два раза короче и наслаждайся подробным описанием языка без километровых описаний API. Имей в виду, что в руководстве для начинающих не освещены некоторые «продвинутые» темы, так что сверься с содержанием обеих книг. - -##### Джошуа Блох, «Java. Эффективное программирование» - -Книга которую обязательно стоит прочитать после Хорстманна или Шилдта, и регулярно перечитывать. Блох — один из создателей языка, в своей книге он описал best practice: правильное написание equals и hashCode, как правильно готовить generics, почему лямбды это хорошо и многое другое. Написано доступно, читается легко. - -##### (Опционально) Кей Хорстманн, «Java. Библиотека профессионала, том 1. Основы» - -Хорстманн пишет более сухо и сжато чем Шилдт, некоторые моменты описаны на «низком» уровне (объяснения того, как язык устроен внутри). Пестрит вставками со сравнениями с С++. Твой выбор, если уже есть/был опыт других языков и нет потребности в разжевывании материала. Во втором томе описываются продвинутые темы вроде разбора XML, интернационализации и веб-служб. Глянь содержание и имей в виду, что там есть. - -##### (Опционально) Кэти Сьерра и Берт Бейтс, «Изучаем Java (Head First Java)» - -Если ты начал читать Шилдта и всё равно чувствуешь, что ничего не понимаешь, попробуй эту книгу. Написано максимально простым языком, много картинок. После её прочтения в голове должна сложиться простая мозаика, что позволит вернуться к более «взрослым» книгам. - -#### Упражнения - -Теория — это замечательно, но нужно постоянно писать код. Лучшие места для этого: - -1. Задачки и проекты HyperSkill. Много хороших и разных, но платно; -2. [CodeWars](https://www.codewars.com/). Ориентируйся на уровень сложности 8-7kyu; -3. [CodingBat](https://codingbat.com/). Элементарные задачки на уровне первого курса университета; -4. [HackerRank](https://www.hackerrank.com/). Выбираешь Java, выбираешь Easy, прорешиваешь. - -#### Что делать, если возникли вопросы? - -Не знаешь как разбить строку на символы? Не помнишь как прочитать текст из файла? Забыл как быстро можно отсортировать массив? Со всем этим помогут следующие ресурсы: - -1. [Javadoc](https://docs.oracle.com/en/java/javase/16/docs/api/index.html). Подробное описание API языка. Хочешь сделать что-то со строкой? Загляни в Javadoc класса String. Хочешь сделать что-то с массивом? Загляни в javadoc класса Arrays. Javadoc — это первое место, куда ты должен идти при любом вопросе. Не знаешь с какого класса начать поиск? Просто вбей в поиск что-то вроде `Java split word javadoc` и с высокой долей вероятности первые строчки будут вести на нужный класс; -2. [StackOverflow](https://stackoverflow.com/). Самый популярный ресурс для копипаста кода и ответов на твои вопросы. Являются ли строки в Java иммутабельными? Что такое знак джокера? Что такое PECS? На всё это ты сможешь найти ответ благодаря сообществу StackOverflow, вбив в поиск что-то вроде`Java pecs stackoverflow` -3. [Baeldung](https://www.baeldung.com/). Сборник статей и рецептов на все случаи жизни. Что нового в Java 16? Какими способами можно сортировать List? Чем отличается ArrayList от LinkedList? Как применять Jackson? Скорее всего, про это уже есть статьи на baeldung. -4. [Telegram](https://t.me/javastart). Если твой поиск не увенчался успехом, и ты готов опустить руки, приходи к живым, русскоговорящим людям и попроси помощи. Тут не решат за тебя твои задачи, но помогут с направлением копания. - -#### Подведение итогов Core - -Итак, ты прошел/посмотрел курсы, прочитал базовые книги и даже решил кучу упражнений. Чувствуешь себя уверенно и даже расправил плечи? Самое время поиграть в карточки. Есть отличный гитхаб [репозиторий](https://github.com/enhorse/java-interview) в котором есть куча популярных вопросов на собеседованиях. Сейчас тебе стоит обратить внимание на: - -1. [ООП](https://github.com/enhorse/java-interview#ООП) -2. [Java Core](https://github.com/enhorse/java-interview#java-core) -3. [Java Collections Framework](https://github.com/enhorse/java-interview#java-collections) -4. [Java 8](https://github.com/enhorse/java-interview#java-8) - -Не ленись занести вопросы в карточки [Anki](https://apps.ankiweb.net/) или распечатать в бумажном виде. Повторяй на регулярной основе, но помни, что твоя задача не заучить их механически, но научиться приходить к ответам логическим путем. Когда придешь на собеседование и будешь трястись от нервов и пить воду шумными глотками, все твои зубрежки вылетят из головы, а понимание материала никуда не денется. \ No newline at end of file diff --git a/docs/quarkus.md b/docs/quarkus.md deleted file mode 100644 index ac4660e..0000000 --- a/docs/quarkus.md +++ /dev/null @@ -1,116 +0,0 @@ -### Почему Quarkus ? - -[Quarkus](https://quarkus.io/) - фреймворк от [RedHat](https://ru.wikipedia.org/wiki/Red_Hat), взгляд на экосистему которого заставляет рассмотреть его в качестве альтернативы таким фреймворкам как Helidon (Oracle), Spring Boot (VMware), Micronaut. -В отличии от остальных фреймворков, перечисленных выше, Quarkus не пошел по пути создания чего-то абсолютно уникального. -Вместо этого, он предлагает использовать уже давно существующую в рамках мира backend web-разработки реализацию спецификации [Jakarta REST (ранее известная как JAX-RS)](https://jakarta.ee/specifications/restful-ws/3.1/jakarta-restful-ws-spec-3.1.html), известной как [Resteasy](https://resteasy.dev/). - В сущности, это означает, что разработчикам не пришлось особенно много усилий прилагать, чтобы уйти от устаревшего формата разработки. -Конечно же, это можно было сделать и с помощью Spring Boot, но количество усилий несоизмеримо. -Типовой микросервис можно перенести c сервлетного JAX-RS на Quarkus даже за 5 минут (конечно же, это средняя температура по больнице). - -#### Quarkus реактивный, даже не сомневайся - -Изначально, как было выше сказано, Quarkus использовал популярную реализацию Jakarta REST. Однако команда разработчиков пошла дальше. Вместе с разработчиками Resteasy был разработан [Resteasy Reactive](https://quarkus.io/guides/resteasy-reactive). -В нем Quarkus использует [Vert.x](https://vertx.io/) - набор библиотек для реализации [реактивных](https://www.reactivemanifesto.org/) приложений. При этом, поддержка всех механизмов и аннотаций спецификации Jakarta REST сохранилась. -Думаю, лучше всего реактивность Quarkus описывают слова из статьи [Quarkus Reactive Architecture](https://quarkus.io/guides/quarkus-reactive-architecture): - -!!! note "Quarkus is reactive" - - Quarkus is reactive. It’s even more than this: Quarkus unifies reactive and imperative programming. You don’t even have to choose: you can implement reactive components and imperative components then combine them inside the very same application. No need to use different stacks, tooling or APIs; Quarkus bridges both worlds. - -Для более четкого представления о том, что здесь написано, было бы здорово прочитать [Quarkus Reactive Architecture](https://quarkus.io/guides/quarkus-reactive-architecture), затем [Using Eclipse Vert.x API from a Quarkus Application](https://quarkus.io/guides/vertx#executing-asynchronous-code-from-a-blocking-thread), и, для более глубокого погружения [Vert.x Reference Guide](https://quarkus.io/guides/vertx-reference). - - -#### Экосистема -##### Документация - -При изучении таких фреймворков как Spring и Quarkus в первую очередь встает вопрос о документации и ее качестве. -В случае Quarkus она не должна оставить изучающего равнодушным. Стоит просто зайти на [страницу](https://quarkus.io/guides/) и наслаждаться. -Там ты найдешь как короткие вводные статьи для новичков о том, как использовать тот или иной фреймворк в рамках Quarkus, так и концепты внутреннего устройства проекта. -Наконец, там присутствуют справочные(Reference Guide) статьи для продолжающих разработчиков. - -#### Утилиты - -Spring имеет такую замечательную утилиту [Spring Initializr](https://start.spring.io/) для генерации и первичной настройки проекта. -В свою очередь, Quarkus предоставляет Web-страницу со схожим функционалом [code.quarkus.io](https://code.quarkus.io/). -Там ты сможешь выбрать: язык разработки, систему сборки, и, также все необходимые для разработки зависимости. - В итоге ты получаешь готовый проект, осталось лишь внедрить свою бизнес-логику. -Также, Quarkus тесно интегрируется с самыми популярными [IDE](https://quarkus.io/guides/ide-tooling), системами сборки [Gradle](https://quarkus.io/guides/gradle-tooling)/[Maven](https://quarkus.io/guides/maven-tooling). Наконец, стоит отметить наличие прекрасного и самодостаточного [CLI](https://quarkus.io/guides/cli-tooling). - - -##### Поддержка технологий -Quarkus старается поддерживать множество популярных технологий. -Для сериализации [используется](https://quarkus.io/guides/rest-json) [Jackson](https://github.com/FasterXML/jackson). -Для логирования поддерживаются следующие API: - - * [JBoss Logging](https://github.com/jboss-logging/jboss-logging) - * JDK java.util.logging (JUL) - * [SLF4J](https://www.slf4j.org/) - * [Apache Commons Logging](https://commons.apache.org/proper/commons-logging/) - * [Apache Log4j 2](https://logging.apache.org/log4j/2.x/) - * [Apache Log4j 1](https://logging.apache.org/log4j/1.2/) - -Не могу не упомянуть про способ логирования, которого мне не достает в любом другом фреймворке: - -```java title="Упрощенное логгирование" -package com.example; - -import io.quarkus.logging.Log; - -class MyService { - public void doSomething() { - Log.info("Simple!"); - } -} -``` - -Подробнее о том, как работает такой способ читай [тут](https://quarkus.io/guides/logging). - -Для подключения к БД адаптированы привычные JDBC драйверы к множеству СУБД, но также предлагается и вариант подключения с помощью [реактивных клиентов](https://quarkus.io/guides/reactive-sql-clients). -Подробнее можно почитать [здесь](https://quarkus.io/guides/datasource). -Если, вдруг, ты соскучился по Hibernate, то [вот](https://quarkus.io/guides/hibernate-orm) и [вот](https://quarkus.io/guides/hibernate-orm-panache). ПоДучи и распишись. - -Выше освещены наиболее важные технологии, которые ты так или иначе встретишь на месте работы. Но, конечно же Quarkus поддерживает множество других. Вряд ли ты обнаружишь, что не хватает чего-то важного (или не очень). -Достигается это не только за счет поддержки Core-команды от RedHat, но и существования Quarkiverse. - - -##### Quarkiverse - -[Quarkiverse Github](http://github.com/quarkiverse) - это место в Github, куда любой разработчик/группа разработчиков может выложить расширение для Quarkus. -Расширения Quarkus, размещенные в организации Quarkiverse, могут быть легко включены в каталог расширений Quarkus, доступный на code.quarkus.io, и в инструменты командной строки Quarkus (такие как mvn quarkus:list-extensions, gradle listExtensions). Но это не только лишь набор репозиториев. Множество расширений пишется по определенному [набору правил](https://hub.quarkiverse.io/) и имеют собственную [документацию](https://docs.quarkiverse.io/index/explore/index.html). Актуальный список расширений ты найдешь [тут](https://quarkus.io/extensions/). Перед использованием расширений можно прочитать [краткое руководство](https://quarkus.io/faq). - - -##### Сообщество -Команда разработчиков Quarkus глубоко заинтересована и открыта к решению проблем. При желании можно задать любой вопрос в [чате](https://quarkusio.zulipchat.com/), в котором сидят разработчики Quarkus и с охотой отвечают на любые вопросы, в том числе вопросы совсем новичков. -Также, ты там встретишь множество реальных пользователей Quarkus, в том числе таких же новичков как ты, некоторые из которых также смогут помочь в решении той или иной проблемы. - - -##### Developer Joy -Отдельно хотелось бы отметить тот факт, что команда разработчиков Quarkus делает акцент на комфорте разработки, используя Quarkus: - -!!! note "Beyond simply working, we’re aiming for Joy." - - Quarkus is not just about being great for writing Web Applications or Micro-Services. - We’re focusing on more than the feature set: we make sure that every feature works well, simply, with little to no configuration, in the most intuitive way possible. - It should be trivial to develop simple things, and easy to develop the more complex ones. - -Прочитай [это](https://quarkus.io/developer-joy/), надеюсь тебе понравится. - -#### Блоги, Книги, Подкасты - -Сообщество Quarkus старается так или иначе популяризировать свой продукт. На главной странице [сайта](https://quarkus.io/) можно найти все необходимые ресурсы для слежения за развитием проекта. [Блог](https://quarkus.io/blog/), [Подкасты](https://quarkus.io/insights/), [Книги](https://quarkus.io/books/) и многое другое. - - -#### How-to старт -Для того, чтобы начать писать код, достаточно зайти на страницу [Get Started](https://quarkus.io/get-started/) и следовать инструкциям. -Здесь тебя научат как написать и запустить простейший микросервис, используя Quarkus. Обязательно обрати внимание на раздел `Next Steps`, там будут ссылки на статьи, -которые подробнее расскажут как писать [REST сервисы](https://quarkus.io/guides/rest-json), в том числе [реактивно](https://quarkus.io/guides/getting-started-reactive). -Также, покажут как упростить разработку в твоей любимой [IDE](https://quarkus.io/guides/ide-tooling) и многое другое. - -#### Истории миграций -В блоге Quarkus можно найти [истории миграции на Quarkus](https://quarkus.io/blog/tag/user-story/). Почитай как-нибудь на досуге. - - -
- ![developerjoy](images/icon-developerjoy.svg){ width="300" } -
Приятного путешествия :)
-
\ No newline at end of file diff --git a/docs/spring-framework.md b/docs/spring-framework.md deleted file mode 100644 index 42f206e..0000000 --- a/docs/spring-framework.md +++ /dev/null @@ -1,67 +0,0 @@ -### Spring - -Spring — это самая популярная веб-экосистема в Java. Состоит из целого набора фреймворков разного назначения: работа с БД, облаками, безопасностью, и многое другое. Да, у него есть менее популярные альтернативы, но с высокой долей вероятности на работе ты столкнешься именно с ним. Так что добро пожаловать в «Весну». - -#### Spring Core - -Как у Java есть свой базовый Core, так есть он и у Spring. Стоит хорошенько разобраться в его составе, чтобы когда ты поднимешься на абстракцию выше, в Spring Boot, он не показался тебе загадочной магией. - -##### Книги - -###### Craig Walls. «Spring in Action 4» - -Обрати внимание **именно на 4-е издание**. Да, мы в курсе, что есть шестое. Да, мы в курсе, что перевод на русский есть только на третье издание. Но в шестом издании нет подробного описания подкапотного устройства и выкинута настройка с помощью XML. Ты можешь подумать: «Какой XML, сейчас везде используют аннотации?», но твой будущий работодатель запиливший систему в мохнатых годах может не разделять твоё прогрессивное мнение. Так что читай 4-е издание и наслаждайся. Книга стоит того. - -##### Курсы - -На Udemy есть хороший инструктор, John Tompson, который шпарит курсы по Spring как автомат. Не обходи его вниманием и загляни [сюда](https://www.udemy.com/course/spring-core/). Рассматривается более старая версия Spring (4), но за 6 часов даётся вполне неплохая база по Spring и затрагивается работа со Spring MVC. - -##### Официальная документация - -Казалось бы, зачем мы явно включили официальную документацию, если с самого начала усвоили, что стоит начинать поиск с неё? Однако со Spring ситуация несколько иная. Его документация ВОСХИТИТЕЛЬНА. Серьезно, эта документация одна из весомых причин, почему Spring так быстро завоевал популярность. Подробнейшие описания концептов Spring, сопровождаемые примерами кода, и многое, многое другое. Начни своё путешествие [отсюда](https://docs.spring.io/spring-framework/docs/current/reference/html/index.html) и поверь, очень многие вопросы у тебя не появятся, если ты внимательно ознакомишься с этими материалами. - -##### YouTube - -Широко известный в узком кругу лиц, Евгений Борисов периодически выступает с докладами, в которых разбирает устройство Spring по кусочкам. Делает он весьма весело, задорно и понятно. Рекомендуем приобщиться к его докладам: - -* [Spring-потрошитель](https://www.youtube.com/watch?v=BmBr5diz8WA); -* [Spring-построитель](https://www.youtube.com/watch?v=rd6wxPzXQvo). - -Несмотря на то, что видео длится 2-4 часа, смотрится оно как отличный сериал. Крайне рекомендуем к просмотру. - -#### Spring Boot - -Spring Boot — это абстракция над абстракциями. Разработчики взяли обычный Spring, полезные библиотеки и упаковали всё это в фреймворк более высокого (по абстракции) уровня. Меньше бойлерплейта и головной боли, больше магии и головной боли. По причине бОльшего удобства и увеличенной скорости разработки, Spring Boot вытесняет классический Spring, так что в своих проектах смело используй именно его. - -##### Курсы - -Помнишь John Tompson? Даже если нет, самое время навернуть его 60-часовой [курс](https://www.udemy.com/course/spring-framework-5-beginner-to-guru/) по Spring Boot. В нем также затрагивается работа со Spring MVC, Spring Data и немножко Hibernate. Объясняет доступно, много примеров, простой английский язык. Полностью стоит своих денег. - -#### Spring Data - -Spring Data это целый набор различных продуктов, объединенных одной целью: упростить разработчику жизнь, предоставив ещё более высокий уровень абстракции для работы с данными. Продуктов этих довольно много (с полным перечнем можешь ознакомиться [здесь](https://spring.io/projects/spring-data)), но на текущем этапе обрати внимание на Spring Data JPA. Если Hibernate — это абстракция над JDBC, то Spring Data — это по большей части абстракция над ORM-фреймворками. Hibernate там включен по умолчанию, но никто не заставляет использовать под капотом именно его. - -Что же за удобные абстракции дает нам данный фреймворк? В первую очередь это репозитории. Возможно ты слышал про [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete). Так вот, Spring позволяет по мановению волшебной палочки добавить к твоим сущностям эти самые CRUD-методы. Здорово, правда? Нам не нужно писать каждый раз стандартные методы, копипастить один и тот же код. За нас это всё делает машина, а мы просто пользуемся удобным API. - -В остальном — это куча других плюшек, о пользе которых сейчас ты вряд ли будешь задумываться. - -Для начала работы со Spring Data JPA тебе будет достаточно твоего опыта с Hibernate и чтения вводной документации от самого Spring. - -#### Spring Web MVC - -Сама MVC — это крайне популярная схема разделения мух от котлет. Модели (данные) отдельно, представление данных отдельно, связующий клей из контроллеров, которые обрабатывают действия пользователей и передают их кому надо отдельно. Удобно, меньше шансов сломать всё к чертям при доработках, народу нравится. - -Конкретно Spring Web MVC помогает нам в реализации проектов с использованием данной схемы, предоставляя всё то, что мы так любим: абстракции, сахар и магию. Ну и например аннотации для разметки контроллеров, удобную настройку реквестов, работу с эндпоинтами и многое другое. - -Чтобы узнать его получше, обратись к старой доброй [документации](https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#spring-web). - -#### Spring Security - -После того, как ты создал своё web-приложение, вероятно, ты захочешь предоставить к нему доступ для пользователей. А где пользователи, там и логины и пароли. А где пароли, там и безопасность, личные данные, кросс-авторизации и злобные хакеры. Чтобы не страдать от головной боли, для нас создали фреймворк Spring Security, который дает нам удобный API и абстракции (в который раз), чтобы сделать наше приложение безопасным и надежным. Более подробно можно ознакомиться: - -- Приобщившись к официальной [документации](https://spring.io/projects/spring-security); -- Прочитав отличную книгу «Spring Security in Action». - -#### Упражнения - -К сожалению набора задачек по Spring в классическом виде не существует. Но тут тебе может помочь HyperSkill, в котором есть учебные web-проекты; примеры проектов от самого Spring, например знаменитый PetClinic и реализация собственных пет-проектов. Давно хотел собственного телеграм-бота? Самое время начать его пилить с помощью Spring. \ No newline at end of file diff --git a/eventually/index.html b/eventually/index.html new file mode 100644 index 0000000..578e16d --- /dev/null +++ b/eventually/index.html @@ -0,0 +1,735 @@ + + + + + + + + + + + + + + + + + + + + Что дальше ? - Руководство по вкатыванию в Backend на Java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + +

Что дальше ?

+ +

Напутствие

+

Если ты смог осилить все перечисленные выше темы, можешь собой гордиться (впрочем, гордиться собой можешь при любом удобном случае). В руководстве мы намеренно не расписывали каждый аспект в мельчайших деталях. Его цель — создать для тебя красную нить, которой ты можешь следовать активно смотря по сторонам. Есть ещё десятки важных и интересных тем, с которыми ты обязательно столкнешься. Выбрав карьеру разработчика, ты обречен учиться до конца своей карьеры, так что постарайся расслабиться и получать от этого удовольствие. У тебя обязательно получится!

+

Собеседования

+

Если ты считаешь, что уже готов к официальному трудоустройству, то советуем обратить внимание на данный Ресурс. Полагаем, он очень поможет тебе в данном нелегком деле.

+ +
+
+ + + Последнее обновление: + August 9, 2023 + +
+ Дата создания: + August 9, 2023 + + +
+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/hello-new-world/index.html b/hello-new-world/index.html new file mode 100644 index 0000000..4a1bc3a --- /dev/null +++ b/hello-new-world/index.html @@ -0,0 +1,964 @@ + + + + + + + + + + + + + + + + + + + + + + Вступаем во взрослый мир - Руководство по вкатыванию в Backend на Java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + +

Вступаем во взрослый мир

+ +

Так держать

+

Если ты добрался до этого пункта, мы мысленно пожимаем тебе руку. Осилить такое количество материала и не сдаться — достойно уважения. Но наше путешествие продолжается. Имей в виду, что если Core ты должен знать назубок, то знание всего ниже перечисленного может варьироваться от базового до нормального. Полностью прокачаться можно, увы, только на реальной работе.

+

Web-подготовка

+

Как ни странно, для того чтобы стать хорошим web-разработчиком, необходимо хорошо разбираться в этой самой паутине. И хотя базу обычно дают в университете, убедись, что ты помнишь/знаешь, что такое JSON, чем RESTful API отличается от SOAP, какие бывают HTTP-методы и прочие базовые штуки. Дальше по тексту подразумеваем, что ты не впадешь в ступор от слова "endpoint".

+

Системы сборки

+

Современные приложения редко состоят из парочки классов которые запускаются из среды разработки. Работа с зависимостями твоего проекта, его сборка/упаковка, всё это ответственность систем сборки. Они берут на себя нудную и иногда тяжелую работу, чтобы твой проект на развалился под грузом JAR hell. На данный момент, для Java есть две наиболее популярных системы сборки:

+
    +
  1. Gradle. Модно, молодежно, инкрементальная компиляция, описание билд-файла на Groovy или Kotlin DSL. Быстрый старт здесь.
  2. +
  3. Maven. Почти нестареющая классика. Описание билда файла на XML, есть множество плагинов на любой вкус, расширяющих стандартную функциональность. Быстрый старт здесь.
  4. +
+

Попробуй оба варианта, останься на том который тебе больше нравится. Явного фаворита среди них нет, Gradle часто ругают за сложность настройки, Maven за медлительность и многословность. На рынке они распределены почти 50/50, так что смотри сам. Мы советуем Maven, так как новичку зачастую проще работать именно с ним. С этого момента все твои проекты должны собираться только с использованием выбранной тобой системой сборки. Они используются в любом реальном проекте, и ты должен уметь такие проекты открывать, дорабатывать и собирать.

+

Тестирование

+

Ты можешь быть уверенным в качестве своего кода, но ещё больше уверенности тебе даст покрытие своего кода тестами. Тестирование это отдельная крупная тема для разговора. Их бывает много разных видов, разной степени полезности с использованием разных инструментов. Мы советуем начать с модульного (unit) тестирования. Наиболее популярным фреймворком для unit тестирования является JUnit. Начать своё погружение в этот увлекательный мир ты можешь

+ +

Логирование

+

Чем крупнее твоё приложение, тем больше возникает необходимость понимать, что за процессы в нем происходят. Отладка возникающих ошибок, сбор статистики и многое другое практически невозможно без наличия логов. С системами логирования в Java всё очень плохо. Их много, у них разный подход к конфигурации, а ещё они могут связываться друг с другом в забавных франкенштейнов. Из наиболее популярного, обрати внимание на:

+
    +
  • Logback;
  • +
  • Log4j2;
  • +
  • JBoss logging.
  • +
+

Проще всего будет настроить SLF4J Simple по этому мануалу. Сам SLF4J это фасад для движков логирования, вроде тех, что мы перечислили выше, но в нем есть возможность подключить небольшой встроенный движок, который отлично закроет твои начальные потребности. И помни, с этого момента в твоём коде не должно быть ни одного System.out.println, только взрослое логирование.

+

SQL

+

Современный web-мир невозможен без данных, а где данные, там и базы данных. Тебе нужно понимать синтаксис SQL и уметь писать на нем запросы. В этом тебе поможет:

+
    +
  1. Туториал от W3Schools;
  2. +
  3. Книга Алана Бьюли «Изучаем SQL»;
  4. +
  5. Прорешивание задачек на SQL-EX;
  6. +
  7. Если у тебя есть доступ к HyperSkill, пройди раздел «Databases and SQL» вот тут;
  8. +
  9. Интерактивный тренажер по SQL на Stepik, ориентированный на практические задачи с минимальной подачей теории.
  10. +
+

Становится джедаем запросов не надо, но у тебя должно сложиться понимание как ты можешь вертеть данные на своей будущей БД.

+

Базы данных

+

После того как ты овладел SQL, самое время подключить к своему приложению настоящую базу данных. Систем управления базой данных великое множество, на начальном этапе обрати внимание на:

+
    +
  1. PostgreSQL/MySQL — классические реляционные СУБД;
  2. +
  3. H2 — легковесная in-memory СУБД, хорошо подойдет для твоих небольших проектов;
  4. +
  5. MongoDB — популярная NoSQL СУБД
  6. +
+

Читать многотомные руководства на начальном пути обучения по ним не потребуется. Для начала тебе будет достаточно знать как установить СУБД и как заглянуть внутрь табличек.

+
JDBC
+

Итак, у тебя появилась база данных, теперь ты хочешь трогать её данные прямо из своего уютного кода. Тут на помощь придёт добрый дедушка JDBC. JDBC — это такое относительно низкоуровневое API (довольно старое, но супернадежное), которое предоставляет тебе возможность работать с твоей базой данной прямо из кода. Открываешь соединения, пишешь ручками запросы, отправляешь запрос на исполнение, получаешь выборку с результатами. Получается много кода, куча лапши try-catch, зато весьма производительно и гибко. В современном мире люди обычно пользуются инструментами более высокого уровня типа Spring Data, но не стоит забывать наши корни. Поэтому ознакомься на досуге с бесплатным руководством Oracle: JDBC Basics

+

ORM

+

Если ты ещё не задумывался о философских вопросах, то сейчас самое время. Вот живут у тебя таблицы в базе данных, связанные между собой в забавные клубки, и в ус не дуют. И с другой стороны баррикад, ты разработчик с горящими глазами и ворохом Java классов в твоем проекте. И хочешь ты, чтобы написал ты SQL-запрос и получил в ответ набор List<MyObject>, а не JDBC-выборку, обрабатывая которую руками, приходится создавать объекты и кастовать типы направо и налево как заправский колдун.

+

Такие страдания испытал не ты первый, поэтому умные люди собрались и придумали концепцию ORM. Основной смысл ORM в том, чтобы взять на себя тяжелую работу по преобразованию твоих Java-типов в типы базы данных и обратно. Ты как разработчик аннотируешь свои классы оставляя подсказки для фреймворка какие типы ты хочешь получить, а потом просто пользуешься обычными методами. Написал save(ListWithMyObjects), а он сам как по волшебству, превратился в SQL-запрос и обновил данные.

+

Звучит слишком хорошо, чтобы быть правдой, не так ли? Так и есть. Правильная готовка ORM — это настоящая головная боль и балансирование на острие ножа, но тебе придется к этому прикоснуться.

+
Hibernate
+

Он же просто хибер. Самый популярный Java-фреймворк, предназначенный для решения ORM задач. Море возможностей, море подводных камней, море страданий. Профессионально его готовить мало кто умеет, но приобщиться надо. Материалов по нему великое множество, но обрати внимание на эти:

+
    +
  • Один из самых известных Hibernate-профессионалов, Vlad Mihalcea, ведет уютный сайтик на котором содержатся десятки полезных статей, ответов на вопросы и обзоры подводных камней. Подпишись, читай, приобщайся. Когда у тебя на проекте выстрелит проблема по хиберу, Влад может прийти на помощь;
  • +
  • Бауэр, Кинг, Грегори. Java Persistence API и Hibernate. Одновременно является и справочником и руководством. Написана тяжело, читается тяжело, но достаточно объемно покрывает необходимые темы. Читать, возможно, придется в несколько заходов, но лучше осилить;
  • +
  • Официальная документация. Написано хорошо, в меру разжевано, сопровождается примерами. Целиком читать необязательно, но периодически заглядывать полезно.
  • +
+

Конференции

+

Java-конференции — это такие партийные съезды всех пролетариев джавистов. Много докладов о том, как наши микросервисы бороздят просторы облаков, разбор кишочков популярных фреймворков и многое другое.

+

Самое ценное в конференциях — это обмен опытом со своими братьями по цеху. Идеальное место, чтобы устраивать срачи с популярными Java-персоналиями, узнавать, чем сейчас дышат, и держать нос по ветру. В 2021 году всё это ушло в онлайн, что несколько сбивает настрой, но по-прежнему насыщенно хорошими докладами. Стоит отметить две наиболее популярные в наших краях конференции:

+
    +
  • Joker;
  • +
  • JPoint.
  • +
+

Два брата акробата, первый традиционно проходит в Питере, второй — в Москве. Доклады часто пересекаются, но при желании можно спокойно ходить на обе конференции, благо они разнесены по сезонам. Видосы с прошлых сезонов стали открывать бесплатно всем желающим, к чему обязательно стоит приобщиться на ютубе.

+ +
+
+ + + Последнее обновление: + August 9, 2023 + +
+ Дата создания: + August 9, 2023 + + +
+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/docs/images/favicon.png b/images/favicon.png similarity index 100% rename from docs/images/favicon.png rename to images/favicon.png diff --git a/docs/images/icon-developerjoy.svg b/images/icon-developerjoy.svg similarity index 100% rename from docs/images/icon-developerjoy.svg rename to images/icon-developerjoy.svg diff --git a/index.html b/index.html new file mode 100644 index 0000000..853cf4c --- /dev/null +++ b/index.html @@ -0,0 +1,806 @@ + + + + + + + + + + + + + + + + + + + + Руководство по вкатыванию в Backend на Java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + +

Введение

+ +
+Дисклеймер +
    +
  • в руководстве рассматривается развитие Java backend-разработчика
  • +
  • руководство написано исходя из того, что читатель не полный новичок в CS, и у него есть базовые знания
  • +
  • руководство намеренно написано в неформальном стиле, в формате монолога. Все предлагаемые изменения должны соответствовать данному стилю
  • +
  • целью руководства не является составление полного списка всех возможных курсов, книг или обучающих материалов. Состав должен представлять собой краткий, но не кратчайший список из максимально полезных обучающих материалов, советов и рекомендаций
  • +
  • Использование изображений в руководстве разрешено только в крайних случаях. Оставьте картинки профильным статьям.
  • +
+
+

Благодарности

+

Отдельное спасибо Вите за все запятые, дефисы и тире. +Особая признательность всем тем замечательным людям, которые помогали советами, критикой и собственными дополнениями материала. Вы лучшие.

+

Почему Java?

+

Первый вопрос который приходит в голову, когда выбираешь язык. На то, чтобы выбрать Java есть целый ряд причин:

+
    +
  1. Огромная база кода. Если ты хочешь что-то сделать, с большой вероятностью для этого уже есть библиотека;
  2. +
  3. Отличная документация. Подробнейшее описание API языка (Javadoc), дотошно описанная спецификация самого языка (JLS) и спецификация модели памяти (JMM) добавляют уверенности, что если у тебя появился вопрос: «Как это работает?» или «Почему это работает именно так?» — на него получится найти ответ;
  4. +
  5. Гибкость. Java — это не только язык, но и JVM платформа. С использованием этой платформы написаны, например, Kotlin (привет, Android), Scala (привет, ФинТех) и Clojure. Всё это позволяет нам, оседлав Java и потратив некоторое время, дрейфовать в сторону той предметной области, которая наиболее интересна;
  6. +
  7. Сообщество. Если у тебя появился вопрос, на него, скорее всего, ответили ещё в 2010. Если у тебя появилась гениальная идея проекта, на гитхабе, вероятно, уже есть десяток различных реализаций. Новичкам всегда радостно помогут советами прочитать, наконец, Javadoc;
  8. +
  9. Карьерные возможности. Java повсюду: backend, mobile, desktop (нет, он не умер). Без работы точно не останешься.
  10. +
+

Есть и ворох недостатков:

+
    +
  1. Многословность. Java многословна. То, что сейчас в Python занимает одну строку, в Java займёт 10. Не такой большой минус в современном мире, где есть Intellij и автодополнение, плюс в язык добавляются модные фичи вроде var. К тому же в языках вроде Kotlin или Scala можно писать достаточно компактный код;
  2. +
  3. Обилие устаревшего кода. Java появилась в 1995 году, и с тех пор было написано много кода. Чертовски много. Всё это нужно поддерживать, развивать и лелеять, так как бизнес очень не любит тратить деньги. Например, Java 8 вышла в 2014 году, а согласно опросу JetBrains в 2020 году, её доля составляет 75%! Так что, залетев на работу, с высокой долей вероятности ты будешь писать на старой версии, в которой нет современного сахара, увы;
  4. +
  5. Ограниченная сфера применения. В современном мире Java по настоящему блистает в качестве backend-языка. Да, ты можешь писать mobile, но там развивается Kotlin. Да, ты можешь писать desktop, но люди выбирают Electron. Локомотив хайпа находится в вебе, поэтому мы садимся именно в него.
  6. +
+

Подготовка

+

Перед обучением тебе понадобится:

+
    +
  • +

    Установка Java. Всегда бери самую свежую версию. Даже если на работе будешь писать на восьмерке, стоит держать руку на пульсе и быть в курсе всех современных Java фишек.

    +
  • +
  • +

    Среда разработки. Используй intellij IDEA Community, скажешь спасибо потом. Из альтернатив есть:

    +
  • +
  • Eclipse. Старый, неудобный, но ещё относительно популярный в некоторых местах;
  • +
  • VS Code. Это не IDE, но хороший редактор кода, который обвешивают кучей плагинов.
  • +
  • Знакомство с Git. Гит — система контроля версий. Если ты когда-нибудь слышал слова "коммиты", "ветки" и "PR" — это оно. Для начала хватит простого гайда, чтобы понимать базовые термины. Потом стоит почитать документацию к своей IDE. IDEA, например, поддерживает работу с гит из коробки.
  • +
  • Профиль на GitHub. Гитхаб — это такая социальная сеть для разработчиков. Ставь лайки библиотекам, которые используешь, и изучай тренды. Не стесняйся выкладывать туда все свои мелкие проекты, только не забывай про Readme. Потом будешь рад, когда понадобится найти проект, в котором ты уже делал работающие аспекты или работу с авторизацией.
  • +
  • Ведение заметок. Очень важный пункт. Тебе предстоит поглощать огромное количество информации, большую часть которой ты забудешь уже на следующий день. Чтобы помочь своему мозгу, начни вести заметки по методике ZettelKasten, например, в notion.io https://habr.com/ru/post/509756/.
  • +
  • Будь в курсе. Java активно развивается. Чтобы не остаться в стороне от важных новостей, ты должен их читать. Начни с подписки на ежемесячную подборку Java Annotated и подписывайся на интересных авторов.
  • +
+

Обучение

+

Если хорошенько поискать, можно найти десятки статей о том, какие книги лучше читать и какие курсы лучше проходить. Заботливые люди рисуют дорожные карты и, казалось бы, просто бери и следуй гайдам. Но проблема в том, что их слишком много! Современный мир backend-разработки требует от тебя разбираться в куче вещей, и простой человек Василий, попробовав во всём этом разобраться, очень скоро почувствует беспомощность, грусть и отчаяние.

+

Однако, всё не так страшно. Учиться придется очень много, к счастью, мы отобрали только самые лучшие материалы.

+ +
+
+ + + Последнее обновление: + August 9, 2023 + +
+ Дата создания: + August 9, 2023 + + +
+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/java-core-advanced/index.html b/java-core-advanced/index.html new file mode 100644 index 0000000..ffb1243 --- /dev/null +++ b/java-core-advanced/index.html @@ -0,0 +1,975 @@ + + + + + + + + + + + + + + + + + + + + + + Java Advanced - Руководство по вкатыванию в Backend на Java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + +

Java Advanced

+ +

Java Core Advanced

+

Итак, ты уже уверенно владеешь базовыми средствами языка. Без проблем решаешь базовые задачи, знаешь состав Collections Framework, понимаешь отличие HashMap от TreeMap и даже знаешь что есть стримы и есть другие стримы. Самое время нырнуть в Core ещё глубже.

+

Книги

+
Рауль Урма, Марио Фуско, Алан Майкрофт. «Современный язык Java»
+

Выход Java 8 изменил экосистему Java навсегда. Stream API, default методы, лямбды — без этих вещей невозможно представить современную Java-разработку. В этой книге подробно описаны все киллер фичи Java 8. Некоторые моменты, вроде конкурентности могут быть непонятными, но обязательно вернись к ним позже.

+

Обрати внимание, в русском переводе есть проблема с перепутанными примерами кода в первых главах.

+
Брайан Гетц. «Java Concurrency на практике»
+

Современный web — это высокие нагрузки, тысячи клиентов, и терабайты данных. Чтобы твоё приложение могло утилизировать ресурсы сервера по максимуму, ты должен стать джедаем конкурентного/параллельного программирования. Эта книга must-read абсолютно для всех java-разработчиков. Несмотря на то, что она написана для Java 5, все её советы актуальны и по сей день. Может читаться тяжело, но прочитать её ты обязан.

+
Адитья Бхаргава. «Грокаем алогритмы»
+

По поводу того, когда лучше знакомиться с алгоритмами, ведутся бесконечные диспуты. Наше мнение — каждый решает сам для себя. Но конкретно эту книгу лучше прочитать пораньше. Она в интересной форме расскажет про базовые термины вроде сложности алгоритмов, познакомит тебя с некоторыми видами сортировок и прочими интересными штуками. Звучит сложно, но поверь, это именно та книга, которая может вызвать у тебя любовь к алгоритмам.

+
(Опционально) Роберт Лафоре. «Структуры данных и алгоритмы Java»
+

Многие критикуют данную книгу из-за странного стиля кода и занудной подачи материала, но если вдруг тебе захотелось копнуть алгоритмы чуть поглубже, можешь попробовать.

+
(Опционально) Николай Палрог. «Система модулей Java»
+

Одной из ключевых фишек Java 9, стала новая система модулей, которая позволяет получить абстракцию над привычными пакетами и получить более сильную инкапсуляцию классов. Её весьма неохотно используют (в основном из-за лени и легаси), но умение готовить модули будет приятным бонусом к твоим навыкам и пригодится, если вдруг захочешь пройти официальную сертификацию Oracle.

+
(Опционально) Кен Коузен. «Современный Java. Рецепты программирования»
+

Практически всё тоже, что в книге Урмы, только как сборник кратких рецептов: как использовать коллекторы, компараторы, потоки и прочие «новинки» Java 8. Всё это с небольшими понятными примерами. Книга весьма хороша как краткая выжимка или handbook.

+

Видео

+
Jakob Jenkov, Java Concurrency And Multithreading
+

Хорошее дополнение к книге Брайана Гетца по многопоточности. Некоторые темы пересекаются, некоторые темы затрагивают внутреннее устройство языка/JVM вроде модели памяти. Одних этих видео не хватит чтобы полностью разобраться с многопоточностью, но они отлично помогут укрепить или дополнить твоё представление об этой страшной и сложной вещи.

+

Паттерны

+

Многие проблемы, которые возникают при разработке приложений появляются из-за ошибок допущенных при проектировании. Умные люди выявили повторяющиеся из проекта в проект решения и закономерности (паттерны) и сделали их классификацию. Почему важно их знать? Паттерны описывают типичные способы решения часто встречающихся проблем при проектировании программ, что позволяет тебе не изобретать велосипед, а твоим коллегам гораздо быстрее понимать, что происходит в коде. Однако помни, что использование популярных паттернов при решении каждой задачи является скорее плохой практикой чем хорошей. Всё хорошо в меру, и с опытом ты поймешь ту тонкую грань, когда паттерны реально сделают архитектуру твоего кода лучше, а когда только навредят.

+

Паттернов много, хороших и разных, но зубрить их не надо. Пробегись по списку, посмотри на те которые тебя заинтересуют. На текущем этапе твоя задача оставить якорь в памяти, что такие вещи существуют.

+

Из ресурсов по паттернам можно выделить:

+
    +
  1. Refactoring guru. Модно, молодежно, доступный язык.
  2. +
  3. Design Patterns: Elements of Reusable Object-Oriented Software (GoF) — сухой академический оригинал, сможешь осилить — хорошо, не сможешь — используй другие источники.
  4. +
+

Упражнения

+

Подойдут всё те же сайты которые были на прошлом этапе, но уже с более высокой сложностью. Старайся решать задачи с использованием «современных» функциональных фишек Java: Stream API и лямбды.

+

Подведение итогов Advanced Core

+

Помнишь те карточки которые ты поленился сделать на прошлом этапе? Самое время добавить новые:

+
    +
  1. Потоки ввода-вывода в Java
  2. +
  3. Сериализация
  4. +
  5. Многопоточность
  6. +
  7. Шаблоны проектирования
  8. +
+ +
+
+ + + Последнее обновление: + August 9, 2023 + +
+ Дата создания: + August 9, 2023 + + +
+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/java-core/index.html b/java-core/index.html new file mode 100644 index 0000000..bb4b696 --- /dev/null +++ b/java-core/index.html @@ -0,0 +1,1038 @@ + + + + + + + + + + + + + + + + + + + + + + Java Core - Руководство по вкатыванию в Backend на Java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + +

Java Core

+ +

Java Core Base

+

Java Core — это основа понимания языка и его возможностях, работающих «из коробки». Так как это фундамент, подойти к его формированию стоит очень ответственно, чтобы не страдать позже и не пытаться изобрести велосипед. Не стоит пытаться экономить время, хитрить и пропускать «неинтересные» куски. Поверь, уверенная база тебе воздастся в будущем, ибо на собеседованиях гоняют в основном по Core.

+

Курсы

+

Помни, что ни один из курсов не дает полную базу. Используй их как дополнение к книгам.

+
Туториалы от Oracle
+

Oracle является разработчиком языка и предоставляет собственные обучающие материалы довольно неплохого качества. Ещё и бесплатно. Из минусов: рассматривается java 8, некоторые темы рассмотрены очень сжато. Но всё равно обязательно загляни, там много интересного.

+
JavaRush
+

В странах СНГ и Украине весьма популярен великий и ужасный JavaRush. Интернет пестрит историями успеха, как простой слесарь Григорий стал успешным и теперь зарабатывает 300кк/наносек. Тысячи практических задач! Сотни тысяч пользователей! За какие-то смешные деньги ты сможешь полностью изменить свою жизнь!

+

Так вот, ни в коем случае на это не ведись. JavaRush очень сильно страдает отрывочной подачей теории, из-за чего люди застревают даже на простых задачках. Задумайся, при создании технической книги она проходит множество стадий вычитки и рецензирования. На JavaRush таким, понятное дело, никто не занимается. Не трать зря время, деньги и нервы, и представь, что такого сайта просто не существует. Даже если ты знаешь человека, который знает человека, который сказал, что там всё круто.

+
Stepik
+

Агрегатор курсов от различных авторов разной степени качества. Начать можно с Java. Базовый курс.

+
HyperSkill (JetBrains Academy)
+

Совместный проект Stepik и JetBrains. Содержит треки (курсы) по разным языкам: Python, Java, Kotlin, JS.

+

Обучение ведется в разрезе мини-проектов: выбираете проект определенной сложности (от консольных крестиков-ноликов до интеграций со Spotify и веб-приложений), который разбивается на несколько стадий. По каждой стадии дается набор теории, по теории проходятся мелкие задачки. Кто-то скажет, что весьма смахивает на JavaRush, но отличие в качестве материала. Часть берется со Stepik, часть создают сами с модерированием и предварительной бетой.

+

Тем у них ОЧЕНЬ много, от Java Core до математики и алгоритмов. Core описан очень хорошо, остальные похрамывают.

+

Материал полностью на «русском английском», так что читать его несложно, но иногда непонятно, что пытался сказать автор. Платный, с триальным доступом.

+

Из минусов: очень задумчивый интерфейс, некоторые проекты крайне скудны на описание, некоторые тесты приходится «хакать» из-за непонятной логики проверки. В остальном — идеальный вариант для механического прорешивания простых задачек.

+
YouTube
+

Тысячи индусов и сочувствующих готовы прийти на помощь. Заманивают бесплатностью и объемом материалов, но помни что за актуальность и адекватность материала отвечает только сам автор. Начни с бесплатного курса Тагира Валеева, весна 2020. Туть. +Есть более свежая версия курса, вышедшая в 2022 году. Каких-то сильных отличий нет, можешь смотреть любой вариант.

+

Тагир — широко известный во всем мире джавист, работает в JetBrains, является Java чемпионом (да, это реальное звание). В курсе погружается довольно углубленно внутрь устройства языка, может тяжеловато заходить, поэтому параллельно можешь шлифовать другими материалами.

+
Udemy
+

Обрати внимание на курс от Tim Buchalka, вот здесь. Он очень хорошо и подробно разжевывает Java в серии небольших видео, общей длительностью около 80 часов. Даже упражнения после тем есть. Говорит с австралийским акцентом, но есть английские субтитры, так что рекомендую. Эдакая видеоверсия Шилдта по подробности материала. На цены в 10к+ рублей не смотри, на Udemy постоянно идут распродажи со скидками в 80-90%. Так что если видишь полный прайс, просто добавь курс в вишлист и подожди пару недель.

+

Книги

+

Лучше всего читать на английском, но можно и переводы. Помни, что переводы зачастую являются устаревшими и ВНЕЗАПНО труднее читаются из-за того, что одни и те же термины в разных книгах могут переводить по разному.

+
Герберт Шилдт, «Java. Полное руководство» и «Java. Руководство для начинающих»
+

«Полное руководство» — это увесистый том на 1.5к страниц, который с трудом помещается в руках. Бери его если у тебя есть безответная любовь к справочникам или если ты любишь максимально дотошное описание API языка. Если нет, бери «Руководство для начинающих», которое в два раза короче и наслаждайся подробным описанием языка без километровых описаний API. Имей в виду, что в руководстве для начинающих не освещены некоторые «продвинутые» темы, так что сверься с содержанием обеих книг.

+
Джошуа Блох, «Java. Эффективное программирование»
+

Книга которую обязательно стоит прочитать после Хорстманна или Шилдта, и регулярно перечитывать. Блох — один из создателей языка, в своей книге он описал best practice: правильное написание equals и hashCode, как правильно готовить generics, почему лямбды это хорошо и многое другое. Написано доступно, читается легко.

+
(Опционально) Кей Хорстманн, «Java. Библиотека профессионала, том 1. Основы»
+

Хорстманн пишет более сухо и сжато чем Шилдт, некоторые моменты описаны на «низком» уровне (объяснения того, как язык устроен внутри). Пестрит вставками со сравнениями с С++. Твой выбор, если уже есть/был опыт других языков и нет потребности в разжевывании материала. Во втором томе описываются продвинутые темы вроде разбора XML, интернационализации и веб-служб. Глянь содержание и имей в виду, что там есть.

+
(Опционально) Кэти Сьерра и Берт Бейтс, «Изучаем Java (Head First Java)»
+

Если ты начал читать Шилдта и всё равно чувствуешь, что ничего не понимаешь, попробуй эту книгу. Написано максимально простым языком, много картинок. После её прочтения в голове должна сложиться простая мозаика, что позволит вернуться к более «взрослым» книгам.

+

Упражнения

+

Теория — это замечательно, но нужно постоянно писать код. Лучшие места для этого:

+
    +
  1. Задачки и проекты HyperSkill. Много хороших и разных, но платно;
  2. +
  3. CodeWars. Ориентируйся на уровень сложности 8-7kyu;
  4. +
  5. CodingBat. Элементарные задачки на уровне первого курса университета;
  6. +
  7. HackerRank. Выбираешь Java, выбираешь Easy, прорешиваешь.
  8. +
+

Что делать, если возникли вопросы?

+

Не знаешь как разбить строку на символы? Не помнишь как прочитать текст из файла? Забыл как быстро можно отсортировать массив? Со всем этим помогут следующие ресурсы:

+
    +
  1. Javadoc. Подробное описание API языка. Хочешь сделать что-то со строкой? Загляни в Javadoc класса String. Хочешь сделать что-то с массивом? Загляни в javadoc класса Arrays. Javadoc — это первое место, куда ты должен идти при любом вопросе. Не знаешь с какого класса начать поиск? Просто вбей в поиск что-то вроде Java split word javadoc и с высокой долей вероятности первые строчки будут вести на нужный класс;
  2. +
  3. StackOverflow. Самый популярный ресурс для копипаста кода и ответов на твои вопросы. Являются ли строки в Java иммутабельными? Что такое знак джокера? Что такое PECS? На всё это ты сможешь найти ответ благодаря сообществу StackOverflow, вбив в поиск что-то вродеJava pecs stackoverflow
  4. +
  5. Baeldung. Сборник статей и рецептов на все случаи жизни. Что нового в Java 16? Какими способами можно сортировать List? Чем отличается ArrayList от LinkedList? Как применять Jackson? Скорее всего, про это уже есть статьи на baeldung.
  6. +
  7. Telegram. Если твой поиск не увенчался успехом, и ты готов опустить руки, приходи к живым, русскоговорящим людям и попроси помощи. Тут не решат за тебя твои задачи, но помогут с направлением копания.
  8. +
+

Подведение итогов Core

+

Итак, ты прошел/посмотрел курсы, прочитал базовые книги и даже решил кучу упражнений. Чувствуешь себя уверенно и даже расправил плечи? Самое время поиграть в карточки. Есть отличный гитхаб репозиторий в котором есть куча популярных вопросов на собеседованиях. Сейчас тебе стоит обратить внимание на:

+
    +
  1. ООП
  2. +
  3. Java Core
  4. +
  5. Java Collections Framework
  6. +
  7. Java 8
  8. +
+

Не ленись занести вопросы в карточки Anki или распечатать в бумажном виде. Повторяй на регулярной основе, но помни, что твоя задача не заучить их механически, но научиться приходить к ответам логическим путем. Когда придешь на собеседование и будешь трястись от нервов и пить воду шумными глотками, все твои зубрежки вылетят из головы, а понимание материала никуда не денется.

+ +
+
+ + + Последнее обновление: + August 9, 2023 + +
+ Дата создания: + August 9, 2023 + + +
+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index 8e804d4..0000000 --- a/mkdocs.yml +++ /dev/null @@ -1,103 +0,0 @@ -site_name: Руководство по вкатыванию в Backend на Java -repo_name: EightM/JavaBackendStartGuide -repo_url: https://github.com/EightM/JavaBackendStartGuide -#site_url: https://EightM.github.io/JavaBackendStartGuide -edit_uri: edit/develop/docs/ -copyright: Copyright © 2022 - 2023 EightM -theme: - favicon: images/favicon.png - icon: - repo: fontawesome/brands/github - logo: fontawesome/solid/book - palette: - - scheme: default - primary: indigo - accent: indigo - toggle: - icon: material/brightness-7 - name: Switch to dark mode - - scheme: slate - primary: indigo - accent: indigo - toggle: - icon: material/brightness-4 - name: Switch to light mode - language: ru - name: material - features: - - content.action.edit - - content.action.view - - content.code.annotate - - content.code.copy - - content.tooltips - - navigation.footer - - navigation.indexes - - navigation.sections - - navigation.tabs - - navigation.top - - navigation.tracking - - search.highlight - - search.share - - search.suggest - - toc.follow - -markdown_extensions: - - pymdownx.highlight: - anchor_linenums: true - line_spans: __span - pygments_lang_class: true - - pymdownx.inlinehilite - - pymdownx.snippets - - pymdownx.superfences - - admonition - - pymdownx.details - - attr_list - - pymdownx.emoji: - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg - - def_list - - pymdownx.tasklist: - custom_checkbox: true - - footnotes - - md_in_html - - toc: - permalink: true - - pymdownx.arithmatex: - generic: true - - pymdownx.betterem: - smart_enable: all - - pymdownx.caret - - pymdownx.details - -plugins: - - search: - separator: '[\s\-,:!=\[\]()"/]+|(?!\b)(?=[A-Z][a-z])|\.(?!\d)|&[lg]t;' - lang: ru - - git-revision-date-localized: - enable_creation_date: true -extra: - version: - provider: mike - social: - - icon: fontawesome/brands/telegram - link: https://t.me/javastart - name: Чат для начинающих - - icon: fontawesome/brands/telegram - link: https://t.me/javachats - name: Java Чат - - icon: fontawesome/brands/telegram - link: https://t.me/jvmchat - name: Pro.JVM Чат - - -nav: - - Введение: index.md - - Java Core: java-core.md - - Java Advanced: java-core-advanced.md - - Вступаем во взрослый мир: - - Вступаем во взрослый мир: hello-new-world.md - - Spring Framework: spring-framework.md - - Quarkus: quarkus.md - - CI/CD: cicd.md - - Контейнеризация: containers.md - - Что дальше ?: eventually.md \ No newline at end of file diff --git a/quarkus/index.html b/quarkus/index.html new file mode 100644 index 0000000..c1a85f0 --- /dev/null +++ b/quarkus/index.html @@ -0,0 +1,1012 @@ + + + + + + + + + + + + + + + + + + + + + + Quarkus - Руководство по вкатыванию в Backend на Java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + +

Quarkus

+ +

Почему Quarkus ?

+

Quarkus - фреймворк от RedHat, взгляд на экосистему которого заставляет рассмотреть его в качестве альтернативы таким фреймворкам как Helidon (Oracle), Spring Boot (VMware), Micronaut. +В отличии от остальных фреймворков, перечисленных выше, Quarkus не пошел по пути создания чего-то абсолютно уникального. +Вместо этого, он предлагает использовать уже давно существующую в рамках мира backend web-разработки реализацию спецификации Jakarta REST (ранее известная как JAX-RS), известной как Resteasy. + В сущности, это означает, что разработчикам не пришлось особенно много усилий прилагать, чтобы уйти от устаревшего формата разработки. +Конечно же, это можно было сделать и с помощью Spring Boot, но количество усилий несоизмеримо. +Типовой микросервис можно перенести c сервлетного JAX-RS на Quarkus даже за 5 минут (конечно же, это средняя температура по больнице).

+

Quarkus реактивный, даже не сомневайся

+

Изначально, как было выше сказано, Quarkus использовал популярную реализацию Jakarta REST. Однако команда разработчиков пошла дальше. Вместе с разработчиками Resteasy был разработан Resteasy Reactive. +В нем Quarkus использует Vert.x - набор библиотек для реализации реактивных приложений. При этом, поддержка всех механизмов и аннотаций спецификации Jakarta REST сохранилась. +Думаю, лучше всего реактивность Quarkus описывают слова из статьи Quarkus Reactive Architecture:

+
+

Quarkus is reactive

+

Quarkus is reactive. It’s even more than this: Quarkus unifies reactive and imperative programming. You don’t even have to choose: you can implement reactive components and imperative components then combine them inside the very same application. No need to use different stacks, tooling or APIs; Quarkus bridges both worlds.

+
+

Для более четкого представления о том, что здесь написано, было бы здорово прочитать Quarkus Reactive Architecture, затем Using Eclipse Vert.x API from a Quarkus Application, и, для более глубокого погружения Vert.x Reference Guide.

+

Экосистема

+
Документация
+

При изучении таких фреймворков как Spring и Quarkus в первую очередь встает вопрос о документации и ее качестве. +В случае Quarkus она не должна оставить изучающего равнодушным. Стоит просто зайти на страницу и наслаждаться. +Там ты найдешь как короткие вводные статьи для новичков о том, как использовать тот или иной фреймворк в рамках Quarkus, так и концепты внутреннего устройства проекта. +Наконец, там присутствуют справочные(Reference Guide) статьи для продолжающих разработчиков.

+

Утилиты

+

Spring имеет такую замечательную утилиту Spring Initializr для генерации и первичной настройки проекта. +В свою очередь, Quarkus предоставляет Web-страницу со схожим функционалом code.quarkus.io. +Там ты сможешь выбрать: язык разработки, систему сборки, и, также все необходимые для разработки зависимости. + В итоге ты получаешь готовый проект, осталось лишь внедрить свою бизнес-логику. +Также, Quarkus тесно интегрируется с самыми популярными IDE, системами сборки Gradle/Maven. Наконец, стоит отметить наличие прекрасного и самодостаточного CLI.

+
Поддержка технологий
+

Quarkus старается поддерживать множество популярных технологий. +Для сериализации используется Jackson. +Для логирования поддерживаются следующие API:

+ +

Не могу не упомянуть про способ логирования, которого мне не достает в любом другом фреймворке:

+
Упрощенное логгирование
package com.example;
+
+import io.quarkus.logging.Log; 
+
+class MyService { 
+    public void doSomething() {
+        Log.info("Simple!"); 
+    }
+}
+
+

Подробнее о том, как работает такой способ читай тут.

+

Для подключения к БД адаптированы привычные JDBC драйверы к множеству СУБД, но также предлагается и вариант подключения с помощью реактивных клиентов. +Подробнее можно почитать здесь. +Если, вдруг, ты соскучился по Hibernate, то вот и вот. ПоДучи и распишись.

+

Выше освещены наиболее важные технологии, которые ты так или иначе встретишь на месте работы. Но, конечно же Quarkus поддерживает множество других. Вряд ли ты обнаружишь, что не хватает чего-то важного (или не очень). +Достигается это не только за счет поддержки Core-команды от RedHat, но и существования Quarkiverse.

+
Quarkiverse
+

Quarkiverse Github - это место в Github, куда любой разработчик/группа разработчиков может выложить расширение для Quarkus. +Расширения Quarkus, размещенные в организации Quarkiverse, могут быть легко включены в каталог расширений Quarkus, доступный на code.quarkus.io, и в инструменты командной строки Quarkus (такие как mvn quarkus:list-extensions, gradle listExtensions). Но это не только лишь набор репозиториев. Множество расширений пишется по определенному набору правил и имеют собственную документацию. Актуальный список расширений ты найдешь тут. Перед использованием расширений можно прочитать краткое руководство.

+
Сообщество
+

Команда разработчиков Quarkus глубоко заинтересована и открыта к решению проблем. При желании можно задать любой вопрос в чате, в котором сидят разработчики Quarkus и с охотой отвечают на любые вопросы, в том числе вопросы совсем новичков. +Также, ты там встретишь множество реальных пользователей Quarkus, в том числе таких же новичков как ты, некоторые из которых также смогут помочь в решении той или иной проблемы.

+
Developer Joy
+

Отдельно хотелось бы отметить тот факт, что команда разработчиков Quarkus делает акцент на комфорте разработки, используя Quarkus:

+
+

Beyond simply working, we’re aiming for Joy.

+

Quarkus is not just about being great for writing Web Applications or Micro-Services. +We’re focusing on more than the feature set: we make sure that every feature works well, simply, with little to no configuration, in the most intuitive way possible. +It should be trivial to develop simple things, and easy to develop the more complex ones.

+
+

Прочитай это, надеюсь тебе понравится.

+

Блоги, Книги, Подкасты

+

Сообщество Quarkus старается так или иначе популяризировать свой продукт. На главной странице сайта можно найти все необходимые ресурсы для слежения за развитием проекта. Блог, Подкасты, Книги и многое другое.

+

How-to старт

+

Для того, чтобы начать писать код, достаточно зайти на страницу Get Started и следовать инструкциям. +Здесь тебя научат как написать и запустить простейший микросервис, используя Quarkus. Обязательно обрати внимание на раздел Next Steps, там будут ссылки на статьи, +которые подробнее расскажут как писать REST сервисы, в том числе реактивно. +Также, покажут как упростить разработку в твоей любимой IDE и многое другое.

+

Истории миграций

+

В блоге Quarkus можно найти истории миграции на Quarkus. Почитай как-нибудь на досуге.

+
+

developerjoy +

+
Приятного путешествия :)
+
+ +
+
+ + + Последнее обновление: + August 9, 2023 + +
+ Дата создания: + August 9, 2023 + + +
+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 0000000..1eb8a08 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["ru"],"separator":"[\\s\\-,:!=\\[\\]()\"/]+|(?!\\b)(?=[A-Z][a-z])|\\.(?!\\d)|&[lg]t;","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":"\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440
  • \u0432 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 Java backend-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430
  • \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 CS, \u0438 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f
  • \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043d\u0435\u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0442\u0438\u043b\u0435, \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043c\u043e\u043d\u043e\u043b\u043e\u0433\u0430. \u0412\u0441\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0442\u0438\u043b\u044e
  • \u0446\u0435\u043b\u044c\u044e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432, \u043a\u043d\u0438\u0433 \u0438\u043b\u0438 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u0421\u043e\u0441\u0442\u0430\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 \u043a\u0440\u0430\u0442\u043a\u0438\u0439, \u043d\u043e \u043d\u0435 \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439
  • \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u0440\u0430\u0439\u043d\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445. \u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u043c \u0441\u0442\u0430\u0442\u044c\u044f\u043c.
"},{"location":"#_1","title":"\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438","text":"

\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0412\u0438\u0442\u0435 \u0437\u0430 \u0432\u0441\u0435 \u0437\u0430\u043f\u044f\u0442\u044b\u0435, \u0434\u0435\u0444\u0438\u0441\u044b \u0438 \u0442\u0438\u0440\u0435. \u041e\u0441\u043e\u0431\u0430\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u043c \u0442\u0435\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043b\u044e\u0434\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u0438 \u0441\u043e\u0432\u0435\u0442\u0430\u043c\u0438, \u043a\u0440\u0438\u0442\u0438\u043a\u043e\u0439 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u0412\u044b \u043b\u0443\u0447\u0448\u0438\u0435.

"},{"location":"#java","title":"\u041f\u043e\u0447\u0435\u043c\u0443 Java?","text":"

\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0448\u044c \u044f\u0437\u044b\u043a. \u041d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c Java \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u044b\u0439 \u0440\u044f\u0434 \u043f\u0440\u0438\u0447\u0438\u043d:

  1. \u041e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u043a\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u0442\u044b \u0445\u043e\u0447\u0435\u0448\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430;
  2. \u041e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439\u0448\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 API \u044f\u0437\u044b\u043a\u0430 (Javadoc), \u0434\u043e\u0442\u043e\u0448\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (JLS) \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 (JMM) \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0442\u0435\u0431\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?\u00bb \u0438\u043b\u0438 \u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a?\u00bb \u2014 \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u043e\u0442\u0432\u0435\u0442;
  3. \u0413\u0438\u0431\u043a\u043e\u0441\u0442\u044c. Java \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0437\u044b\u043a, \u043d\u043e \u0438 JVM \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430. \u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Kotlin (\u043f\u0440\u0438\u0432\u0435\u0442, Android), Scala (\u043f\u0440\u0438\u0432\u0435\u0442, \u0424\u0438\u043d\u0422\u0435\u0445) \u0438 Clojure. \u0412\u0441\u0451 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c, \u043e\u0441\u0435\u0434\u043b\u0430\u0432 Java \u0438 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0434\u0440\u0435\u0439\u0444\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0442\u043e\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430;
  4. \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e. \u0415\u0441\u043b\u0438 \u0443 \u0442\u0435\u0431\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441, \u043d\u0430 \u043d\u0435\u0433\u043e, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438 \u0435\u0449\u0451 \u0432 2010. \u0415\u0441\u043b\u0438 \u0443 \u0442\u0435\u0431\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439. \u041d\u043e\u0432\u0438\u0447\u043a\u0430\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0432\u0435\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, Javadoc;
  5. \u041a\u0430\u0440\u044c\u0435\u0440\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. Java \u043f\u043e\u0432\u0441\u044e\u0434\u0443: backend, mobile, desktop (\u043d\u0435\u0442, \u043e\u043d \u043d\u0435 \u0443\u043c\u0435\u0440). \u0411\u0435\u0437 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0448\u044c\u0441\u044f.

\u0415\u0441\u0442\u044c \u0438 \u0432\u043e\u0440\u043e\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432:

  1. \u041c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u043e\u0441\u0442\u044c. Java \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u0430. \u0422\u043e, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 Python \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443, \u0432 Java \u0437\u0430\u0439\u043c\u0451\u0442 10. \u041d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u0438\u043d\u0443\u0441 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043c\u0438\u0440\u0435, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c Intellij \u0438 \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043f\u043b\u044e\u0441 \u0432 \u044f\u0437\u044b\u043a \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u0432\u0440\u043e\u0434\u0435 var. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0432 \u044f\u0437\u044b\u043a\u0430\u0445 \u0432\u0440\u043e\u0434\u0435 Kotlin \u0438\u043b\u0438 Scala \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u0434;
  2. \u041e\u0431\u0438\u043b\u0438\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430. Java \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432 1995 \u0433\u043e\u0434\u0443, \u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0427\u0435\u0440\u0442\u043e\u0432\u0441\u043a\u0438 \u043c\u043d\u043e\u0433\u043e. \u0412\u0441\u0451 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0438 \u043b\u0435\u043b\u0435\u044f\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0431\u0438\u0437\u043d\u0435\u0441 \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0434\u0435\u043d\u044c\u0433\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Java 8 \u0432\u044b\u0448\u043b\u0430 \u0432 2014 \u0433\u043e\u0434\u0443, \u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u043f\u0440\u043e\u0441\u0443 JetBrains \u0432 2020 \u0433\u043e\u0434\u0443, \u0435\u0451 \u0434\u043e\u043b\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 75%! \u0422\u0430\u043a \u0447\u0442\u043e, \u0437\u0430\u043b\u0435\u0442\u0435\u0432 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443, \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0434\u043e\u043b\u0435\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u0442\u044b \u0431\u0443\u0434\u0435\u0448\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430, \u0443\u0432\u044b;
  3. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u0441\u0444\u0435\u0440\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043c\u0438\u0440\u0435 Java \u043f\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0431\u043b\u0438\u0441\u0442\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 backend-\u044f\u0437\u044b\u043a\u0430. \u0414\u0430, \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u043f\u0438\u0441\u0430\u0442\u044c mobile, \u043d\u043e \u0442\u0430\u043c \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f Kotlin. \u0414\u0430, \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u043f\u0438\u0441\u0430\u0442\u044c desktop, \u043d\u043e \u043b\u044e\u0434\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 Electron. \u041b\u043e\u043a\u043e\u043c\u043e\u0442\u0438\u0432 \u0445\u0430\u0439\u043f\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0432\u0435\u0431\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0441\u0430\u0434\u0438\u043c\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0435\u0433\u043e.
"},{"location":"#_2","title":"\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430","text":"

\u041f\u0435\u0440\u0435\u0434 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u0431\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f:

  • \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Java. \u0412\u0441\u0435\u0433\u0434\u0430 \u0431\u0435\u0440\u0438 \u0441\u0430\u043c\u0443\u044e \u0441\u0432\u0435\u0436\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u0431\u0443\u0434\u0435\u0448\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0432\u043e\u0441\u044c\u043c\u0435\u0440\u043a\u0435, \u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0440\u0443\u043a\u0443 \u043d\u0430 \u043f\u0443\u043b\u044c\u0441\u0435 \u0438 \u0431\u044b\u0442\u044c \u0432 \u043a\u0443\u0440\u0441\u0435 \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 Java \u0444\u0438\u0448\u0435\u043a.

  • \u0421\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 intellij IDEA Community, \u0441\u043a\u0430\u0436\u0435\u0448\u044c \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u043f\u043e\u0442\u043e\u043c. \u0418\u0437 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u0435\u0441\u0442\u044c:

  • Eclipse. \u0421\u0442\u0430\u0440\u044b\u0439, \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0439, \u043d\u043e \u0435\u0449\u0451 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445;
  • VS Code. \u042d\u0442\u043e \u043d\u0435 IDE, \u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0432\u0435\u0448\u0438\u0432\u0430\u044e\u0442 \u043a\u0443\u0447\u0435\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.
  • \u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Git. \u0413\u0438\u0442 \u2014 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439. \u0415\u0441\u043b\u0438 \u0442\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u043b\u044b\u0448\u0430\u043b \u0441\u043b\u043e\u0432\u0430 \"\u043a\u043e\u043c\u043c\u0438\u0442\u044b\", \"\u0432\u0435\u0442\u043a\u0438\" \u0438 \"PR\" \u2014 \u044d\u0442\u043e \u043e\u043d\u043e. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0445\u0432\u0430\u0442\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0433\u0430\u0439\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u044b. \u041f\u043e\u0442\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043a \u0441\u0432\u043e\u0435\u0439 IDE. IDEA, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0433\u0438\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438.
  • \u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043d\u0430 GitHub. \u0413\u0438\u0442\u0445\u0430\u0431 \u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u0430\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0421\u0442\u0430\u0432\u044c \u043b\u0430\u0439\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c, \u0438 \u0438\u0437\u0443\u0447\u0430\u0439 \u0442\u0440\u0435\u043d\u0434\u044b. \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0441\u044f \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 \u043c\u0435\u043b\u043a\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439 \u043f\u0440\u043e Readme. \u041f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0448\u044c \u0440\u0430\u0434, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u044b \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439.
  • \u0412\u0435\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u043c\u0435\u0442\u043e\u043a. \u041e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442. \u0422\u0435\u0431\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0433\u043b\u043e\u0449\u0430\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u044b \u0437\u0430\u0431\u0443\u0434\u0435\u0448\u044c \u0443\u0436\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0434\u0435\u043d\u044c. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0441\u0432\u043e\u0435\u043c\u0443 \u043c\u043e\u0437\u0433\u0443, \u043d\u0430\u0447\u043d\u0438 \u0432\u0435\u0441\u0442\u0438 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0435 ZettelKasten, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 notion.io https://habr.com/ru/post/509756/.
  • \u0411\u0443\u0434\u044c \u0432 \u043a\u0443\u0440\u0441\u0435. Java \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043e\u0442 \u0432\u0430\u0436\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439, \u0442\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0445 \u0447\u0438\u0442\u0430\u0442\u044c. \u041d\u0430\u0447\u043d\u0438 \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u043d\u0430 \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u0443\u044e \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0443 Java Annotated \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432.
"},{"location":"#_3","title":"\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435","text":"

\u0415\u0441\u043b\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u043d\u044c\u043a\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043d\u0438\u0433\u0438 \u043b\u0443\u0447\u0448\u0435 \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043a\u0430\u043a\u0438\u0435 \u043a\u0443\u0440\u0441\u044b \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c. \u0417\u0430\u0431\u043e\u0442\u043b\u0438\u0432\u044b\u0435 \u043b\u044e\u0434\u0438 \u0440\u0438\u0441\u0443\u044e\u0442 \u0434\u043e\u0440\u043e\u0436\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u044b \u0438, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0440\u0438 \u0438 \u0441\u043b\u0435\u0434\u0443\u0439 \u0433\u0430\u0439\u0434\u0430\u043c. \u041d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0445 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e! \u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043c\u0438\u0440 backend-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442 \u0442\u0435\u0431\u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0443\u0447\u0435 \u0432\u0435\u0449\u0435\u0439, \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0412\u0430\u0441\u0438\u043b\u0438\u0439, \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0432 \u0432\u043e \u0432\u0441\u0451\u043c \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043e\u0447\u0435\u043d\u044c \u0441\u043a\u043e\u0440\u043e \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0435\u0441\u043f\u043e\u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c, \u0433\u0440\u0443\u0441\u0442\u044c \u0438 \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u0435.

\u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u0441\u0442\u0440\u0430\u0448\u043d\u043e. \u0423\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e, \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0435 \u043b\u0443\u0447\u0448\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b.

"},{"location":"cicd/","title":"CI/CD","text":""},{"location":"cicd/#cicd","title":"\u041e\u0441\u043d\u043e\u0432\u044b CI/CD","text":"

\u0420\u0430\u043d\u044c\u0448\u0435, \u043a\u043e\u0433\u0434\u0430 \u043c\u0438\u0440 \u0431\u044b\u043b \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u043a\u0440\u0443\u043f\u043d\u044b\u043c\u0438 \u0440\u0435\u043b\u0438\u0437\u0430\u043c\u0438 (\u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0430\u0436\u0435 \u0440\u0430\u0437 \u0432 \u0433\u043e\u0434), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043f\u0430\u0442\u0447\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043b\u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u0435 \u0442\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e.

\u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c. \u041d\u0430\u0448\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u0435 \u0442\u0430\u043a\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0434\u043b\u044f \u043d\u0438\u0445 \u0444\u0438\u0447\u0443. \u041e\u043d\u0438 \u0445\u043e\u0442\u044f\u0442 \u0435\u0451 \u0437\u0434\u0435\u0441\u044c \u0438 \u0441\u0435\u0439\u0447\u0430\u0441. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u0438\u043b\u0438\u0441\u044c \u043f\u043e\u0434 \u044d\u0442\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435. \u0415\u0441\u043b\u0438 \u043c\u044b \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e, \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e? \u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u0435\u0441\u0442\u044c \u043a\u043e\u0434, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043d\u0438\u043c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0443\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e. \u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f.

\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0437\u0430\u043f\u0443\u0448\u0438\u043b \u043d\u043e\u0432\u0443\u044e \u0444\u0438\u0447\u0443? \u041f\u043e\u0440\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0432\u0435\u0436\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u044b, \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b. \u0412\u0441\u0435 \u044d\u0442\u0430\u043f\u044b \u043f\u0440\u043e\u0448\u043b\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e? \u0417\u043d\u0430\u0447\u0438\u0442, \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u0434 \u0441\u0442\u0430\u0431\u0438\u043b\u0435\u043d \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432, \u0433\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0442 \u0442\u0430\u043a\u0443\u044e \u0434\u043e\u043b\u0433\u043e\u0436\u0434\u0430\u043d\u043d\u0443\u044e \u0444\u0438\u0447\u0443 \u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0432\u0435\u0441\u0435\u043b\u0435\u0435 \u043f\u043e\u043d\u0435\u0441\u0443\u0442 \u0431\u0438\u0437\u043d\u0435\u0441\u0443 \u0441\u0432\u043e\u0438 \u0434\u0435\u043d\u044c\u0433\u0438. \u0412\u0441\u0435 \u044d\u0442\u0438 \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0431\u0435\u0440\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438. \u041e\u0442 \u043d\u0430\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043d\u0430 \u0431\u0435\u0440\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u043d\u0430 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u0435, \u043b\u0438\u0448\u044c \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u044f \u043b\u044e\u0434\u0435\u0439, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a.

\u0417\u0432\u0443\u0447\u0438\u0442 \u043a\u0430\u043a \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u0440, \u0433\u0434\u0435 \u0432\u0441\u0435 \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u044b, \u043d\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u0436\u0438\u0437\u043d\u0438 \u0432\u0441\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0412\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u00ab\u041d\u043e\u00bb \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043d\u043e\u0441\u0438\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0432\u044b. \u041d\u043e \u0441\u0430\u043c\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f CI/CD \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f DevOps, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432. \u0422\u044b \u043d\u0430\u0439\u0434\u0435\u0448\u044c \u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435.

"},{"location":"cicd/#jenkins","title":"Jenkins","text":"

\u0414\u0436\u0435\u043d\u043a\u0438\u043d\u0441 \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438. \u0427\u0442\u043e \u0435\u0433\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c? \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u043d \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0438 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043e\u043d \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0439 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u0442\u043d\u044f\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u041d\u0435 \u043d\u0430\u0448\u0435\u043b \u043d\u0443\u0436\u043d\u0443\u044e? \u0412\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u044e, \u0432\u0435\u0434\u044c Jenkins \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 Java. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043d\u0430\u0448\u0438\u0445 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u043d\u0430 Groovy, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.

\u0418\u0437 \u043c\u0438\u043d\u0443\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u0448\u044c, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u043c\u0443. \u0421\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0441\u0442\u0438, \u0443\u0432\u044b.

\u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u0448\u0430\u0433\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0439 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0433\u0430\u0439\u0434\u0443 \u0438 \u043e\u0447\u0435\u043d\u044c \u0441\u043a\u043e\u0440\u043e \u0442\u0432\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0443\u0447\u0438\u0442\u0441\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f. \u041d\u0443 \u043d\u0435 \u0447\u0443\u0434\u043e \u043b\u0438?

"},{"location":"containers/","title":"\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f","text":""},{"location":"containers/#_1","title":"\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b","text":"

\u0412 \u0441\u043c\u0443\u0442\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0430 \u0442\u043e\u0440\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0434, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u0447\u043a\u0430\u043c\u0438. \u0422\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438: \u0445\u043e\u0447\u0435\u0448\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0430 \u0435\u0439 \u043d\u0443\u0436\u0435\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 .NET. \u0410 \u0435\u043c\u0443 \u0442\u043e\u0436\u0435 \u0447\u0442\u043e-\u0442\u043e \u043d\u0443\u0436\u043d\u043e. \u0418 \u0442\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043f\u043e\u043a\u0430, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443.

\u0410 \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443? \u0410 \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u041e\u0421? \u0421\u043e \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u043c \u0438\u043d\u043a\u0430\u043f\u0443\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0441\u0440\u0435\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0432\u043d\u0443\u0442\u0440\u0438 \u0447\u0435\u0440\u043d\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0441\u0430\u043c\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0443\u0441\u043e\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 \u0438 \u0434\u043e\u043f. \u0441\u043e\u0444\u0442\u043e\u043c, \u0432\u0441\u0451 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043e \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u043a\u043e\u043c\u0443 \u043c\u0435\u0448\u0430\u0442\u044c. \u0423\u0434\u0430\u043b\u0438\u043b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c \u0443\u0435\u0434\u0435\u0442 \u0432 \u043d\u0435\u0431\u044b\u0442\u0438\u0435 \u0432\u0441\u044f \u0435\u0433\u043e \u043e\u0431\u0432\u044f\u0437\u043a\u0430. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u043c \u0432\u0435\u0440\u0441\u0438\u0439 \u0443 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u041f\u041e. \u0421\u0447\u0430\u0441\u0442\u044c\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445, \u0434\u0430\u0440\u043e\u043c \u0438 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0443\u0439\u0434\u0435\u0442 \u043e\u0431\u0438\u0436\u0435\u043d\u043d\u044b\u043c.

\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438, \u0443 \u0434\u0436\u0430\u0432\u0438\u0441\u0442\u043e\u0432 \u0435\u0449\u0451 \u0432 \u0431\u043e\u0440\u043e\u0434\u0430\u0442\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0431\u044b\u043b\u0438 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u044b \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u0440\u043e \u044d\u0442\u043e, \u043d\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0443 \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0447\u0430\u0441\u0442\u044c\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u0438 \u043e\u043d\u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u0441\u0432\u043e\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0418\u0437 \u0442\u0435\u0445, \u0447\u0442\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043d\u0430 \u0441\u043b\u0443\u0445\u0443, \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c Docker \u0438 Kubernetes.

"},{"location":"containers/#docker","title":"Docker","text":"

Docker, \u0435\u0441\u043b\u0438 \u043f\u043e \u0443\u043c\u043d\u043e\u043c\u0443, \u2014 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043d\u0430\u0448\u0438\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438. \u041c\u044b \u0435\u0439 \u0434\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0430 \u043e\u043d\u0430 \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a \u0440\u0430\u0431\u043e\u0442\u0435. \u0421\u0443\u0442\u044c \u0441\u0430\u043c\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043a\u0430\u043a \u0442\u043e\u043f\u043e\u0440: \u043c\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u041e\u0421, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435). \u0412\u0435\u0441\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0435\u043a\u0430\u0435\u043c \u044d\u0442\u043e \u043a\u0430\u043a \u0441\u043b\u043e\u0435\u043d\u044b\u0439 \u043f\u0438\u0440\u043e\u0433. \u0421\u043e\u0431\u0440\u0430\u043b \u0442\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 Ubuntu \u0438 \u0440\u0430\u0434\u0443\u0435\u0448\u044c\u0441\u044f \u0436\u0438\u0437\u043d\u0438, \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0410 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u0441\u0442\u0430\u0442\u044c \u043c\u043e\u0434\u043d\u044b\u043c \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0443\u0431\u0443\u043d\u0442\u0443 \u043d\u0430 alpine, \u043f\u043e\u043c\u0435\u043d\u044f\u043b \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a \u0432 \u0441\u0432\u043e\u0435\u043c \u0444\u0430\u0439\u043b\u0435 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0440\u0430\u0434\u0443\u0435\u0448\u044c\u0441\u044f \u0436\u0438\u0437\u043d\u0438. Docker \u0445\u043e\u0440\u043e\u0448 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.

\u041f\u043e\u043c\u043d\u0438, \u0447\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0435\u0440 \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0440\u0430\u0437\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043a\u0443\u0447\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0414\u043b\u044f \u0442\u0432\u043e\u0438\u0445 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u044d\u0442\u043e \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e, \u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0447\u0435\u0433\u043e-\u0442\u043e \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0433\u043e, \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u043d\u0430 SRE-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 / \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

\u041f\u043e \u0443\u0447\u0435\u0431\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c \u043e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430:

  • Jeff Nickolof. Docker in Action. \u0421\u0435\u0440\u0438\u044f \u00abin Action\u00bb \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0436\u0430\u0442\u0430\u044f (\u043d\u043e \u043d\u0435 \u0447\u0435\u0440\u0435\u0441\u0447\u0443\u0440), \u043f\u043e \u0441\u0430\u043c\u044b\u043c \u0440\u0430\u0437\u043d\u044b\u043c \u0442\u0435\u043c\u0430\u043c. \u0414\u043e\u043a\u0435\u0440 \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0448\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f, \u0434\u0430\u043d\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u0442\u0435\u0431\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442;
  • \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u041a\u0443\u0434\u0430 \u0443\u0436 \u0431\u0435\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0445\u043e\u0440\u043e\u0448\u043e, \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u0433\u0430\u0439\u0434\u043e\u0432, \u043d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0441\u044f \u0442\u0443\u0434\u0430 \u043f\u043e\u0447\u0430\u0449\u0435 \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c.

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0448\u044c\u0441\u044f \u0441 \u0443\u0447\u0435\u0431\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u043a\u0435\u0440\u0430 \u043b\u044e\u0431\u043e\u0435 \u0441\u0432\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 Heroku. \u0413\u0430\u0439\u0434 \u043f\u043e \u0434\u0435\u043f\u043b\u043e\u044e \u0434\u043e\u043a\u0435\u0440-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432 Heroku, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c.

"},{"location":"containers/#kubernetes","title":"Kubernetes","text":"

\u041e\u0434\u0438\u043d \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u2014 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u044d\u0442\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u043e. \u041d\u043e \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u0434\u0434\u0430\u043b\u0438\u0441\u044c \u0432\u043e\u043b\u043d\u0435 \u0445\u0430\u0439\u043f\u0430 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0438\u0437 \u0432\u0441\u0435\u0445 \u0449\u0435\u043b\u0435\u0439 \u043b\u0435\u0437\u0443\u0442 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b? \u0427\u0442\u043e, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0443 \u043d\u0430\u0441 \u0434\u0435\u0441\u044f\u0442\u043a\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u043e\u0442\u043d\u0438? \u041a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u043e\u043c \u0438 \u043d\u0435 \u0441\u043e\u0439\u0442\u0438 \u0441 \u0443\u043c\u0430? \u0417\u0434\u0435\u0441\u044c \u043a \u043d\u0430\u043c \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0434\u0435\u0442 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440 Kubernetes \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0443\u0431\u0435\u0440. \u041f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u0442\u0435\u0440\u043c\u0438\u043d\u0443 \u00ab\u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u00bb \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435 \u0437\u0430 \u043d\u0430\u0448\u0438\u043c \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c, \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435, \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0443\u043f\u0430\u043b \u0438 \u0434\u0430\u0436\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438.

\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0438\u043b\u043e\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u043d\u0430\u044f \u0431\u043e\u043b\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0441 \u043a\u0443\u0431\u0435\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u2014 SRE-\u0438\u043d\u0436\u0435\u043d\u0435\u0440. SRE \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0443\u043c\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438 DevOps. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435, \u043c\u043e\u0436\u0435\u0448\u044c \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u043e\u0439 \u043e\u0442 Google, \u0433\u0434\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0445 \u0432\u0438\u0434\u0435\u043d\u044c\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u0438.

\u041d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0442\u0435\u0431\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043a\u0443\u0431\u0435\u0440 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0447\u0442\u043e \u043e\u043d \u043a\u043b\u0430\u0441\u0441\u043d\u044b\u0439 \u0438 \u0435\u0433\u043e \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0431\u0435\u0437 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u043f\u044b\u0442\u0430.

"},{"location":"eventually/","title":"\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 ?","text":""},{"location":"eventually/#_1","title":"\u041d\u0430\u043f\u0443\u0442\u0441\u0442\u0432\u0438\u0435","text":"

\u0415\u0441\u043b\u0438 \u0442\u044b \u0441\u043c\u043e\u0433 \u043e\u0441\u0438\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u0442\u0435\u043c\u044b, \u043c\u043e\u0436\u0435\u0448\u044c \u0441\u043e\u0431\u043e\u0439 \u0433\u043e\u0440\u0434\u0438\u0442\u044c\u0441\u044f (\u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0433\u043e\u0440\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u043e\u0431\u043e\u0439 \u043c\u043e\u0436\u0435\u0448\u044c \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435). \u0412 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043c\u044b \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043d\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442 \u0432 \u043c\u0435\u043b\u044c\u0447\u0430\u0439\u0448\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u044f\u0445. \u0415\u0433\u043e \u0446\u0435\u043b\u044c \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u0431\u044f \u043a\u0440\u0430\u0441\u043d\u0443\u044e \u043d\u0438\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u044f \u043f\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c. \u0415\u0441\u0442\u044c \u0435\u0449\u0451 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0432\u0430\u0436\u043d\u044b\u0445 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0442\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0442\u044b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0448\u044c\u0441\u044f. \u0412\u044b\u0431\u0440\u0430\u0432 \u043a\u0430\u0440\u044c\u0435\u0440\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0442\u044b \u043e\u0431\u0440\u0435\u0447\u0435\u043d \u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0441\u0432\u043e\u0435\u0439 \u043a\u0430\u0440\u044c\u0435\u0440\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0439\u0441\u044f \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435. \u0423 \u0442\u0435\u0431\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f!

"},{"location":"eventually/#_2","title":"\u0421\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f","text":"

\u0415\u0441\u043b\u0438 \u0442\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432 \u043a \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0442\u0440\u0443\u0434\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443, \u0442\u043e \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0420\u0435\u0441\u0443\u0440\u0441. \u041f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u043e\u043d \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0442\u0435\u0431\u0435 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0435\u043b\u0435\u0433\u043a\u043e\u043c \u0434\u0435\u043b\u0435.

"},{"location":"hello-new-world/","title":"\u0412\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u0432\u043e \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0439 \u043c\u0438\u0440","text":""},{"location":"hello-new-world/#_1","title":"\u0422\u0430\u043a \u0434\u0435\u0440\u0436\u0430\u0442\u044c","text":"

\u0415\u0441\u043b\u0438 \u0442\u044b \u0434\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430, \u043c\u044b \u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u043f\u043e\u0436\u0438\u043c\u0430\u0435\u043c \u0442\u0435\u0431\u0435 \u0440\u0443\u043a\u0443. \u041e\u0441\u0438\u043b\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0438 \u043d\u0435 \u0441\u0434\u0430\u0442\u044c\u0441\u044f \u2014 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u043d\u0430\u0448\u0435 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f. \u0418\u043c\u0435\u0439 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 Core \u0442\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043d\u0430\u0437\u0443\u0431\u043e\u043a, \u0442\u043e \u0437\u043d\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u0440\u044c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0434\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e. \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u043a\u0430\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u043d\u043e, \u0443\u0432\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435.

"},{"location":"hello-new-world/#web-","title":"Web-\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430","text":"

\u041a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u043c web-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u043f\u0430\u0443\u0442\u0438\u043d\u0435. \u0418 \u0445\u043e\u0442\u044f \u0431\u0430\u0437\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u0430\u044e\u0442 \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0435, \u0443\u0431\u0435\u0434\u0438\u0441\u044c, \u0447\u0442\u043e \u0442\u044b \u043f\u043e\u043c\u043d\u0438\u0448\u044c/\u0437\u043d\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 JSON, \u0447\u0435\u043c RESTful API \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 SOAP, \u043a\u0430\u043a\u0438\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 HTTP-\u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0448\u0442\u0443\u043a\u0438. \u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0442\u044b \u043d\u0435 \u0432\u043f\u0430\u0434\u0435\u0448\u044c \u0432 \u0441\u0442\u0443\u043f\u043e\u0440 \u043e\u0442 \u0441\u043b\u043e\u0432\u0430 \"endpoint\".

"},{"location":"hello-new-world/#_2","title":"\u0421\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438","text":"

\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0434\u043a\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043f\u0430\u0440\u043e\u0447\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0442\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0435\u0433\u043e \u0441\u0431\u043e\u0440\u043a\u0430/\u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0430, \u0432\u0441\u0451 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0438. \u041e\u043d\u0438 \u0431\u0435\u0440\u0443\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u043d\u0443\u0434\u043d\u0443\u044e \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u0442\u044f\u0436\u0435\u043b\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u0447\u0442\u043e\u0431\u044b \u0442\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u043b\u0441\u044f \u043f\u043e\u0434 \u0433\u0440\u0443\u0437\u043e\u043c JAR hell. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0434\u043b\u044f Java \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438:

  1. Gradle. \u041c\u043e\u0434\u043d\u043e, \u043c\u043e\u043b\u043e\u0434\u0435\u0436\u043d\u043e, \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u0438\u043b\u0434-\u0444\u0430\u0439\u043b\u0430 \u043d\u0430 Groovy \u0438\u043b\u0438 Kotlin DSL. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0437\u0434\u0435\u0441\u044c.
  2. Maven. \u041f\u043e\u0447\u0442\u0438 \u043d\u0435\u0441\u0442\u0430\u0440\u0435\u044e\u0449\u0430\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0430. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u0438\u043b\u0434\u0430 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 XML, \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u043a\u0443\u0441, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0437\u0434\u0435\u0441\u044c.

\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439 \u043e\u0431\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430, \u043e\u0441\u0442\u0430\u043d\u044c\u0441\u044f \u043d\u0430 \u0442\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0435\u0431\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f. \u042f\u0432\u043d\u043e\u0433\u043e \u0444\u0430\u0432\u043e\u0440\u0438\u0442\u0430 \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u043d\u0435\u0442, Gradle \u0447\u0430\u0441\u0442\u043e \u0440\u0443\u0433\u0430\u044e\u0442 \u0437\u0430 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, Maven \u0437\u0430 \u043c\u0435\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u043e\u0441\u0442\u044c. \u041d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043e\u043d\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e\u0447\u0442\u0438 50/50, \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438 \u0441\u0430\u043c. \u041c\u044b \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u043c Maven, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u043e\u0432\u0438\u0447\u043a\u0443 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u043d\u0438\u043c. \u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432\u0441\u0435 \u0442\u0432\u043e\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0431\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438. \u041e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0438 \u0442\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c, \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c.

"},{"location":"hello-new-world/#_3","title":"\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","text":"

\u0422\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u043d\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0431\u0435 \u0434\u0430\u0441\u0442 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u0440\u0443\u043f\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430. \u0418\u0445 \u0431\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432, \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041c\u044b \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0433\u043e (unit) \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c \u0434\u043b\u044f unit \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f JUnit. \u041d\u0430\u0447\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432 \u044d\u0442\u043e\u0442 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0438\u0440 \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c

  • \u0441\u043e \u0441\u0431\u043e\u0440\u043d\u0438\u043a\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 Baeldung \u0437\u0434\u0435\u0441\u044c;
  • \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u0430\u0439\u0434\u043e\u0432 JUnit.
"},{"location":"hello-new-world/#_4","title":"\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","text":"

\u0427\u0435\u043c \u043a\u0440\u0443\u043f\u043d\u0435\u0435 \u0442\u0432\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0437\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0432 \u043d\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442. \u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u0441\u0431\u043e\u0440 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043b\u043e\u0433\u043e\u0432. \u0421 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Java \u0432\u0441\u0451 \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e. \u0418\u0445 \u043c\u043d\u043e\u0433\u043e, \u0443 \u043d\u0438\u0445 \u0440\u0430\u0437\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430 \u0435\u0449\u0451 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0432 \u0437\u0430\u0431\u0430\u0432\u043d\u044b\u0445 \u0444\u0440\u0430\u043d\u043a\u0435\u043d\u0448\u0442\u0435\u0439\u043d\u043e\u0432. \u0418\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e, \u043e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430:

  • Logback;
  • Log4j2;
  • JBoss logging.

\u041f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c SLF4J Simple \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043c\u0430\u043d\u0443\u0430\u043b\u0443. \u0421\u0430\u043c SLF4J \u044d\u0442\u043e \u0444\u0430\u0441\u0430\u0434 \u0434\u043b\u044f \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u0440\u043e\u0434\u0435 \u0442\u0435\u0445, \u0447\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043b\u0438 \u0432\u044b\u0448\u0435, \u043d\u043e \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u0430\u043a\u0440\u043e\u0435\u0442 \u0442\u0432\u043e\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438. \u0418 \u043f\u043e\u043c\u043d\u0438, \u0441 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0432 \u0442\u0432\u043e\u0451\u043c \u043a\u043e\u0434\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e System.out.println, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0437\u0440\u043e\u0441\u043b\u043e\u0435 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.

"},{"location":"hello-new-world/#sql","title":"SQL","text":"

\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 web-\u043c\u0438\u0440 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0431\u0435\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0433\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u0430\u043c \u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u0435\u0431\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 SQL \u0438 \u0443\u043c\u0435\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u0412 \u044d\u0442\u043e\u043c \u0442\u0435\u0431\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442:

  1. \u0422\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043e\u0442 W3Schools;
  2. \u041a\u043d\u0438\u0433\u0430 \u0410\u043b\u0430\u043d\u0430 \u0411\u044c\u044e\u043b\u0438 \u00ab\u0418\u0437\u0443\u0447\u0430\u0435\u043c SQL\u00bb;
  3. \u041f\u0440\u043e\u0440\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0435\u043a \u043d\u0430 SQL-EX;
  4. \u0415\u0441\u043b\u0438 \u0443 \u0442\u0435\u0431\u044f \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a HyperSkill, \u043f\u0440\u043e\u0439\u0434\u0438 \u0440\u0430\u0437\u0434\u0435\u043b \u00abDatabases and SQL\u00bb \u0432\u043e\u0442 \u0442\u0443\u0442;
  5. \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0440\u0435\u043d\u0430\u0436\u0435\u0440 \u043f\u043e SQL \u043d\u0430 Stepik, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0430\u0447\u0435\u0439 \u0442\u0435\u043e\u0440\u0438\u0438.

\u0421\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u0436\u0435\u0434\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435 \u043d\u0430\u0434\u043e, \u043d\u043e \u0443 \u0442\u0435\u0431\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u0432\u0435\u0440\u0442\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u0411\u0414.

"},{"location":"hello-new-world/#_5","title":"\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445","text":"

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0442\u044b \u043e\u0432\u043b\u0430\u0434\u0435\u043b SQL, \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0438\u0441\u0442\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0435\u043b\u0438\u043a\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430:

  1. PostgreSQL/MySQL \u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0421\u0423\u0411\u0414;
  2. H2 \u2014 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u0430\u044f in-memory \u0421\u0423\u0411\u0414, \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0434\u043b\u044f \u0442\u0432\u043e\u0438\u0445 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432;
  3. MongoDB \u2014 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f NoSQL \u0421\u0423\u0411\u0414

\u0427\u0438\u0442\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0442\u043e\u043c\u043d\u044b\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0443\u0442\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u043d\u0438\u043c \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0442\u0435\u0431\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0421\u0423\u0411\u0414 \u0438 \u043a\u0430\u043a \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u044c \u0442\u0430\u0431\u043b\u0438\u0447\u0435\u043a.

"},{"location":"hello-new-world/#jdbc","title":"JDBC","text":"

\u0418\u0442\u0430\u043a, \u0443 \u0442\u0435\u0431\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u044b \u0445\u043e\u0447\u0435\u0448\u044c \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u0435\u0451 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0443\u044e\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0422\u0443\u0442 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0434\u0451\u0442 \u0434\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u0434\u0443\u0448\u043a\u0430 JDBC. JDBC \u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 API (\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u0440\u043e\u0435, \u043d\u043e \u0441\u0443\u043f\u0435\u0440\u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0435), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u0431\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0432\u043e\u0435\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043a\u043e\u0434\u0430. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0448\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043f\u0438\u0448\u0435\u0448\u044c \u0440\u0443\u0447\u043a\u0430\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0448\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043a\u0443\u0447\u0430 \u043b\u0430\u043f\u0448\u0438 try-catch, \u0437\u0430\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0433\u0438\u0431\u043a\u043e. \u0412 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u043c\u0438\u0440\u0435 \u043b\u044e\u0434\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u0438\u043f\u0430 Spring Data, \u043d\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043a\u043e\u0440\u043d\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0441\u044f \u043d\u0430 \u0434\u043e\u0441\u0443\u0433\u0435 \u0441 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c Oracle: JDBC Basics

"},{"location":"hello-new-world/#orm","title":"ORM","text":"

\u0415\u0441\u043b\u0438 \u0442\u044b \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0441\u044f \u043e \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0441\u043a\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445, \u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u0412\u043e\u0442 \u0436\u0438\u0432\u0443\u0442 \u0443 \u0442\u0435\u0431\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0432 \u0437\u0430\u0431\u0430\u0432\u043d\u044b\u0435 \u043a\u043b\u0443\u0431\u043a\u0438, \u0438 \u0432 \u0443\u0441 \u043d\u0435 \u0434\u0443\u044e\u0442. \u0418 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0431\u0430\u0440\u0440\u0438\u043a\u0430\u0434, \u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441 \u0433\u043e\u0440\u044f\u0449\u0438\u043c\u0438 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u0438 \u0432\u043e\u0440\u043e\u0445\u043e\u043c Java \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 \u0442\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0418 \u0445\u043e\u0447\u0435\u0448\u044c \u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0442\u044b SQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 List<MyObject>, \u0430 \u043d\u0435 JDBC-\u0432\u044b\u0431\u043e\u0440\u043a\u0443, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0440\u0443\u043a\u0430\u043c\u0438, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u043a\u0430\u0441\u0442\u043e\u0432\u0430\u0442\u044c \u0442\u0438\u043f\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043e \u0438 \u043d\u0430\u043b\u0435\u0432\u043e \u043a\u0430\u043a \u0437\u0430\u043f\u0440\u0430\u0432\u0441\u043a\u0438\u0439 \u043a\u043e\u043b\u0434\u0443\u043d.

\u0422\u0430\u043a\u0438\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u044b\u0442\u0430\u043b \u043d\u0435 \u0442\u044b \u043f\u0435\u0440\u0432\u044b\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u043c\u043d\u044b\u0435 \u043b\u044e\u0434\u0438 \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e ORM. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u043c\u044b\u0441\u043b ORM \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u0437\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f \u0442\u044f\u0436\u0435\u043b\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0442\u0432\u043e\u0438\u0445 Java-\u0442\u0438\u043f\u043e\u0432 \u0432 \u0442\u0438\u043f\u044b \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0422\u044b \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0430\u043d\u043d\u043e\u0442\u0438\u0440\u0443\u0435\u0448\u044c \u0441\u0432\u043e\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0434\u043b\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u043a\u0430\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u0442\u044b \u0445\u043e\u0447\u0435\u0448\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438. \u041d\u0430\u043f\u0438\u0441\u0430\u043b save(ListWithMyObjects), \u0430 \u043e\u043d \u0441\u0430\u043c \u043a\u0430\u043a \u043f\u043e \u0432\u043e\u043b\u0448\u0435\u0431\u0441\u0442\u0432\u0443, \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 SQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u043b \u0434\u0430\u043d\u043d\u044b\u0435.

\u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0445\u043e\u0440\u043e\u0448\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u0430\u0432\u0434\u043e\u0439, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438? \u0422\u0430\u043a \u0438 \u0435\u0441\u0442\u044c. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0433\u043e\u0442\u043e\u0432\u043a\u0430 ORM \u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u043d\u0430\u044f \u0431\u043e\u043b\u044c \u0438 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u0442\u0440\u0438\u0435 \u043d\u043e\u0436\u0430, \u043d\u043e \u0442\u0435\u0431\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043a\u043e\u0441\u043d\u0443\u0442\u044c\u0441\u044f.

"},{"location":"hello-new-world/#hibernate","title":"Hibernate","text":"

\u041e\u043d \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u0438\u0431\u0435\u0440. \u0421\u0430\u043c\u044b\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 Java-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f ORM \u0437\u0430\u0434\u0430\u0447. \u041c\u043e\u0440\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043c\u043e\u0440\u0435 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u043c\u043d\u0435\u0439, \u043c\u043e\u0440\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u0439. \u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0435\u0433\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043c\u0430\u043b\u043e \u043a\u0442\u043e \u0443\u043c\u0435\u0435\u0442, \u043d\u043e \u043f\u0440\u0438\u043e\u0431\u0449\u0438\u0442\u044c\u0441\u044f \u043d\u0430\u0434\u043e. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043f\u043e \u043d\u0435\u043c\u0443 \u0432\u0435\u043b\u0438\u043a\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u0438:

  • \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 Hibernate-\u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u043e\u0432, Vlad Mihalcea, \u0432\u0435\u0434\u0435\u0442 \u0443\u044e\u0442\u043d\u044b\u0439 \u0441\u0430\u0439\u0442\u0438\u043a \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0431\u0437\u043e\u0440\u044b \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u043c\u043d\u0435\u0439. \u041f\u043e\u0434\u043f\u0438\u0448\u0438\u0441\u044c, \u0447\u0438\u0442\u0430\u0439, \u043f\u0440\u0438\u043e\u0431\u0449\u0430\u0439\u0441\u044f. \u041a\u043e\u0433\u0434\u0430 \u0443 \u0442\u0435\u0431\u044f \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u043e \u0445\u0438\u0431\u0435\u0440\u0443, \u0412\u043b\u0430\u0434 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0439\u0442\u0438 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c;
  • \u0411\u0430\u0443\u044d\u0440, \u041a\u0438\u043d\u0433, \u0413\u0440\u0435\u0433\u043e\u0440\u0438. Java Persistence API \u0438 Hibernate. \u041e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0442\u044f\u0436\u0435\u043b\u043e, \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u044f\u0436\u0435\u043b\u043e, \u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u044a\u0435\u043c\u043d\u043e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0442\u0435\u043c\u044b. \u0427\u0438\u0442\u0430\u0442\u044c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0445\u043e\u0434\u043e\u0432, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u043e\u0441\u0438\u043b\u0438\u0442\u044c;
  • \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u0432 \u043c\u0435\u0440\u0443 \u0440\u0430\u0437\u0436\u0435\u0432\u0430\u043d\u043e, \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438. \u0426\u0435\u043b\u0438\u043a\u043e\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e.
"},{"location":"hello-new-world/#_6","title":"\u041a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438","text":"

Java-\u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0439\u043d\u044b\u0435 \u0441\u044a\u0435\u0437\u0434\u044b \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u043b\u0435\u0442\u0430\u0440\u0438\u0435\u0432 \u0434\u0436\u0430\u0432\u0438\u0441\u0442\u043e\u0432. \u041c\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u0448\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0431\u043e\u0440\u043e\u0437\u0434\u044f\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u044b \u043e\u0431\u043b\u0430\u043a\u043e\u0432, \u0440\u0430\u0437\u0431\u043e\u0440 \u043a\u0438\u0448\u043e\u0447\u043a\u043e\u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.

\u0421\u0430\u043c\u043e\u0435 \u0446\u0435\u043d\u043d\u043e\u0435 \u0432 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f\u0445 \u2014 \u044d\u0442\u043e \u043e\u0431\u043c\u0435\u043d \u043e\u043f\u044b\u0442\u043e\u043c \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0431\u0440\u0430\u0442\u044c\u044f\u043c\u0438 \u043f\u043e \u0446\u0435\u0445\u0443. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0447\u0438 \u0441 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 Java-\u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u044f\u043c\u0438, \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c, \u0447\u0435\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u0434\u044b\u0448\u0430\u0442, \u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u043e\u0441 \u043f\u043e \u0432\u0435\u0442\u0440\u0443. \u0412 2021 \u0433\u043e\u0434\u0443 \u0432\u0441\u0451 \u044d\u0442\u043e \u0443\u0448\u043b\u043e \u0432 \u043e\u043d\u043b\u0430\u0439\u043d, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0431\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439, \u043d\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u043c\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u0430\u043c\u0438. \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0434\u0432\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432 \u043d\u0430\u0448\u0438\u0445 \u043a\u0440\u0430\u044f\u0445 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438:

  • Joker;
  • JPoint.

\u0414\u0432\u0430 \u0431\u0440\u0430\u0442\u0430 \u0430\u043a\u0440\u043e\u0431\u0430\u0442\u0430, \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432 \u041f\u0438\u0442\u0435\u0440\u0435, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0432 \u041c\u043e\u0441\u043a\u0432\u0435. \u0414\u043e\u043a\u043b\u0430\u0434\u044b \u0447\u0430\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f, \u043d\u043e \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u0435 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438, \u0431\u043b\u0430\u0433\u043e \u043e\u043d\u0438 \u0440\u0430\u0437\u043d\u0435\u0441\u0435\u043d\u044b \u043f\u043e \u0441\u0435\u0437\u043e\u043d\u0430\u043c. \u0412\u0438\u0434\u043e\u0441\u044b \u0441 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432 \u0441\u0442\u0430\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0432\u0441\u0435\u043c \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u043c, \u043a \u0447\u0435\u043c\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u043e\u0431\u0449\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u044e\u0442\u0443\u0431\u0435.

"},{"location":"java-core-advanced/","title":"Java Advanced","text":""},{"location":"java-core-advanced/#java-core-advanced","title":"Java Core Advanced","text":"

\u0418\u0442\u0430\u043a, \u0442\u044b \u0443\u0436\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u0432\u043b\u0430\u0434\u0435\u0435\u0448\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u044f\u0437\u044b\u043a\u0430. \u0411\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0440\u0435\u0448\u0430\u0435\u0448\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u0437\u043d\u0430\u0435\u0448\u044c \u0441\u043e\u0441\u0442\u0430\u0432 Collections Framework, \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c \u043e\u0442\u043b\u0438\u0447\u0438\u0435 HashMap \u043e\u0442 TreeMap \u0438 \u0434\u0430\u0436\u0435 \u0437\u043d\u0430\u0435\u0448\u044c \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0438\u043c\u044b \u0438 \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0440\u0438\u043c\u044b. \u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u044b\u0440\u043d\u0443\u0442\u044c \u0432 Core \u0435\u0449\u0451 \u0433\u043b\u0443\u0431\u0436\u0435.

"},{"location":"java-core-advanced/#_1","title":"\u041a\u043d\u0438\u0433\u0438","text":""},{"location":"java-core-advanced/#java","title":"\u0420\u0430\u0443\u043b\u044c \u0423\u0440\u043c\u0430, \u041c\u0430\u0440\u0438\u043e \u0424\u0443\u0441\u043a\u043e, \u0410\u043b\u0430\u043d \u041c\u0430\u0439\u043a\u0440\u043e\u0444\u0442. \u00ab\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a Java\u00bb","text":"

\u0412\u044b\u0445\u043e\u0434 Java 8 \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443 Java \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430. Stream API, default \u043c\u0435\u0442\u043e\u0434\u044b, \u043b\u044f\u043c\u0431\u0434\u044b \u2014 \u0431\u0435\u0437 \u044d\u0442\u0438\u0445 \u0432\u0435\u0449\u0435\u0439 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443. \u0412 \u044d\u0442\u043e\u0439 \u043a\u043d\u0438\u0433\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u0441\u0435 \u043a\u0438\u043b\u043b\u0435\u0440 \u0444\u0438\u0447\u0438 Java 8. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u0432\u0440\u043e\u0434\u0435 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438, \u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0435\u0440\u043d\u0438\u0441\u044c \u043a \u043d\u0438\u043c \u043f\u043e\u0437\u0436\u0435.

\u041e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043a\u043e\u0434\u0430 \u0432 \u043f\u0435\u0440\u0432\u044b\u0445 \u0433\u043b\u0430\u0432\u0430\u0445.

"},{"location":"java-core-advanced/#java-concurrency","title":"\u0411\u0440\u0430\u0439\u0430\u043d \u0413\u0435\u0442\u0446. \u00abJava Concurrency \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435\u00bb","text":"

\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 web \u2014 \u044d\u0442\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0442\u044b\u0441\u044f\u0447\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u0438 \u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0427\u0442\u043e\u0431\u044b \u0442\u0432\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0433\u043b\u043e \u0443\u0442\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443, \u0442\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0442\u0430\u0442\u044c \u0434\u0436\u0435\u0434\u0430\u0435\u043c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0433\u043e/\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u0430 \u043a\u043d\u0438\u0433\u0430 must-read \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u043d\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f Java 5, \u0432\u0441\u0435 \u0435\u0451 \u0441\u043e\u0432\u0435\u0442\u044b \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0438 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c. \u041c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u0442\u044f\u0436\u0435\u043b\u043e, \u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0451 \u0442\u044b \u043e\u0431\u044f\u0437\u0430\u043d.

"},{"location":"java-core-advanced/#_2","title":"\u0410\u0434\u0438\u0442\u044c\u044f \u0411\u0445\u0430\u0440\u0433\u0430\u0432\u0430. \u00ab\u0413\u0440\u043e\u043a\u0430\u0435\u043c \u0430\u043b\u043e\u0433\u0440\u0438\u0442\u043c\u044b\u00bb","text":"

\u041f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0442\u043e\u0433\u043e, \u043a\u043e\u0433\u0434\u0430 \u043b\u0443\u0447\u0448\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438, \u0432\u0435\u0434\u0443\u0442\u0441\u044f \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0434\u0438\u0441\u043f\u0443\u0442\u044b. \u041d\u0430\u0448\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0430\u043c \u0434\u043b\u044f \u0441\u0435\u0431\u044f. \u041d\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044d\u0442\u0443 \u043a\u043d\u0438\u0433\u0443 \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0440\u0430\u043d\u044c\u0448\u0435. \u041e\u043d\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u043f\u0440\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u0432\u0440\u043e\u0434\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432, \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442 \u0442\u0435\u0431\u044f \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u0438\u0434\u0430\u043c\u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u043f\u0440\u043e\u0447\u0438\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0448\u0442\u0443\u043a\u0430\u043c\u0438. \u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u043f\u043e\u0432\u0435\u0440\u044c, \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430 \u043a\u043d\u0438\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0443 \u0442\u0435\u0431\u044f \u043b\u044e\u0431\u043e\u0432\u044c \u043a \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c.

"},{"location":"java-core-advanced/#java_1","title":"(\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e) \u0420\u043e\u0431\u0435\u0440\u0442 \u041b\u0430\u0444\u043e\u0440\u0435. \u00ab\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b Java\u00bb","text":"

\u041c\u043d\u043e\u0433\u0438\u0435 \u043a\u0440\u0438\u0442\u0438\u043a\u0443\u044e\u0442 \u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043d\u0438\u0433\u0443 \u0438\u0437-\u0437\u0430 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f \u043a\u043e\u0434\u0430 \u0438 \u0437\u0430\u043d\u0443\u0434\u043d\u043e\u0439 \u043f\u043e\u0434\u0430\u0447\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0442\u0435\u0431\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043a\u043e\u043f\u043d\u0443\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0447\u0443\u0442\u044c \u043f\u043e\u0433\u043b\u0443\u0431\u0436\u0435, \u043c\u043e\u0436\u0435\u0448\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c.

"},{"location":"java-core-advanced/#java_2","title":"(\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e) \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u041f\u0430\u043b\u0440\u043e\u0433. \u00ab\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 Java\u00bb","text":"

\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0444\u0438\u0448\u0435\u043a Java 9, \u0441\u0442\u0430\u043b\u0430 \u043d\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e \u043d\u0430\u0434 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u044f\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u0415\u0451 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u043e\u0445\u043e\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 (\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0437-\u0437\u0430 \u043b\u0435\u043d\u0438 \u0438 \u043b\u0435\u0433\u0430\u0441\u0438), \u043d\u043e \u0443\u043c\u0435\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u043c \u0431\u043e\u043d\u0443\u0441\u043e\u043c \u043a \u0442\u0432\u043e\u0438\u043c \u043d\u0430\u0432\u044b\u043a\u0430\u043c \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0437\u0430\u0445\u043e\u0447\u0435\u0448\u044c \u043f\u0440\u043e\u0439\u0442\u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e Oracle.

"},{"location":"java-core-advanced/#java_3","title":"(\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e) \u041a\u0435\u043d \u041a\u043e\u0443\u0437\u0435\u043d. \u00ab\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 Java. \u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb","text":"

\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0451 \u0442\u043e\u0436\u0435, \u0447\u0442\u043e \u0432 \u043a\u043d\u0438\u0433\u0435 \u0423\u0440\u043c\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u0441\u0431\u043e\u0440\u043d\u0438\u043a \u043a\u0440\u0430\u0442\u043a\u0438\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432: \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u044b, \u043a\u043e\u043c\u043f\u0430\u0440\u0430\u0442\u043e\u0440\u044b, \u043f\u043e\u0442\u043e\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u00ab\u043d\u043e\u0432\u0438\u043d\u043a\u0438\u00bb Java 8. \u0412\u0441\u0451 \u044d\u0442\u043e \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438. \u041a\u043d\u0438\u0433\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0445\u043e\u0440\u043e\u0448\u0430 \u043a\u0430\u043a \u043a\u0440\u0430\u0442\u043a\u0430\u044f \u0432\u044b\u0436\u0438\u043c\u043a\u0430 \u0438\u043b\u0438 handbook.

"},{"location":"java-core-advanced/#_3","title":"\u0412\u0438\u0434\u0435\u043e","text":""},{"location":"java-core-advanced/#jakob-jenkov-java-concurrency-and-multithreading","title":"Jakob Jenkov, Java Concurrency And Multithreading","text":"

\u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043a\u043d\u0438\u0433\u0435 \u0411\u0440\u0430\u0439\u0430\u043d\u0430 \u0413\u0435\u0442\u0446\u0430 \u043f\u043e \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u043c\u044b \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u043c\u044b \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u044f\u0437\u044b\u043a\u0430/JVM \u0432\u0440\u043e\u0434\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u0434\u043d\u0438\u0445 \u044d\u0442\u0438\u0445 \u0432\u0438\u0434\u0435\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u043e \u043e\u043d\u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0443\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u0438\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0432\u043e\u0451 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0439 \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0432\u0435\u0449\u0438.

"},{"location":"java-core-advanced/#_4","title":"\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b","text":"

\u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0423\u043c\u043d\u044b\u0435 \u043b\u044e\u0434\u0438 \u0432\u044b\u044f\u0432\u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 (\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b) \u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e. \u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u0430\u0436\u043d\u043e \u0438\u0445 \u0437\u043d\u0430\u0442\u044c? \u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u0435\u0431\u0435 \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434, \u0430 \u0442\u0432\u043e\u0438\u043c \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u043c\u043d\u0438, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043f\u0440\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043a\u043e\u0440\u0435\u0435 \u043f\u043b\u043e\u0445\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0447\u0435\u043c \u0445\u043e\u0440\u043e\u0448\u0435\u0439. \u0412\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e \u0432 \u043c\u0435\u0440\u0443, \u0438 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0442\u044b \u043f\u043e\u0439\u043c\u0435\u0448\u044c \u0442\u0443 \u0442\u043e\u043d\u043a\u0443\u044e \u0433\u0440\u0430\u043d\u044c, \u043a\u043e\u0433\u0434\u0430 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0442\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u043b\u0443\u0447\u0448\u0435, \u0430 \u043a\u043e\u0433\u0434\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0432\u0440\u0435\u0434\u044f\u0442.

\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0438 \u0440\u0430\u0437\u043d\u044b\u0445, \u043d\u043e \u0437\u0443\u0431\u0440\u0438\u0442\u044c \u0438\u0445 \u043d\u0435 \u043d\u0430\u0434\u043e. \u041f\u0440\u043e\u0431\u0435\u0433\u0438\u0441\u044c \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438 \u043d\u0430 \u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u0431\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442. \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0442\u0432\u043e\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044f\u043a\u043e\u0440\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442.

\u0418\u0437 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c:

  1. Refactoring guru. \u041c\u043e\u0434\u043d\u043e, \u043c\u043e\u043b\u043e\u0434\u0435\u0436\u043d\u043e, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u044f\u0437\u044b\u043a.
  2. Design Patterns: Elements of Reusable Object-Oriented Software (GoF) \u2014 \u0441\u0443\u0445\u043e\u0439 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b, \u0441\u043c\u043e\u0436\u0435\u0448\u044c \u043e\u0441\u0438\u043b\u0438\u0442\u044c \u2014 \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0448\u044c \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438.
"},{"location":"java-core-advanced/#_5","title":"\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f","text":"

\u041f\u043e\u0434\u043e\u0439\u0434\u0443\u0442 \u0432\u0441\u0451 \u0442\u0435 \u0436\u0435 \u0441\u0430\u0439\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u044d\u0442\u0430\u043f\u0435, \u043d\u043e \u0443\u0436\u0435 \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e. \u0421\u0442\u0430\u0440\u0430\u0439\u0441\u044f \u0440\u0435\u0448\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u00ab\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u0448\u0435\u043a Java: Stream API \u0438 \u043b\u044f\u043c\u0431\u0434\u044b.

"},{"location":"java-core-advanced/#advanced-core","title":"\u041f\u043e\u0434\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u0442\u043e\u0433\u043e\u0432 Advanced Core","text":"

\u041f\u043e\u043c\u043d\u0438\u0448\u044c \u0442\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u044b \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u044d\u0442\u0430\u043f\u0435? \u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435:

  1. \u041f\u043e\u0442\u043e\u043a\u0438 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430 \u0432 Java
  2. \u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f
  3. \u041c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c
  4. \u0428\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f
"},{"location":"java-core/","title":"Java Core","text":""},{"location":"java-core/#java-core-base","title":"Java Core Base","text":"

Java Core \u2014 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430 \u0438 \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb. \u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442, \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u043a \u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0438 \u043d\u0435 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434. \u041d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u0445\u0438\u0442\u0440\u0438\u0442\u044c \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u00ab\u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435\u00bb \u043a\u0443\u0441\u043a\u0438. \u041f\u043e\u0432\u0435\u0440\u044c, \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0442\u0435\u0431\u0435 \u0432\u043e\u0437\u0434\u0430\u0441\u0442\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u0438\u0431\u043e \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0433\u043e\u043d\u044f\u044e\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e Core.

"},{"location":"java-core/#_1","title":"\u041a\u0443\u0440\u0441\u044b","text":"

\u041f\u043e\u043c\u043d\u0438, \u0447\u0442\u043e \u043d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0443\u0440\u0441\u043e\u0432 \u043d\u0435 \u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u0431\u0430\u0437\u0443. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0438\u0445 \u043a\u0430\u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043a\u043d\u0438\u0433\u0430\u043c.

"},{"location":"java-core/#oracle","title":"\u0422\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u044b \u043e\u0442 Oracle","text":"

Oracle \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0430 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0433\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430. \u0415\u0449\u0451 \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. \u0418\u0437 \u043c\u0438\u043d\u0443\u0441\u043e\u0432: \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f java 8, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043e\u0447\u0435\u043d\u044c \u0441\u0436\u0430\u0442\u043e. \u041d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0433\u043b\u044f\u043d\u0438, \u0442\u0430\u043c \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e.

"},{"location":"java-core/#javarush","title":"JavaRush","text":"

\u0412 \u0441\u0442\u0440\u0430\u043d\u0430\u0445 \u0421\u041d\u0413 \u0438 \u0423\u043a\u0440\u0430\u0438\u043d\u0435 \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d \u0432\u0435\u043b\u0438\u043a\u0438\u0439 \u0438 \u0443\u0436\u0430\u0441\u043d\u044b\u0439 JavaRush. \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043f\u0435\u0441\u0442\u0440\u0438\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u043c\u0438 \u0443\u0441\u043f\u0435\u0445\u0430, \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043b\u0435\u0441\u0430\u0440\u044c \u0413\u0440\u0438\u0433\u043e\u0440\u0438\u0439 \u0441\u0442\u0430\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 300\u043a\u043a/\u043d\u0430\u043d\u043e\u0441\u0435\u043a. \u0422\u044b\u0441\u044f\u0447\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447! \u0421\u043e\u0442\u043d\u0438 \u0442\u044b\u0441\u044f\u0447 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439! \u0417\u0430 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u043c\u0435\u0448\u043d\u044b\u0435 \u0434\u0435\u043d\u044c\u0433\u0438 \u0442\u044b \u0441\u043c\u043e\u0436\u0435\u0448\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0436\u0438\u0437\u043d\u044c!

\u0422\u0430\u043a \u0432\u043e\u0442, \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 \u044d\u0442\u043e \u043d\u0435 \u0432\u0435\u0434\u0438\u0441\u044c. JavaRush \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u0434\u0430\u0435\u0442 \u043e\u0442\u0440\u044b\u0432\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0430\u0447\u0435\u0439 \u0442\u0435\u043e\u0440\u0438\u0438, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043b\u044e\u0434\u0438 \u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u044e\u0442 \u0434\u0430\u0436\u0435 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u043a\u0430\u0445. \u0417\u0430\u0434\u0443\u043c\u0430\u0439\u0441\u044f, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043d\u0438\u0433\u0438 \u043e\u043d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0434\u0438\u0439 \u0432\u044b\u0447\u0438\u0442\u043a\u0438 \u0438 \u0440\u0435\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0430 JavaRush \u0442\u0430\u043a\u0438\u043c, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0434\u0435\u043b\u043e, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f. \u041d\u0435 \u0442\u0440\u0430\u0442\u044c \u0437\u0440\u044f \u0432\u0440\u0435\u043c\u044f, \u0434\u0435\u043d\u044c\u0433\u0438 \u0438 \u043d\u0435\u0440\u0432\u044b, \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0442\u044b \u0437\u043d\u0430\u0435\u0448\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u043d\u0430\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0442\u0430\u043c \u0432\u0441\u0451 \u043a\u0440\u0443\u0442\u043e.

"},{"location":"java-core/#stepik","title":"Stepik","text":"

\u0410\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 \u043a\u0443\u0440\u0441\u043e\u0432 \u043e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u0440\u0430\u0437\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430. \u041d\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0441 Java. \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u0443\u0440\u0441.

"},{"location":"java-core/#hyperskill-jetbrains-academy","title":"HyperSkill (JetBrains Academy)","text":"

\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Stepik \u0438 JetBrains. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0440\u0435\u043a\u0438 (\u043a\u0443\u0440\u0441\u044b) \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u0430\u043c: Python, Java, Kotlin, JS.

\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u043c\u0438\u043d\u0438-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432: \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 (\u043e\u0442 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0445 \u043a\u0440\u0435\u0441\u0442\u0438\u043a\u043e\u0432-\u043d\u043e\u043b\u0438\u043a\u043e\u0432 \u0434\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439 \u0441\u043e Spotify \u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0434\u0438\u0439. \u041f\u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u043e\u0440\u0438\u0438, \u043f\u043e \u0442\u0435\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043c\u0435\u043b\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u043a\u0438. \u041a\u0442\u043e-\u0442\u043e \u0441\u043a\u0430\u0436\u0435\u0442, \u0447\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043c\u0430\u0445\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 JavaRush, \u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u0427\u0430\u0441\u0442\u044c \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0441\u043e Stepik, \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0441\u0430\u043c\u0438 \u0441 \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0431\u0435\u0442\u043e\u0439.

\u0422\u0435\u043c \u0443 \u043d\u0438\u0445 \u041e\u0427\u0415\u041d\u042c \u043c\u043d\u043e\u0433\u043e, \u043e\u0442 Java Core \u0434\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432. Core \u043e\u043f\u0438\u0441\u0430\u043d \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0445\u0440\u0430\u043c\u044b\u0432\u0430\u044e\u0442.

\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430 \u00ab\u0440\u0443\u0441\u0441\u043a\u043e\u043c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u00bb, \u0442\u0430\u043a \u0447\u0442\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u0440. \u041f\u043b\u0430\u0442\u043d\u044b\u0439, \u0441 \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c.

\u0418\u0437 \u043c\u0438\u043d\u0443\u0441\u043e\u0432: \u043e\u0447\u0435\u043d\u044c \u0437\u0430\u0434\u0443\u043c\u0447\u0438\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043a\u0443\u0434\u043d\u044b \u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u00ab\u0445\u0430\u043a\u0430\u0442\u044c\u00bb \u0438\u0437-\u0437\u0430 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u2014 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0440\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0435\u043a.

"},{"location":"java-core/#youtube","title":"YouTube","text":"

\u0422\u044b\u0441\u044f\u0447\u0438 \u0438\u043d\u0434\u0443\u0441\u043e\u0432 \u0438 \u0441\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0433\u043e\u0442\u043e\u0432\u044b \u043f\u0440\u0438\u0439\u0442\u0438 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c. \u0417\u0430\u043c\u0430\u043d\u0438\u0432\u0430\u044e\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u043d\u043e \u043f\u043e\u043c\u043d\u0438 \u0447\u0442\u043e \u0437\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u0430\u0432\u0442\u043e\u0440. \u041d\u0430\u0447\u043d\u0438 \u0441 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u0443\u0440\u0441\u0430 \u0422\u0430\u0433\u0438\u0440\u0430 \u0412\u0430\u043b\u0435\u0435\u0432\u0430, \u0432\u0435\u0441\u043d\u0430 2020. \u0422\u0443\u0442\u044c. \u0415\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0436\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u0443\u0440\u0441\u0430, \u0432\u044b\u0448\u0435\u0434\u0448\u0430\u044f \u0432 2022 \u0433\u043e\u0434\u0443. \u041a\u0430\u043a\u0438\u0445-\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u043d\u0435\u0442, \u043c\u043e\u0436\u0435\u0448\u044c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.

\u0422\u0430\u0433\u0438\u0440 \u2014 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0432\u043e \u0432\u0441\u0435\u043c \u043c\u0438\u0440\u0435 \u0434\u0436\u0430\u0432\u0438\u0441\u0442, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 JetBrains, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Java \u0447\u0435\u043c\u043f\u0438\u043e\u043d\u043e\u043c (\u0434\u0430, \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u0432\u0430\u043d\u0438\u0435). \u0412 \u043a\u0443\u0440\u0441\u0435 \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0437\u044b\u043a\u0430, \u043c\u043e\u0436\u0435\u0442 \u0442\u044f\u0436\u0435\u043b\u043e\u0432\u0430\u0442\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0448\u044c \u0448\u043b\u0438\u0444\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438.

"},{"location":"java-core/#udemy","title":"Udemy","text":"

\u041e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0443\u0440\u0441 \u043e\u0442 Tim Buchalka, \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c. \u041e\u043d \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u0436\u0435\u0432\u044b\u0432\u0430\u0435\u0442 Java \u0432 \u0441\u0435\u0440\u0438\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0432\u0438\u0434\u0435\u043e, \u043e\u0431\u0449\u0435\u0439 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043a\u043e\u043b\u043e 80 \u0447\u0430\u0441\u043e\u0432. \u0414\u0430\u0436\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u0435\u043c \u0435\u0441\u0442\u044c. \u0413\u043e\u0432\u043e\u0440\u0438\u0442 \u0441 \u0430\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u0439\u0441\u043a\u0438\u043c \u0430\u043a\u0446\u0435\u043d\u0442\u043e\u043c, \u043d\u043e \u0435\u0441\u0442\u044c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e. \u042d\u0434\u0430\u043a\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u0432\u0435\u0440\u0441\u0438\u044f \u0428\u0438\u043b\u0434\u0442\u0430 \u043f\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u041d\u0430 \u0446\u0435\u043d\u044b \u0432 10\u043a+ \u0440\u0443\u0431\u043b\u0435\u0439 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438, \u043d\u0430 Udemy \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u0436\u0438 \u0441\u043e \u0441\u043a\u0438\u0434\u043a\u0430\u043c\u0438 \u0432 80-90%. \u0422\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0438\u0434\u0438\u0448\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u0430\u0439\u0441, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c \u043a\u0443\u0440\u0441 \u0432 \u0432\u0438\u0448\u043b\u0438\u0441\u0442 \u0438 \u043f\u043e\u0434\u043e\u0436\u0434\u0438 \u043f\u0430\u0440\u0443 \u043d\u0435\u0434\u0435\u043b\u044c.

"},{"location":"java-core/#_2","title":"\u041a\u043d\u0438\u0433\u0438","text":"

\u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b. \u041f\u043e\u043c\u043d\u0438, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c\u0438 \u0438 \u0412\u041d\u0415\u0417\u0410\u041f\u041d\u041e \u0442\u0440\u0443\u0434\u043d\u0435\u0435 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043d\u0438\u0433\u0430\u0445 \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443.

"},{"location":"java-core/#java-java","title":"\u0413\u0435\u0440\u0431\u0435\u0440\u0442 \u0428\u0438\u043b\u0434\u0442, \u00abJava. \u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb \u0438 \u00abJava. \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u00bb","text":"

\u00ab\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb \u2014 \u044d\u0442\u043e \u0443\u0432\u0435\u0441\u0438\u0441\u0442\u044b\u0439 \u0442\u043e\u043c \u043d\u0430 1.5\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441 \u0442\u0440\u0443\u0434\u043e\u043c \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0443\u043a\u0430\u0445. \u0411\u0435\u0440\u0438 \u0435\u0433\u043e \u0435\u0441\u043b\u0438 \u0443 \u0442\u0435\u0431\u044f \u0435\u0441\u0442\u044c \u0431\u0435\u0437\u043e\u0442\u0432\u0435\u0442\u043d\u0430\u044f \u043b\u044e\u0431\u043e\u0432\u044c \u043a \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430\u043c \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0442\u044b \u043b\u044e\u0431\u0438\u0448\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0442\u043e\u0448\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 API \u044f\u0437\u044b\u043a\u0430. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0431\u0435\u0440\u0438 \u00ab\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u00bb, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043a\u043e\u0440\u043e\u0447\u0435 \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u044f\u0437\u044b\u043a\u0430 \u0431\u0435\u0437 \u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440\u043e\u0432\u044b\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0439 API. \u0418\u043c\u0435\u0439 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0432 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043d\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u00ab\u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435\u00bb \u0442\u0435\u043c\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u0432\u0435\u0440\u044c\u0441\u044f \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c \u043e\u0431\u0435\u0438\u0445 \u043a\u043d\u0438\u0433.

"},{"location":"java-core/#java","title":"\u0414\u0436\u043e\u0448\u0443\u0430 \u0411\u043b\u043e\u0445, \u00abJava. \u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb","text":"

\u041a\u043d\u0438\u0433\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0425\u043e\u0440\u0441\u0442\u043c\u0430\u043d\u043d\u0430 \u0438\u043b\u0438 \u0428\u0438\u043b\u0434\u0442\u0430, \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c. \u0411\u043b\u043e\u0445 \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u044f\u0437\u044b\u043a\u0430, \u0432 \u0441\u0432\u043e\u0435\u0439 \u043a\u043d\u0438\u0433\u0435 \u043e\u043d \u043e\u043f\u0438\u0441\u0430\u043b best practice: \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 equals \u0438 hashCode, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c generics, \u043f\u043e\u0447\u0435\u043c\u0443 \u043b\u044f\u043c\u0431\u0434\u044b \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e, \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e.

"},{"location":"java-core/#java-1","title":"(\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e) \u041a\u0435\u0439 \u0425\u043e\u0440\u0441\u0442\u043c\u0430\u043d\u043d, \u00abJava. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u0430, \u0442\u043e\u043c 1. \u041e\u0441\u043d\u043e\u0432\u044b\u00bb","text":"

\u0425\u043e\u0440\u0441\u0442\u043c\u0430\u043d\u043d \u043f\u0438\u0448\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u0443\u0445\u043e \u0438 \u0441\u0436\u0430\u0442\u043e \u0447\u0435\u043c \u0428\u0438\u043b\u0434\u0442, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 \u00ab\u043d\u0438\u0437\u043a\u043e\u043c\u00bb \u0443\u0440\u043e\u0432\u043d\u0435 (\u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044f\u0437\u044b\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0432\u043d\u0443\u0442\u0440\u0438). \u041f\u0435\u0441\u0442\u0440\u0438\u0442 \u0432\u0441\u0442\u0430\u0432\u043a\u0430\u043c\u0438 \u0441\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u0421++. \u0422\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440, \u0435\u0441\u043b\u0438 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c/\u0431\u044b\u043b \u043e\u043f\u044b\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u043d\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u0440\u0430\u0437\u0436\u0435\u0432\u044b\u0432\u0430\u043d\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0442\u043e\u043c\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u0442\u0435\u043c\u044b \u0432\u0440\u043e\u0434\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 XML, \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0432\u0435\u0431-\u0441\u043b\u0443\u0436\u0431. \u0413\u043b\u044f\u043d\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0438 \u0438\u043c\u0435\u0439 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0442\u0430\u043c \u0435\u0441\u0442\u044c.

"},{"location":"java-core/#java-head-first-java","title":"(\u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e) \u041a\u044d\u0442\u0438 \u0421\u044c\u0435\u0440\u0440\u0430 \u0438 \u0411\u0435\u0440\u0442 \u0411\u0435\u0439\u0442\u0441, \u00ab\u0418\u0437\u0443\u0447\u0430\u0435\u043c Java (Head First Java)\u00bb","text":"

\u0415\u0441\u043b\u0438 \u0442\u044b \u043d\u0430\u0447\u0430\u043b \u0447\u0438\u0442\u0430\u0442\u044c \u0428\u0438\u043b\u0434\u0442\u0430 \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0448\u044c, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439 \u044d\u0442\u0443 \u043a\u043d\u0438\u0433\u0443. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a. \u041f\u043e\u0441\u043b\u0435 \u0435\u0451 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043c\u043e\u0437\u0430\u0438\u043a\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0431\u043e\u043b\u0435\u0435 \u00ab\u0432\u0437\u0440\u043e\u0441\u043b\u044b\u043c\u00bb \u043a\u043d\u0438\u0433\u0430\u043c.

"},{"location":"java-core/#_3","title":"\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f","text":"

\u0422\u0435\u043e\u0440\u0438\u044f \u2014 \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434. \u041b\u0443\u0447\u0448\u0438\u0435 \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e:

  1. \u0417\u0430\u0434\u0430\u0447\u043a\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b HyperSkill. \u041c\u043d\u043e\u0433\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0438 \u0440\u0430\u0437\u043d\u044b\u0445, \u043d\u043e \u043f\u043b\u0430\u0442\u043d\u043e;
  2. CodeWars. \u041e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 8-7kyu;
  3. CodingBat. \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u043a\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u0443\u0440\u0441\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0430;
  4. HackerRank. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u0448\u044c Java, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0448\u044c Easy, \u043f\u0440\u043e\u0440\u0435\u0448\u0438\u0432\u0430\u0435\u0448\u044c.
"},{"location":"java-core/#_4","title":"\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b?","text":"

\u041d\u0435 \u0437\u043d\u0430\u0435\u0448\u044c \u043a\u0430\u043a \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u044b? \u041d\u0435 \u043f\u043e\u043c\u043d\u0438\u0448\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430? \u0417\u0430\u0431\u044b\u043b \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432? \u0421\u043e \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b:

  1. Javadoc. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 API \u044f\u0437\u044b\u043a\u0430. \u0425\u043e\u0447\u0435\u0448\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439? \u0417\u0430\u0433\u043b\u044f\u043d\u0438 \u0432 Javadoc \u043a\u043b\u0430\u0441\u0441\u0430 String. \u0425\u043e\u0447\u0435\u0448\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c? \u0417\u0430\u0433\u043b\u044f\u043d\u0438 \u0432 javadoc \u043a\u043b\u0430\u0441\u0441\u0430 Arrays. Javadoc \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043a\u0443\u0434\u0430 \u0442\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0434\u0442\u0438 \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0435. \u041d\u0435 \u0437\u043d\u0430\u0435\u0448\u044c \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a? \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0431\u0435\u0439 \u0432 \u043f\u043e\u0438\u0441\u043a \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 Java split word javadoc \u0438 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0434\u043e\u043b\u0435\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441;
  2. StackOverflow. \u0421\u0430\u043c\u044b\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0434\u043b\u044f \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0430 \u043a\u043e\u0434\u0430 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u0442\u0432\u043e\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u042f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 Java \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0437\u043d\u0430\u043a \u0434\u0436\u043e\u043a\u0435\u0440\u0430? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 PECS? \u041d\u0430 \u0432\u0441\u0451 \u044d\u0442\u043e \u0442\u044b \u0441\u043c\u043e\u0436\u0435\u0448\u044c \u043d\u0430\u0439\u0442\u0438 \u043e\u0442\u0432\u0435\u0442 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443 StackOverflow, \u0432\u0431\u0438\u0432 \u0432 \u043f\u043e\u0438\u0441\u043a \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435Java pecs stackoverflow
  3. Baeldung. \u0421\u0431\u043e\u0440\u043d\u0438\u043a \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438. \u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432 Java 16? \u041a\u0430\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c List? \u0427\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f ArrayList \u043e\u0442 LinkedList? \u041a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c Jackson? \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u0440\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 baeldung.
  4. Telegram. \u0415\u0441\u043b\u0438 \u0442\u0432\u043e\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0435 \u0443\u0432\u0435\u043d\u0447\u0430\u043b\u0441\u044f \u0443\u0441\u043f\u0435\u0445\u043e\u043c, \u0438 \u0442\u044b \u0433\u043e\u0442\u043e\u0432 \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0440\u0443\u043a\u0438, \u043f\u0440\u0438\u0445\u043e\u0434\u0438 \u043a \u0436\u0438\u0432\u044b\u043c, \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u043c \u043b\u044e\u0434\u044f\u043c \u0438 \u043f\u043e\u043f\u0440\u043e\u0441\u0438 \u043f\u043e\u043c\u043e\u0449\u0438. \u0422\u0443\u0442 \u043d\u0435 \u0440\u0435\u0448\u0430\u0442 \u0437\u0430 \u0442\u0435\u0431\u044f \u0442\u0432\u043e\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0441 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043f\u0430\u043d\u0438\u044f.
"},{"location":"java-core/#core","title":"\u041f\u043e\u0434\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u0442\u043e\u0433\u043e\u0432 Core","text":"

\u0418\u0442\u0430\u043a, \u0442\u044b \u043f\u0440\u043e\u0448\u0435\u043b/\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043a\u0443\u0440\u0441\u044b, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043a\u043d\u0438\u0433\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0440\u0435\u0448\u0438\u043b \u043a\u0443\u0447\u0443 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0439. \u0427\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0448\u044c \u0441\u0435\u0431\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u0438 \u0434\u0430\u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u0430\u0432\u0438\u043b \u043f\u043b\u0435\u0447\u0438? \u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438. \u0415\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0433\u0438\u0442\u0445\u0430\u0431 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c \u043a\u0443\u0447\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445. \u0421\u0435\u0439\u0447\u0430\u0441 \u0442\u0435\u0431\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430:

  1. \u041e\u041e\u041f
  2. Java Core
  3. Java Collections Framework
  4. Java 8

\u041d\u0435 \u043b\u0435\u043d\u0438\u0441\u044c \u0437\u0430\u043d\u0435\u0441\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0432 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 Anki \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0432 \u0431\u0443\u043c\u0430\u0436\u043d\u043e\u043c \u0432\u0438\u0434\u0435. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0439 \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435, \u043d\u043e \u043f\u043e\u043c\u043d\u0438, \u0447\u0442\u043e \u0442\u0432\u043e\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435 \u0437\u0430\u0443\u0447\u0438\u0442\u044c \u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u043e \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043e\u0442\u0432\u0435\u0442\u0430\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0443\u0442\u0435\u043c. \u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0448\u044c \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0431\u0443\u0434\u0435\u0448\u044c \u0442\u0440\u044f\u0441\u0442\u0438\u0441\u044c \u043e\u0442 \u043d\u0435\u0440\u0432\u043e\u0432 \u0438 \u043f\u0438\u0442\u044c \u0432\u043e\u0434\u0443 \u0448\u0443\u043c\u043d\u044b\u043c\u0438 \u0433\u043b\u043e\u0442\u043a\u0430\u043c\u0438, \u0432\u0441\u0435 \u0442\u0432\u043e\u0438 \u0437\u0443\u0431\u0440\u0435\u0436\u043a\u0438 \u0432\u044b\u043b\u0435\u0442\u044f\u0442 \u0438\u0437 \u0433\u043e\u043b\u043e\u0432\u044b, \u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u043d\u0435\u0442\u0441\u044f.

"},{"location":"quarkus/","title":"Quarkus","text":""},{"location":"quarkus/#quarkus","title":"\u041f\u043e\u0447\u0435\u043c\u0443 Quarkus ?","text":"

Quarkus - \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043e\u0442 RedHat, \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0442\u0430\u043a\u0438\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u043c \u043a\u0430\u043a Helidon (Oracle), Spring Boot (VMware), Micronaut. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435, Quarkus \u043d\u0435 \u043f\u043e\u0448\u0435\u043b \u043f\u043e \u043f\u0443\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0447\u0435\u0433\u043e-\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e, \u043e\u043d \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0438\u0440\u0430 backend web-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 Jakarta REST (\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u043a JAX-RS), \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043a\u0430\u043a Resteasy. \u0412 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0443\u0441\u0438\u043b\u0438\u0439 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0439\u0442\u0438 \u043e\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Spring Boot, \u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0441\u0438\u043b\u0438\u0439 \u043d\u0435\u0441\u043e\u0438\u0437\u043c\u0435\u0440\u0438\u043c\u043e. \u0422\u0438\u043f\u043e\u0432\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 c \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u043d\u043e\u0433\u043e JAX-RS \u043d\u0430 Quarkus \u0434\u0430\u0436\u0435 \u0437\u0430 5 \u043c\u0438\u043d\u0443\u0442 (\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u044d\u0442\u043e \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u043f\u043e \u0431\u043e\u043b\u044c\u043d\u0438\u0446\u0435).

"},{"location":"quarkus/#quarkus_1","title":"Quarkus \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439, \u0434\u0430\u0436\u0435 \u043d\u0435 \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u0439\u0441\u044f","text":"

\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0432\u044b\u0448\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e, Quarkus \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e Jakarta REST. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0448\u043b\u0430 \u0434\u0430\u043b\u044c\u0448\u0435. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 Resteasy \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d Resteasy Reactive. \u0412 \u043d\u0435\u043c Quarkus \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Vert.x - \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u0441\u0435\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 Jakarta REST \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0430\u0441\u044c. \u0414\u0443\u043c\u0430\u044e, \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c Quarkus \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u043e\u0432\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 Quarkus Reactive Architecture:

Quarkus is reactive

Quarkus is reactive. It\u2019s even more than this: Quarkus unifies reactive and imperative programming. You don\u2019t even have to choose: you can implement reactive components and imperative components then combine them inside the very same application. No need to use different stacks, tooling or APIs; Quarkus bridges both worlds.

\u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u0442\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c Quarkus Reactive Architecture, \u0437\u0430\u0442\u0435\u043c Using Eclipse Vert.x API from a Quarkus Application, \u0438, \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f Vert.x Reference Guide.

"},{"location":"quarkus/#_1","title":"\u042d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430","text":""},{"location":"quarkus/#_2","title":"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f","text":"

\u041f\u0440\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u043a\u0430\u043a Spring \u0438 Quarkus \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u0441\u0442\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 Quarkus \u043e\u043d\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0432\u043d\u043e\u0434\u0443\u0448\u043d\u044b\u043c. \u0421\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0442\u044c\u0441\u044f. \u0422\u0430\u043c \u0442\u044b \u043d\u0430\u0439\u0434\u0435\u0448\u044c \u043a\u0430\u043a \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0432\u0432\u043e\u0434\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Quarkus, \u0442\u0430\u043a \u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0442\u0430\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0435(Reference Guide) \u0441\u0442\u0430\u0442\u044c\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.

"},{"location":"quarkus/#_3","title":"\u0423\u0442\u0438\u043b\u0438\u0442\u044b","text":"

Spring \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u0443\u044e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 Spring Initializr \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0412 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, Quarkus \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Web-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043e \u0441\u0445\u043e\u0436\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c code.quarkus.io. \u0422\u0430\u043c \u0442\u044b \u0441\u043c\u043e\u0436\u0435\u0448\u044c \u0432\u044b\u0431\u0440\u0430\u0442\u044c: \u044f\u0437\u044b\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u0431\u043e\u0440\u043a\u0438, \u0438, \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043b\u0438\u0448\u044c \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443. \u0422\u0430\u043a\u0436\u0435, Quarkus \u0442\u0435\u0441\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u0441\u0430\u043c\u044b\u043c\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 IDE, \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 Gradle/Maven. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0438 \u0441\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0433\u043e CLI.

"},{"location":"quarkus/#_4","title":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439","text":"

Quarkus \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. \u0414\u043b\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Jackson. \u0414\u043b\u044f \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 API:

  • JBoss Logging
  • JDK java.util.logging (JUL)
  • SLF4J
  • Apache Commons Logging
  • Apache Log4j 2
  • Apache Log4j 1

\u041d\u0435 \u043c\u043e\u0433\u0443 \u043d\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043f\u0440\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043d\u0435 \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0435\u0442 \u0432 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0435:

\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0435 \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435
package com.example;\nimport io.quarkus.logging.Log; class MyService { public void doSomething() {\nLog.info(\"Simple!\"); }\n}\n

\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0447\u0438\u0442\u0430\u0439 \u0442\u0443\u0442.

\u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0411\u0414 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 JDBC \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b \u043a \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0443 \u0421\u0423\u0411\u0414, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c. \u0415\u0441\u043b\u0438, \u0432\u0434\u0440\u0443\u0433, \u0442\u044b \u0441\u043e\u0441\u043a\u0443\u0447\u0438\u043b\u0441\u044f \u043f\u043e Hibernate, \u0442\u043e \u0432\u043e\u0442 \u0438 \u0432\u043e\u0442. \u041f\u043e\u0414\u0443\u0447\u0438 \u0438 \u0440\u0430\u0441\u043f\u0438\u0448\u0438\u0441\u044c.

\u0412\u044b\u0448\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u044b \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u044b \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0448\u044c \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b. \u041d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 Quarkus \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445. \u0412\u0440\u044f\u0434 \u043b\u0438 \u0442\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0448\u044c, \u0447\u0442\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0447\u0435\u0433\u043e-\u0442\u043e \u0432\u0430\u0436\u043d\u043e\u0433\u043e (\u0438\u043b\u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c). \u0414\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u0441\u0447\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Core-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0442 RedHat, \u043d\u043e \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f Quarkiverse.

"},{"location":"quarkus/#quarkiverse","title":"Quarkiverse","text":"

Quarkiverse Github - \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0432 Github, \u043a\u0443\u0434\u0430 \u043b\u044e\u0431\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a/\u0433\u0440\u0443\u043f\u043f\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Quarkus. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Quarkus, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0435 \u0432 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 Quarkiverse, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 Quarkus, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043d\u0430 code.quarkus.io, \u0438 \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 Quarkus (\u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a mvn quarkus:list-extensions, gradle listExtensions). \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0438\u0448\u044c \u043d\u0430\u0431\u043e\u0440 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430\u0431\u043e\u0440\u0443 \u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e. \u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0442\u044b \u043d\u0430\u0439\u0434\u0435\u0448\u044c \u0442\u0443\u0442. \u041f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e.

"},{"location":"quarkus/#_5","title":"\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Quarkus \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u0430 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0430 \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u0447\u0430\u0442\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0438\u0434\u044f\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Quarkus \u0438 \u0441 \u043e\u0445\u043e\u0442\u043e\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u043d\u0430 \u043b\u044e\u0431\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432. \u0422\u0430\u043a\u0436\u0435, \u0442\u044b \u0442\u0430\u043c \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0448\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Quarkus, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0442\u0430\u043a\u0438\u0445 \u0436\u0435 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u043a\u0430\u043a \u0442\u044b, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0430\u043a\u0436\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.

"},{"location":"quarkus/#developer-joy","title":"Developer Joy","text":"

\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Quarkus \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u043a\u0446\u0435\u043d\u0442 \u043d\u0430 \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Quarkus:

Beyond simply working, we\u2019re aiming for Joy.

Quarkus is not just about being great for writing Web Applications or Micro-Services. We\u2019re focusing on more than the feature set: we make sure that every feature works well, simply, with little to no configuration, in the most intuitive way possible. It should be trivial to develop simple things, and easy to develop the more complex ones.

\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0439 \u044d\u0442\u043e, \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0442\u0435\u0431\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f.

"},{"location":"quarkus/#_6","title":"\u0411\u043b\u043e\u0433\u0438, \u041a\u043d\u0438\u0433\u0438, \u041f\u043e\u0434\u043a\u0430\u0441\u0442\u044b","text":"

\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e Quarkus \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442. \u041d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u0430\u0439\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0441\u043b\u0435\u0436\u0435\u043d\u0438\u044f \u0437\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0411\u043b\u043e\u0433, \u041f\u043e\u0434\u043a\u0430\u0441\u0442\u044b, \u041a\u043d\u0438\u0433\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.

"},{"location":"quarkus/#how-to","title":"How-to \u0441\u0442\u0430\u0440\u0442","text":"

\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 Get Started \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c. \u0417\u0434\u0435\u0441\u044c \u0442\u0435\u0431\u044f \u043d\u0430\u0443\u0447\u0430\u0442 \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Quarkus. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b Next Steps, \u0442\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443\u0442 \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c REST \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e. \u0422\u0430\u043a\u0436\u0435, \u043f\u043e\u043a\u0430\u0436\u0443\u0442 \u043a\u0430\u043a \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432 \u0442\u0432\u043e\u0435\u0439 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 IDE \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.

"},{"location":"quarkus/#_7","title":"\u0418\u0441\u0442\u043e\u0440\u0438\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439","text":"

\u0412 \u0431\u043b\u043e\u0433\u0435 Quarkus \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 Quarkus. \u041f\u043e\u0447\u0438\u0442\u0430\u0439 \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430 \u0434\u043e\u0441\u0443\u0433\u0435.

\u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f :)"},{"location":"spring-framework/","title":"Spring Framework","text":""},{"location":"spring-framework/#spring","title":"Spring","text":"

Spring \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u0432\u0435\u0431-\u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432 Java. \u0421\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0446\u0435\u043b\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0411\u0414, \u043e\u0431\u043b\u0430\u043a\u0430\u043c\u0438, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e, \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u0414\u0430, \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u043d\u043e \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0434\u043e\u043b\u0435\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u0442\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0448\u044c\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u043d\u0438\u043c. \u0422\u0430\u043a \u0447\u0442\u043e \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u00ab\u0412\u0435\u0441\u043d\u0443\u00bb.

"},{"location":"spring-framework/#spring-core","title":"Spring Core","text":"

\u041a\u0430\u043a \u0443 Java \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 Core, \u0442\u0430\u043a \u0435\u0441\u0442\u044c \u043e\u043d \u0438 \u0443 Spring. \u0421\u0442\u043e\u0438\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u043d\u044c\u043a\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0448\u044c\u0441\u044f \u043d\u0430 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e \u0432\u044b\u0448\u0435, \u0432 Spring Boot, \u043e\u043d \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0442\u0435\u0431\u0435 \u0437\u0430\u0433\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043c\u0430\u0433\u0438\u0435\u0439.

"},{"location":"spring-framework/#_1","title":"\u041a\u043d\u0438\u0433\u0438","text":""},{"location":"spring-framework/#craig-walls-spring-in-action-4","title":"Craig Walls. \u00abSpring in Action 4\u00bb","text":"

\u041e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 4-\u0435 \u0438\u0437\u0434\u0430\u043d\u0438\u0435. \u0414\u0430, \u043c\u044b \u0432 \u043a\u0443\u0440\u0441\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0448\u0435\u0441\u0442\u043e\u0435. \u0414\u0430, \u043c\u044b \u0432 \u043a\u0443\u0440\u0441\u0435, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435 \u0438\u0437\u0434\u0430\u043d\u0438\u0435. \u041d\u043e \u0432 \u0448\u0435\u0441\u0442\u043e\u043c \u0438\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u0430\u043f\u043e\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XML. \u0422\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c: \u00ab\u041a\u0430\u043a\u043e\u0439 XML, \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0435\u0437\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438?\u00bb, \u043d\u043e \u0442\u0432\u043e\u0439 \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0434\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0438\u043b\u0438\u0432\u0448\u0438\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432 \u043c\u043e\u0445\u043d\u0430\u0442\u044b\u0445 \u0433\u043e\u0434\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u0442\u0432\u043e\u0451 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435. \u0422\u0430\u043a \u0447\u0442\u043e \u0447\u0438\u0442\u0430\u0439 4-\u0435 \u0438\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0441\u044f. \u041a\u043d\u0438\u0433\u0430 \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e.

"},{"location":"spring-framework/#_2","title":"\u041a\u0443\u0440\u0441\u044b","text":"

\u041d\u0430 Udemy \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, John Tompson, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0448\u043f\u0430\u0440\u0438\u0442 \u043a\u0443\u0440\u0441\u044b \u043f\u043e Spring \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442. \u041d\u0435 \u043e\u0431\u0445\u043e\u0434\u0438 \u0435\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c \u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0438 \u0441\u044e\u0434\u0430. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Spring (4), \u043d\u043e \u0437\u0430 6 \u0447\u0430\u0441\u043e\u0432 \u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0431\u0430\u0437\u0430 \u043f\u043e Spring \u0438 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e Spring MVC.

"},{"location":"spring-framework/#_3","title":"\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f","text":"

\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0437\u0430\u0447\u0435\u043c \u043c\u044b \u044f\u0432\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u0435\u0441\u043b\u0438 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0432\u043e\u0438\u043b\u0438, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0441 \u043d\u0435\u0451? \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u043e Spring \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0430\u044f. \u0415\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0412\u041e\u0421\u0425\u0418\u0422\u0418\u0422\u0415\u041b\u042c\u041d\u0410. \u0421\u0435\u0440\u044c\u0435\u0437\u043d\u043e, \u044d\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u0435\u0441\u043e\u043c\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e\u0447\u0435\u043c\u0443 Spring \u0442\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u0432\u043e\u0435\u0432\u0430\u043b \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439\u0448\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u043e\u0432 Spring, \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043a\u043e\u0434\u0430, \u0438 \u043c\u043d\u043e\u0433\u043e\u0435, \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u041d\u0430\u0447\u043d\u0438 \u0441\u0432\u043e\u0451 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u043f\u043e\u0432\u0435\u0440\u044c, \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0443 \u0442\u0435\u0431\u044f \u043d\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0442\u044b \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0448\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438.

"},{"location":"spring-framework/#youtube","title":"YouTube","text":"

\u0428\u0438\u0440\u043e\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0432 \u0443\u0437\u043a\u043e\u043c \u043a\u0440\u0443\u0433\u0443 \u043b\u0438\u0446, \u0415\u0432\u0433\u0435\u043d\u0438\u0439 \u0411\u043e\u0440\u0438\u0441\u043e\u0432 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u0430\u043c\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Spring \u043f\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u043c. \u0414\u0435\u043b\u0430\u0435\u0442 \u043e\u043d \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u0435\u0441\u0435\u043b\u043e, \u0437\u0430\u0434\u043e\u0440\u043d\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043f\u0440\u0438\u043e\u0431\u0449\u0438\u0442\u044c\u0441\u044f \u043a \u0435\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430\u043c:

  • Spring-\u043f\u043e\u0442\u0440\u043e\u0448\u0438\u0442\u0435\u043b\u044c;
  • Spring-\u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c.

\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432\u0438\u0434\u0435\u043e \u0434\u043b\u0438\u0442\u0441\u044f 2-4 \u0447\u0430\u0441\u0430, \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0441\u044f \u043e\u043d\u043e \u043a\u0430\u043a \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0438\u0430\u043b. \u041a\u0440\u0430\u0439\u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043a \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0443.

"},{"location":"spring-framework/#spring-boot","title":"Spring Boot","text":"

Spring Boot \u2014 \u044d\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u043c\u0438. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432\u0437\u044f\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Spring, \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u0432 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e (\u043f\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438) \u0443\u0440\u043e\u0432\u043d\u044f. \u041c\u0435\u043d\u044c\u0448\u0435 \u0431\u043e\u0439\u043b\u0435\u0440\u043f\u043b\u0435\u0439\u0442\u0430 \u0438 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u0431\u043e\u043b\u0438, \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u0433\u0438\u0438 \u0438 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u0431\u043e\u043b\u0438. \u041f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0431\u041e\u043b\u044c\u0448\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, Spring Boot \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Spring, \u0442\u0430\u043a \u0447\u0442\u043e \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0441\u043c\u0435\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e.

"},{"location":"spring-framework/#_4","title":"\u041a\u0443\u0440\u0441\u044b","text":"

\u041f\u043e\u043c\u043d\u0438\u0448\u044c John Tompson? \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e 60-\u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e Spring Boot. \u0412 \u043d\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e Spring MVC, Spring Data \u0438 \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e Hibernate. \u041e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e, \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a. \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0442\u043e\u0438\u0442 \u0441\u0432\u043e\u0438\u0445 \u0434\u0435\u043d\u0435\u0433.

"},{"location":"spring-framework/#spring-data","title":"Spring Data","text":"

Spring Data \u044d\u0442\u043e \u0446\u0435\u043b\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u043e\u0434\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e: \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0436\u0438\u0437\u043d\u044c, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u041f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u044d\u0442\u0438\u0445 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e (\u0441 \u043f\u043e\u043b\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0447\u043d\u0435\u043c \u043c\u043e\u0436\u0435\u0448\u044c \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c), \u043d\u043e \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 Spring Data JPA. \u0415\u0441\u043b\u0438 Hibernate \u2014 \u044d\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 JDBC, \u0442\u043e Spring Data \u2014 \u044d\u0442\u043e \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 ORM-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u043c\u0438. Hibernate \u0442\u0430\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e.

\u0427\u0442\u043e \u0436\u0435 \u0437\u0430 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a? \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u044d\u0442\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u044b \u0441\u043b\u044b\u0448\u0430\u043b \u043f\u0440\u043e CRUD. \u0422\u0430\u043a \u0432\u043e\u0442, Spring \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e \u043c\u0430\u043d\u043e\u0432\u0435\u043d\u0438\u044e \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0439 \u043f\u0430\u043b\u043e\u0447\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0442\u0432\u043e\u0438\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c \u044d\u0442\u0438 \u0441\u0430\u043c\u044b\u0435 CRUD-\u043c\u0435\u0442\u043e\u0434\u044b. \u0417\u0434\u043e\u0440\u043e\u0432\u043e, \u043f\u0440\u0430\u0432\u0434\u0430? \u041d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434. \u0417\u0430 \u043d\u0430\u0441 \u044d\u0442\u043e \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u0435\u0442 \u043c\u0430\u0448\u0438\u043d\u0430, \u0430 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0443\u0434\u043e\u0431\u043d\u044b\u043c API.

\u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u2014 \u044d\u0442\u043e \u043a\u0443\u0447\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u044e\u0448\u0435\u043a, \u043e \u043f\u043e\u043b\u044c\u0437\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u044b \u0432\u0440\u044f\u0434 \u043b\u0438 \u0431\u0443\u0434\u0435\u0448\u044c \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f.

\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e Spring Data JPA \u0442\u0435\u0431\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0432\u043e\u0435\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0441 Hibernate \u0438 \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u0432\u043e\u0434\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e\u0442 \u0441\u0430\u043c\u043e\u0433\u043e Spring.

"},{"location":"spring-framework/#spring-web-mvc","title":"Spring Web MVC","text":"

\u0421\u0430\u043c\u0430 MVC \u2014 \u044d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0443\u0445 \u043e\u0442 \u043a\u043e\u0442\u043b\u0435\u0442. \u041c\u043e\u0434\u0435\u043b\u0438 (\u0434\u0430\u043d\u043d\u044b\u0435) \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0441\u0432\u044f\u0437\u0443\u044e\u0449\u0438\u0439 \u043a\u043b\u0435\u0439 \u0438\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0438\u0445 \u043a\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u0423\u0434\u043e\u0431\u043d\u043e, \u043c\u0435\u043d\u044c\u0448\u0435 \u0448\u0430\u043d\u0441\u043e\u0432 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0432\u0441\u0451 \u043a \u0447\u0435\u0440\u0442\u044f\u043c \u043f\u0440\u0438 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0445, \u043d\u0430\u0440\u043e\u0434\u0443 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f.

\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e Spring Web MVC \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0430\u043c \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0432\u0441\u0451 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0442\u0430\u043a \u043b\u044e\u0431\u0438\u043c: \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438, \u0441\u0430\u0445\u0430\u0440 \u0438 \u043c\u0430\u0433\u0438\u044e. \u041d\u0443 \u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430\u043c\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.

\u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0448\u0435, \u043e\u0431\u0440\u0430\u0442\u0438\u0441\u044c \u043a \u0441\u0442\u0430\u0440\u043e\u0439 \u0434\u043e\u0431\u0440\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.

"},{"location":"spring-framework/#spring-security","title":"Spring Security","text":"

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0442\u044b \u0441\u043e\u0437\u0434\u0430\u043b \u0441\u0432\u043e\u0451 web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0442\u044b \u0437\u0430\u0445\u043e\u0447\u0435\u0448\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0410 \u0433\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u0442\u0430\u043c \u0438 \u043b\u043e\u0433\u0438\u043d\u044b \u0438 \u043f\u0430\u0440\u043e\u043b\u0438. \u0410 \u0433\u0434\u0435 \u043f\u0430\u0440\u043e\u043b\u0438, \u0442\u0430\u043c \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c, \u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u0440\u043e\u0441\u0441-\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0437\u043b\u043e\u0431\u043d\u044b\u0435 \u0445\u0430\u043a\u0435\u0440\u044b. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c \u043e\u0442 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u0431\u043e\u043b\u0438, \u0434\u043b\u044f \u043d\u0430\u0441 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Spring Security, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 API \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 (\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437), \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u043c. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f:

  • \u041f\u0440\u0438\u043e\u0431\u0449\u0438\u0432\u0448\u0438\u0441\u044c \u043a \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438;
  • \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043a\u043d\u0438\u0433\u0443 \u00abSpring Security in Action\u00bb.
"},{"location":"spring-framework/#_5","title":"\u0423\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f","text":"

\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u043d\u0430\u0431\u043e\u0440\u0430 \u0437\u0430\u0434\u0430\u0447\u0435\u043a \u043f\u043e Spring \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041d\u043e \u0442\u0443\u0442 \u0442\u0435\u0431\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c HyperSkill, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c \u0443\u0447\u0435\u0431\u043d\u044b\u0435 web-\u043f\u0440\u043e\u0435\u043a\u0442\u044b; \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043e\u0442 \u0441\u0430\u043c\u043e\u0433\u043e Spring, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u044b\u0439 PetClinic \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0442-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0414\u0430\u0432\u043d\u043e \u0445\u043e\u0442\u0435\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u0431\u043e\u0442\u0430? \u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u0438\u043b\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Spring.

"}]} \ No newline at end of file diff --git a/settings.json b/settings.json deleted file mode 100644 index 6f4948d..0000000 --- a/settings.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "yaml.schemas": { - "https://squidfunk.github.io/mkdocs-material/schema.json": "mkdocs.yml" - }, - "yaml.customTags": [ - "!ENV scalar", - "!ENV sequence", - "tag:yaml.org,2002:python/name:materialx.emoji.to_svg", - "tag:yaml.org,2002:python/name:materialx.emoji.twemoji", - "tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format" - ] - } - \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..0f8724e --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000..8ff247f Binary files /dev/null and b/sitemap.xml.gz differ diff --git a/spring-framework/index.html b/spring-framework/index.html new file mode 100644 index 0000000..cd5da4d --- /dev/null +++ b/spring-framework/index.html @@ -0,0 +1,991 @@ + + + + + + + + + + + + + + + + + + + + + + Spring Framework - Руководство по вкатыванию в Backend на Java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + +

Spring Framework

+ +

Spring

+

Spring — это самая популярная веб-экосистема в Java. Состоит из целого набора фреймворков разного назначения: работа с БД, облаками, безопасностью, и многое другое. Да, у него есть менее популярные альтернативы, но с высокой долей вероятности на работе ты столкнешься именно с ним. Так что добро пожаловать в «Весну».

+

Spring Core

+

Как у Java есть свой базовый Core, так есть он и у Spring. Стоит хорошенько разобраться в его составе, чтобы когда ты поднимешься на абстракцию выше, в Spring Boot, он не показался тебе загадочной магией.

+
Книги
+
Craig Walls. «Spring in Action 4»
+

Обрати внимание именно на 4-е издание. Да, мы в курсе, что есть шестое. Да, мы в курсе, что перевод на русский есть только на третье издание. Но в шестом издании нет подробного описания подкапотного устройства и выкинута настройка с помощью XML. Ты можешь подумать: «Какой XML, сейчас везде используют аннотации?», но твой будущий работодатель запиливший систему в мохнатых годах может не разделять твоё прогрессивное мнение. Так что читай 4-е издание и наслаждайся. Книга стоит того.

+
Курсы
+

На Udemy есть хороший инструктор, John Tompson, который шпарит курсы по Spring как автомат. Не обходи его вниманием и загляни сюда. Рассматривается более старая версия Spring (4), но за 6 часов даётся вполне неплохая база по Spring и затрагивается работа со Spring MVC.

+
Официальная документация
+

Казалось бы, зачем мы явно включили официальную документацию, если с самого начала усвоили, что стоит начинать поиск с неё? Однако со Spring ситуация несколько иная. Его документация ВОСХИТИТЕЛЬНА. Серьезно, эта документация одна из весомых причин, почему Spring так быстро завоевал популярность. Подробнейшие описания концептов Spring, сопровождаемые примерами кода, и многое, многое другое. Начни своё путешествие отсюда и поверь, очень многие вопросы у тебя не появятся, если ты внимательно ознакомишься с этими материалами.

+
YouTube
+

Широко известный в узком кругу лиц, Евгений Борисов периодически выступает с докладами, в которых разбирает устройство Spring по кусочкам. Делает он весьма весело, задорно и понятно. Рекомендуем приобщиться к его докладам:

+ +

Несмотря на то, что видео длится 2-4 часа, смотрится оно как отличный сериал. Крайне рекомендуем к просмотру.

+

Spring Boot

+

Spring Boot — это абстракция над абстракциями. Разработчики взяли обычный Spring, полезные библиотеки и упаковали всё это в фреймворк более высокого (по абстракции) уровня. Меньше бойлерплейта и головной боли, больше магии и головной боли. По причине бОльшего удобства и увеличенной скорости разработки, Spring Boot вытесняет классический Spring, так что в своих проектах смело используй именно его.

+
Курсы
+

Помнишь John Tompson? Даже если нет, самое время навернуть его 60-часовой курс по Spring Boot. В нем также затрагивается работа со Spring MVC, Spring Data и немножко Hibernate. Объясняет доступно, много примеров, простой английский язык. Полностью стоит своих денег.

+

Spring Data

+

Spring Data это целый набор различных продуктов, объединенных одной целью: упростить разработчику жизнь, предоставив ещё более высокий уровень абстракции для работы с данными. Продуктов этих довольно много (с полным перечнем можешь ознакомиться здесь), но на текущем этапе обрати внимание на Spring Data JPA. Если Hibernate — это абстракция над JDBC, то Spring Data — это по большей части абстракция над ORM-фреймворками. Hibernate там включен по умолчанию, но никто не заставляет использовать под капотом именно его.

+

Что же за удобные абстракции дает нам данный фреймворк? В первую очередь это репозитории. Возможно ты слышал про CRUD. Так вот, Spring позволяет по мановению волшебной палочки добавить к твоим сущностям эти самые CRUD-методы. Здорово, правда? Нам не нужно писать каждый раз стандартные методы, копипастить один и тот же код. За нас это всё делает машина, а мы просто пользуемся удобным API.

+

В остальном — это куча других плюшек, о пользе которых сейчас ты вряд ли будешь задумываться.

+

Для начала работы со Spring Data JPA тебе будет достаточно твоего опыта с Hibernate и чтения вводной документации от самого Spring.

+

Spring Web MVC

+

Сама MVC — это крайне популярная схема разделения мух от котлет. Модели (данные) отдельно, представление данных отдельно, связующий клей из контроллеров, которые обрабатывают действия пользователей и передают их кому надо отдельно. Удобно, меньше шансов сломать всё к чертям при доработках, народу нравится.

+

Конкретно Spring Web MVC помогает нам в реализации проектов с использованием данной схемы, предоставляя всё то, что мы так любим: абстракции, сахар и магию. Ну и например аннотации для разметки контроллеров, удобную настройку реквестов, работу с эндпоинтами и многое другое.

+

Чтобы узнать его получше, обратись к старой доброй документации.

+

Spring Security

+

После того, как ты создал своё web-приложение, вероятно, ты захочешь предоставить к нему доступ для пользователей. А где пользователи, там и логины и пароли. А где пароли, там и безопасность, личные данные, кросс-авторизации и злобные хакеры. Чтобы не страдать от головной боли, для нас создали фреймворк Spring Security, который дает нам удобный API и абстракции (в который раз), чтобы сделать наше приложение безопасным и надежным. Более подробно можно ознакомиться:

+
    +
  • Приобщившись к официальной документации;
  • +
  • Прочитав отличную книгу «Spring Security in Action».
  • +
+

Упражнения

+

К сожалению набора задачек по Spring в классическом виде не существует. Но тут тебе может помочь HyperSkill, в котором есть учебные web-проекты; примеры проектов от самого Spring, например знаменитый PetClinic и реализация собственных пет-проектов. Давно хотел собственного телеграм-бота? Самое время начать его пилить с помощью Spring.

+ +
+
+ + + Последнее обновление: + August 9, 2023 + +
+ Дата создания: + August 9, 2023 + + +
+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file