рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ! = рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯред рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд╛рдБрдЪ рдЬрд╛рд╡рд╛ред рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдпрд╛рдж рд░рдЦреЗрдВ


рдЗрд╕ рд╕рдкреНрддрд╛рд╣, JUG.ru рд╕рдореВрд╣ рдПрдХ рдШреЛрд╖рдгрд╛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЬрдм рддрдХ рдореИрдВ рди рдХрд╣реВрдВред рдЧреБрдкреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рднрд╛рдЧреАрджрд╛рд░реА рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЛ рдЬрд╛рдЧреГрдд рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдЬрд╛рд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдФрд░ рд░рд╛рдд рдХрд╛ рд╡реАрдбрд┐рдпреЛ рд╣реИред

рдЕрддреБрд▓реНрдп рд╕рдорд╛рдЪрд╛рд░: рдЕрдм рдпрд╣ рдПрдХ рдШрдВрдЯрд╛ рдФрд░ рдбреЗрдврд╝ рд▓рдВрдмрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд▓рдЧрднрдЧ 20 рдорд┐рдирдЯ рд╣реИ, рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рд╣реИред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо, рдЗрд╕рдореЗрдВ рдПрдХ рдкреЗрдВрдЪрдХрд╕ рд╣реЛрддрд╛ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдмрдХрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рда рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХрдЯреМрддреА рдХреЗ рдмрд╛рдж рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд╛рда рдХрд╛рдЯрдиреЗ рдкрдбрд╝реЗред рд╡реЗрд▓реНрдХрдо, рдФрд░ рдЬрд╛рд╡рд╛ рдЖрдкрдХреЗ рд╕рд╛рде рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЬрд▓реНрдж рд╣реА 12 рдЬрд╛рд╡рд╛ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХрдИ рдЕрднреА рднреА рд╕реЗрдорд░реЛрдЪрдХрд╛ рдкрд░ рдмреИрдареЗ рд╣реИрдВ рдФрд░ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд░ рд╡реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирдпрд╛ рдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рджрд┐рдЦреЗрдЧрд╛ред рдЗрд╕ рд╕реБрдкрд░-рд╢реЙрд░реНрдЯ рдореБрджреНрджреЗ рдореЗрдВ, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЬрд╛рд╡рд╛ рдХреА рдорджрдж рд╕реЗ рдЕрдкрдиреЗ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдХреЗ рдЬреАрд╡рди рдХреЛ рдирд░рдХ рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИ, рдФрд░ рдПрдХ рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдореИрдВ рдирдП рдЧреИрдЬреЗрдЯреНрд╕ рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рдЦреИрд░, рдЕрд╢реНрд▓реАрд▓рддрд╛рд╡рд╛рджреА, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░рдЧрддрд┐ рд╕реЗ рдирд╣реАрдВ рдмрдЪреЗрдВрдЧреЗред

рдореБрдЭреЗ рдмрддрд╛рдУ, рдЖрдк рдЕрдкрдиреЗ рдЖрдЗрдбрд┐рдпрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд▓рдЧрд╛рддрд╛рд░ рд╡рд╣рд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ, рдХреБрдЫ рдирдП рд╢реЙрд░реНрдЯрдХрдЯ, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рджрд╕ рдЧреБрдирд╛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдк рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рд╡рд╛рдХрдИ рдЗрд╕ рдЦрдмрд░ рдХреЛ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ? рдпрджрд┐ рдЖрдк рдПрдХ рдФрд╕рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдирд╣реАрдВред рдЖрдк, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд╛рдирдд рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЖрдк рдЖрдЗрдбрд┐рдпрд╛ рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ ... рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдЦрд╛рд▓ рд╕реБрдВрджрд░ рд╣реИрдВ, рдбрд╛рд░реНрдХ рдереАрдо, рдореИрдХрдмреБрдХ рдкрд░ рдЯрдЪрдмрд╛рд░ред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдЬрд╡рд╛рдм рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдЖрдЗрдбрд┐рдпрд╛ рдХреНрдпреЛрдВ рдЦрд░реАрджреЗрдВ"ред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ 29 рдЕрдХреНрдЯреВрдмрд░ рдХреЛ, рдЕрдзрд┐рдХ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, JetBrains рдиреЗ рдЖрдЗрдбрд┐рдпрд╛ рдХреЗ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрдЪреНрдЪреА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкрд┐рди рдХрд┐рдпрд╛ред рд╡рд┐рдЪрд╛рд░ рдмреАрдЯрд╛ рдореЗрдВ рд╣реИ, рд▓рд╛рдЗрдиреЗрдВ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрддрдиреЗ рдЬрд┐рджреНрджреА рд╣реИрдВ рдХрд┐ рдЖрдк 12 рдЬрд╛рд╡рд╛ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдЬрд╛рдирддрд╛ рд╣реВрдВред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХрд╛рдлреА рдЕрдХреНрд╕рд░ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдкреНрдпреВрдЯрд░ рдЧреЗрдо рдореЗрдВ рдпреЗ quests рд╣реИрдВ, рдЬреЗрдирдХрд┐рдВрд╕ рдореЗрдВ рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЖрдорддреМрд░ рдкрд░, рдкрд╛рдпрдерди рдпрд╛ рдЧреНрд░реЛрд╡реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЪрд▓реЛ рдирдЧреНрди рдЬрд╛рд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ! рдХреНрдпреЛрдВ, рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреАрди рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ, рдФрд░ рдмрд┐рдирд╛ рд╣реИрдХреНрд╕ рдХреЗ рднреАред рдПрдХ рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ :-)

рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рд╣реИ


рд╕рдм рдХреБрдЫ рдЧреАрдереВрдм рдкрд░ рд╣реИ ред

рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреНрд╖реЗрддреНрд░


рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рд╣реИ:

package io.javawatch; public class HelloHabrPrototype { public String get() { return "Hello Habr!"; } }; 

рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВред рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣, рд╡рд╣ рд╣реИред

рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ


рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

 private static final String SOURCE = "\n" + " package io.javawatch;\n" + " public class HelloHabr {\n" + " public String get() {\n" + " return \"Hello Habr!\";\n" + " }\n" + " };"; public static final String CNAME = "io.javawatch.HelloHabr"; private static String CODE_CACHE_DIR = "C:/temp/codeCache"; 

рдпреЗ рд╕рднреА "\ n" рдкреНрд▓рд╕рд╕ рдФрд░ рдЗрдВрдбреЗрдВрдЯ рдмреЗрд╣рдж рджрдпрдиреАрдп рджрд┐рдЦрддреЗ рд╣реИрдВред

рдкрд╣рд▓реЗ, рд╣рдо рд╕рдм рдХрд░ рд╕рдХрддреЗ рдереЗ рдХреЛрдб рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдкрдврд╝рд╛ред рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдПрдХ рд╡рдХреНрддрд╛ рд╣реИрдВ рдФрд░ рд╕реНрд▓рд╛рдЗрдб рд╕реЗ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдирд┐рд░реНрдорд╛рдг рд╕рд┐рд░реНрдл рдПрдХ рдЕрд╕рдВрдмрджреНрдз рд╕рдВрджрд░реНрдн рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХреЛрдб рдХрд╣реАрдВ рд╣реИ рдЬреЛ рд╡рд╣рд╛рдВ рдХреБрдЫ рдХрд░рддрд╛ рд╣реИред рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╕реНрд▓рд╛рдЗрдбреНрд╕ рд╕реЗ рджрд░реНрд╢рдХреЛрдВ рдХрд╛ рд╕рдордп рдФрд░ рдзреНрдпрд╛рди рд▓рдЧрддрд╛ рд╣реИред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рдЗрддрдиреЗ рдкрд░ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬрдм рдЖрдкрдХреЛ рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рдЗрдирд▓рд╛рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдЪреНрдЪреЗ рддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдЪрд░реЗ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рд╣рдо рдХреЛрдб рдкрд░ рдХрд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдЙрдарддреЗ рд╣реИрдВ, Alt + Enter рджрдмрд╛рддреЗ рд╣реИрдВ (рдпрд╛ рдЖрдЗрдбрд┐рдпрд╛ рдореЗрдВ рдЖрдкрдХреЗ OSes Quck Fix рдкрд░ рдЬреЛ рднреА рдЪрд▓рддрд╛ рд╣реИ)ред "рдХрдЪреНрдЪреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдореЗрдВ рдмрджрд▓реЗрдВ" рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕ nyashka рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 private static final String SOURCE = ` package io.javawatch; public class HelloHabr { public String get() { return "Hello Habr!"; } };`; public static final String CNAME = "io.javawatch.HelloHabr"; private static String CODE_CACHE_DIR = "C:/temp/codeCache"; 

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА JDK 12 рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдпрдХ рд╣реИред

рд╡реИрд╕реЗ, рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдИ рдХрд╛рдо рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

  • JDK 12 рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ
  • рд╡реИрд╢реНрд╡рд┐рдХ javac рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, --release рдзреНрд╡рдЬ, bytecode рд╕рдВрд╕реНрдХрд░рдг 12, рдЕрддрд┐рд░рд┐рдХреНрдд рдзреНрд╡рдЬ --enable-preview --release рд╕реЗрдЯ рдХрд░реЗрдВ -Xlint:preview
  • рдЕрдм рдХрд┐рд╕реА рднреА рд░рди / рдбрд┐рдмрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЖрдкрдХреЛ VM рдлреНрд▓реИрдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ --enable-preview

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреЛрд╕реНрдЯ рд╣реЗрдбрд┐рдВрдЧ рд╕реЗ рдореЗрд░рд╛ рдкреЗрдВрдЪрдХрд╕ рджреЗрдЦреЗрдВ, рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдЕрдм, рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддреАрди рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрд░реЛрдд рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдмрджрд▓ рджреЗрдВ, рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ:

  public static void main(String[] args) throws Exception { /* 1 */ RuntimeSource file = RuntimeSource.create(); //SimpleJavaFileObject /* 2 */ compile(Collections.singletonList(file)); /* 3 */ String result = run(); /* 4 */ /* ??? */ /* 5 */ /* PROFIT! */ System.out.println(result); } 

"рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡" рдХреЗ рд▓рд┐рдП рдПрдХ SimpleJavaFileObject рд╡рд░реНрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдпрд╣ crutally abstract рд╣реИред рдпрд╣реА рд╣реИ, рдЗрд╕рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рдзрд┐, рдЬрд┐рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╕реНрд░реЛрдд рдХреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдореЗрд╢рд╛ рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдлреЗрдВрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ:

  /** * This implementation always throws {@linkplain * UnsupportedOperationException}. Subclasses can change this * behavior as long as the contract of {@link FileObject} is * obeyed. */ public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException { throw new UnsupportedOperationException(); } 

рддреЛ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдХреБрдЫ рд╡рд╛рд░рд┐рд╕ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореВрд▓ SimpleJavaFileObject рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕рдВрдХрд▓рд┐рдд рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдпреВрдЖрд░рдЖрдИ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдХрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ? рдЗрд╕рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ buildURI , рдЬреИрд╕реЗ рдХрд┐ рдпрд╣рд╛рдБ buildURI рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реИ:

  public static class RuntimeSource extends SimpleJavaFileObject { private String contents = null; @Override public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException { return contents; } private static RuntimeSource create() throws Exception { return new RuntimeSource(CNAME, SOURCE); } public RuntimeSource(String className, String contents) throws Exception { super(buildURI(className), Kind.SOURCE); this.contents = contents; } public static URI buildURI(String className) { // io.javawatch.HelloHabr -> // string:///io/javawatch/HelloHabr.java URI uri = URI.create("string:///" + className.replace('.', '/') + Kind.SOURCE.extension); System.out.println(uri); return uri; } 

рдЕрдм рд╕рдВрдХрд▓рди рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:

  public static void compile(List<RuntimeSource> files) throws IOException { File ccDir = new File(CODE_CACHE_DIR); if (ccDir.exists()) { FileUtils.deleteDirectory(ccDir); FileUtils.forceMkdir(ccDir); } JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); Logger c = new Logger(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(c, Locale.ENGLISH, null); Iterable options = Arrays.asList("-d", CODE_CACHE_DIR, "--release=12", "--enable-preview", "-Xlint:preview"); JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, c, options, null, files); if (task.call()) { System.out.println("compilation ok"); } } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рдЭрдВрдбреЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рддреАрди рдЖрдЗрдбрд┐рдпрд╛ рдореЗрдВ javac рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЧрдП рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реА рдЕрд╕реНрдерд╛рдпреА рдХрдХреНрд╖рд╛ рдЪрд▓рд╛рдПрдВ:

  public static String run() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, MalformedURLException { //   File ccDir = new File(CODE_CACHE_DIR); ClassLoader loader = new URLClassLoader(new URL[]{ccDir.toURL()}); var clss = loader.loadClass("io.javawatch.HelloHabr"); // Java 10 //    Object instance = clss.getConstructor().newInstance(); // Java 9 // Object instance = clss.newInstance(); Method thisMethod = clss.getDeclaredMethod("get"); Object result = thisMethod.invoke(instance); return (String) result; } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ var clss = loader.loadClass Class<?> clss = loader.loadClass рддреБрд▓рдирд╛ рдореЗрдВ рд▓рд┐рдЦрдирд╛ var clss = loader.loadClass рд╣реИ Class<?> clss = loader.loadClass , рдФрд░ рдХреЛрдИ рднреА рдирдпрд╛ vorings рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред var рдХреАрд╡рд░реНрдб рдЯреЙрдк рдЯреЗрди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдиреМ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХрдЯреМрддреА рдХреЗ рд▓рд┐рдП clss.newInstance() рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИред рд╡рд╣ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдирд┐рдЧрд▓рддрд╛ рд╣реИ, рдЬреЛ рдмреБрд░рд╛ рд╣реИред рдирд╛рдЗрди рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдХреЙрд▓рд┐рдВрдЧ getConstructor , рдЬрд┐рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╣реА рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЪрд░ рдХреЛ рд╢рдмреНрдж class , рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдиреЗ рдХрд╕рдо рдирд╣реАрдВ рдЦрд╛рдИред рд╣реЛрдорд╡рд░реНрдХ: рдЖрдк рдЗрд╕реЗ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдФрд░ рдХреНрдпреЛрдВред

рдЦреИрд░, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм рд╣реИред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕реНрд╡рдЪрд╛рд▓рди


рдпрд╣рд╛рдВ рдЖрд▓реЛрдЪрдХ рдХреЛ рдорд╛рдлрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдХрд╛рд▓рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред Google рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд JOOR рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдпрд╣ рдХреЛрдб рд╣реИ:

 package io.javawatch; import org.joor.Reflect; import java.util.function.Supplier; public class Automatic { public static void main(String[] args) { Supplier<String> supplier = Reflect.compile( "io.javawatch.HelloHabr", ` package io.javawatch; public class HelloHabr implements java.util.function.Supplier<String> { public String get() { return "Hello Habr!"; } };` ).create().get(); System.out.println(supplier.get()); } } 

рдорд╛рдиреЛ рд╕рдм рдареАрдХ рд╣реИред рджрд░рдЕрд╕рд▓, рдПрдХ рд▓рд╛рдЗрди рдореЗрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореБрдЭреЗ рд╕реИрдкрд▓рд░ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдерд╛ред

рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИред "рд╣реЗрд▓реЛ рд╣реИрдмрд░!" рдХрдЪреНрдЪреЗ рддрд╛рд░ рдХреА рддрд░рд╣ рд╢рд╛рдмреНрджрд┐рдХ:

 public String get() { return ``Hello Habr!``; } 

рд╕рдм рдХреБрдЫ рддреБрд░рдВрдд рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ "(рдЙрдкрдпреЛрдЧ - рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ)"ред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдордиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдЪрд╛рд▓реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ? рд╣рд╛рдБ, рджреЛ рдХреЗ рд╕рд╛рде рдирд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдордиреЗ рдЗрд╕реЗ рдЖрдЗрдбрд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛, рдФрд░ JOOR рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рддрд╛ рд╣реИ! рдЪрд▓реЛ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рд░рдЦрдирд╛:

 JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); ompiler.getTask(out, fileManager, null, null, null, files).call(); 

рдФрд░ рд╣рдорд╛рд░реЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдЬрдм рд╣рдо рдЦреБрдж рдХреЛ рдЙрд╕реА JavaCompiler рдХрд╣рддреЗ рд╣реИрдВ?

  Iterable options = Arrays.asList("-d", CODE_CACHE_DIR, "--release=12", "--enable-preview", "-Xlint:preview"); JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, c, options, null, files); 

рдФрд░ рдЬреЛрдпреЛрд░ рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕рд┐рд░реНрдл рдПрдХ рдЕрд╢рдХреНрдд рдЕрд╢рдХреНрдд рд╣реИред рд╡реЗ рдЕрдВрджрд░ рднреА рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ!

рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдерд░ рдореЗрдВ рдЬреАрдердм рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХрд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рд╣реБрд╣?

рдФрд░ рдиреИрддрд┐рдХ рд╕рд░рд▓ рд╣реИ, рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЗ рдЙрдкрд╣рд╛рд░ рд╕реЗ рдбрд░реЛред рдХрднреА-рдХрднреА рдкрд╛рда рдХреА рдПрдХ рдЫреЛрдЯреА рджреАрд╡рд╛рд░ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ


рдкрд╛рда рдХреА рджреАрд╡рд╛рд░ рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рд╕рдВрджрд┐рдЧреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рдЬрд╛рд╡рд╛ 9 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╢реЗрд▓ (рдкрд╛рдпрдерди, рд░реВрдмреА рдФрд░ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди) рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╣рд╛рдВ, рдпрд╣ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдзреЗ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public class Shell { public static void main(String[] args) { var jShell = JShell.create(); //Java 9 jShell.eval("String result;"); jShell.eval(`result = "Hello Habr!";`); //Java 12 var result = jShell.variables() //Streams: Java 8, var: Java 10 .filter((@Nullable var v) -> v.name().equals("result")) //var+lambda: Java 11 .findAny() .get(); System.out.println(jShell.varValue(result)); } } 

рдЬрд╛рд╡рд╛ 8 рдореЗрдВ рдзрд╛рд░рд╛рдПрдБ рджрд┐рдЦрд╛рдИ рджреАрдВ, рдФрд░ рдЕрдм рд╡реЗ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ stream() рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЙрд▓рд┐рдВрдЧ variables() рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╕реНрдЯреНрд░реАрдо рджреЗрддрд╛ рд╣реИ, рди рдХрд┐ рдПрд░рд┐рдпрд░ рд▓рд┐рд╕реНрдЯ, рдЬреИрд╕рд╛ рдХрд┐ рдореБрд╢реНрдХрд┐рд▓ рд╕рд╛рдд рдмрдЪреНрдЪреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред рдзрд╛рд░рд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рддреБрд░рдВрдд var рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдм рдЖрдк рд▓реИрдореНрдмрдбрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рднреА var рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЬрд╛рд╡рд╛ 11 рдХреЗ рдмрд╛рдж рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдПрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд░реНрдЧ рд╣реИред рдпрд╣ рдЬрд╛рд╡рд╛ рдХреА рд╡рд┐рднрд┐рдиреНрди рдкреАрдврд╝рд┐рдпреЛрдВ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рд╕рдордЧреНрд░ рдФрд░ рд╕рд╛рдордВрдЬрд╕реНрдпрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдХрд┐рд╕реА рдФрд░ рд╣рд░ рдЬрдЧрд╣ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЬрд╛рд╡рд╛ 12 рдореЗрдВ рдХреЛрдб рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛ 7 рдореЗрдВ рдЬреЛ рдХреБрдЫ рдерд╛, рдЙрд╕рд╕реЗ рд╕реАрдзреЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛


рд╣рдордиреЗ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджреЗрдЦрд╛:

  • 8: рд╕реНрдЯреНрд░реАрдо (рдЯреИрдВрдХ рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП)
  • 9: JShell рдФрд░ рдирдП рдкрджрд╛рд╡рдирдд рддрд░реАрдХреЗ
  • 10: var рдХреАрд╡рд░реНрдб
  • 11: рд▓рдВрдмреЛрджрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд░ рд╡рд┐рдХрд╛рд╕
  • 12: рд░реЙ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЯрд░рд▓реНрд╕ рдФрд░ рдЗрдиреНрдЯреЗрд▓реАрдЬреЗ рдЖрдИрдбрд┐рдпрд╛ рдореЗрдВ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди

рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдЪреЗрддрд╛рд╡рдиреАред рдпрджрд┐ рдЖрдк рд▓рдЧрд╛рддрд╛рд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рд╕рд╣рдХрд░реНрдореА рдкрд╣рд▓реЗ рдкрд╛рдЧрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдкрдиреЗ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╡реЗ рдЖрдкрдХреЛ рдмрд╣реБрдд рджрд░реНрдж рд╕реЗ рд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдореИрдВ рдЕрдм рдирдИ рдЬрд╛рд╡рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдмрд┐рд▓реНрдХреБрд▓ред

рдпрджрд┐ рдЖрдк рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреИрдЧрд┐рд░ рд╡рд▓реЗрд╡ рдХреА рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЙрд╕реЗ рд╣рдмреЗ , рд▓рд╛рдиреА рдореЗрдВ рдЬрд╛рд╡рд╛ рд╣рдм рдХреЗ рдКрдкрд░ рд╕реЗ рдПрдХ рджреЛрд╕реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЬреЛрдХрд░ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдореНрдмрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рдФрд░ рдЬреЗрдкреЛрдЯ рдореЗрдВ - рдЙрдирдХреА рдкреНрд░рд╕рд┐рджреНрдз рдкрд╣реЗрд▓рд┐рдпрд╛рдБ , рдФрд░ рдЗрд╕реА рддрд░рд╣ рдФрд░ рдЖрдЧреЗред рд╡рд╣рд╛рдБ, рдФрд░ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдФрд░ IntelliJ IDEA рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╣реИред рдпрд╣ рд╕рдм YouTube рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдЕрд╕рд▓ рдореЗрдВ, рдЯреИрдЧрд┐рд░ рдХреА рдИрд░реНрд╖реНрдпрд╛ рдХреЗ рдмрд╛рд╣рд░, рдЬреЛ рдЦреБрдж рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдкреЛрд╕реНрдЯ рдирд┐рдХрд▓рд╛ рд╣реИред рдирдП рдЬреЛрдХрд░ рдФрд░ рдЬреЗрдкреЛрдЯ рднреА рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдиреИрддрд┐рдХ рдХрд░реНрддрд╡реНрдп, рдПрдХ рдХрд░реНрддрд╡реНрдп рдЬрд╛рд╡рд╛ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ред рдореЗрд░реА рддрд░рдл рд╕реЗ рддреЛ рдЧреЛрд▓рд┐рдпрд╛рдВ рдЙрдбрд╝ рдЧрдИрдВред рдФрд░ рдЖрдк рд╡рд╣рд╛рдВ, рд╕рд╛рдд рдкрд░, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдмрд╛рд░рд╣рд╡реАрдВ рдЬрд╛рд╡рд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рд░рд╣реЗрдВ, рдЖрдк рд╕рднреА рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдЕрдЪреНрдЫрд╛ рдореВрдб рдФрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдпред рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж

Source: https://habr.com/ru/post/hi429670/


All Articles