J2CL - рдмреЗрдЯрд░ рд▓реЗрдЯ рдереЗрди рдиреЗрд╡рд░

рдЙрдирдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд╛рд░ рдореЗрдВ рдЕрднреА рддрдХ рдХрд┐рд╕реА рдХреЛ рджреЗрд░ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред
рд╡реИрд▓реЗрдВрдЯрд╛рдЗрди рдбреЛрдорд┐рд▓


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




рдкрд╣рд▓реА рдШреЛрд╖рдгрд╛ рдХреЗ 3 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рдж рдХреЛ рдкреИрджрд╛ рд╣реБрдП рдмрд┐рдирд╛ рднреА рдмрд╛рдЬрд╛рд░ рдЦреЛ рджрд┐рдпрд╛ рд╣реИред рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Scala.js , Kotlin.js рдФрд░ JSweet рд╣реИрдВ , рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд╣реГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИред рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, рдХрдИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдмрд╕реЗ рд╕рдорд░реНрдкрд┐рдд рдЬрд╛рд╡рд┐рд╕реНрдЯреЛрдВ рдиреЗ "рдЬрд╛рд╡рд╛ рдлреЙрд░ рдлреНрд░рдВрдЯ-рдПрдВрдб" рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдврд╛рдВрдЪреЗ рдкрд░ рдЕрдВрдХреБрд╢ рд▓рдЧрд╛рдпрд╛ рд╣реИред


рдЪреВрдБрдХрд┐ рд░рд┐рд▓реАрдЬрд╝ рд╣реБрдЖ рдерд╛, рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ рдХреНрдпрд╛ рд╣реБрдЖ, рдФрд░ рдпрд╣ рдХрд┐рд╕рдХреЗ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИред


рд╡рд┐рдЪрд╛рд░


рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЬреЗрд╡реАрдПрдо рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рд╣реИред Google рд╡реЗрдм рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╕рдлрд▓рддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ: рдЙрдиреНрд╣реЛрдВрдиреЗ рдорд╛рдирдХ рдЬрд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ, рд╡рд┐рдХрд╕рд┐рдд рдЙрддреНрд╕рд░реНрдЬрди рддрдВрддреНрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрдирд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХреАред


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ: рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ, рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдЬрд╛рд╡рд╛ рдЖрдИрдбреАрдИ рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░ рдЙрдкрдХрд░рдгред рдореВрд▓ рд░реВрдк рд╕реЗ GWT рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд╡реЗрдм рдкреИрдХ рдФрд░ рдЕрдиреНрдп рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓реНрд╕ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред


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


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


рдкреГрд╖реНрдарднреВрдорд┐ J2CL


2015 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, Google GWT рдЯреАрдо рдиреЗ рдПрдХ рдирдпрд╛ рдЙрддреНрдкрд╛рдж рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ - рдЬреЛ рдЖрдкрдХреЛ рдлреНрд░рдВрдЯ-рдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореЗрдВ рдЬрд╛рд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


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


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


рдпрд╣ рдЬрд╛рдирд╡рд░ рдХреНрдпрд╛ рд╣реИ


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


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

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, J2CL рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕ рдмрд╛рдЗрдЯрдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЬрд╛рд╡рд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐, Google рд╡реЗрдм рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬрд╛рд╡рд╛ 11 рдХреА рд╕рднреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВред


J2CL GWT рд╡рд┐рдЬреЗрдЯ, GWT RPC рдФрд░ рдЕрдиреНрдп GWT рд▓рд╛рдЗрдмреНрд░реЗрд░реА - рдХреЗрд╡рд▓ рдореВрд▓ рдЬрд╛рд╡рд╛ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХреАрдХрд░рдг рдЗрдВрдЬрди, JSInterop рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред


рдпрд╛рдиреА рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯрд░ рдХреЗ рд╕рд╛рде GWT рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реАрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдФрд░, рдЪреВрдВрдХрд┐ рдирдпрд╛ рдЙрддреНрдкрд╛рдж рдЕрдм GWT рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ GWT рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ J2CL рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, GWT 3 рдХреА рдпреЛрдЬрдирд╛рдмрджреНрдз рд░рд┐рд▓реАрдЬ J2CL рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╣реЛрдЧреА, рдЬрд╣рд╛рдВ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рд╕реЗ рд╣реА рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдореМрдЬреВрджрд╛ рдЬрд╛рд╡рд╛ рд╕рдВрдЧрддрддрд╛ рдкреНрд░рддрд┐рдмрдВрдз GitHub рдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдореВрд▓ рд░реВрдк рд╕реЗ, рд╡реЗ GWT рдореЗрдВ рд╕рдорд╛рди рдереЗ - рдХреЛрдИ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рдХреЛрдИ рдЬрд╛рд╡рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрд▓рдЧ рд╣реИ - рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдореЗрдВ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рдШрдЯрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ JVM рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдиреНрдпреВрдирддрдо рдУрд╡рд░рд╣реЗрдб рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЯрди рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ред


рд╣рд╛рд▓рд╛рдВрдХрд┐ J2CL рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ OSS рд╕рдВрд╕реНрдХрд░рдг рдЕрднреА рднреА рдЗрд╕рд╕реЗ рджреВрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реНрдерд┐рд░ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред


Google рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ Bazel рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд▓рд╕ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╕реАрдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ J2CL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдорд╛рд╡реЗрди / рдЧреНрд░реИрдбрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореБрджрд╛рдп рдХреЛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред


рдХреЛрд╢рд┐рд╢


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, J2CL рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Mac OS рдпрд╛ Linux рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рджреВрд╕рд░реЗ, рдЖрдкрдХреЛ Bazel рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - Google рд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ рд╡рд┐рджреЗрд╢реА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реАред


рдЕрдм рдЖрдк рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╣реИрд▓реЛрд╡рд░реНрд▓реНрдб ред


> bazel build src/main/java/com/google/j2cl/samples/helloworld:helloworld 

рдпрджрд┐ рд╣рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕реБрдЦрдж рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛:


 > cat bazel-bin/src/main/java/com/google/j2cl/samples/helloworld/helloworld.js document.write('Hello from Java! and JS!'); 

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


рдЕрдЧрд░ xxx.js рд╣реИ рддреЛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдХреНрдпреЛрдВ рд╣реИ


рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдХреНрдпреЛрдВ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╣ рдЕрднреА рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, J2CL рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдордЬрдмреВрдд рд╡рд┐рдЪрд╛рд░ рд╣реИ - рдЬреИрд╕реЗ рдХрд┐ рд▓реЛрдЧ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡реИрд╕реЗ рд╣реА рд╕рд╛рдордиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджреВрд╕рд░реА рдУрд░, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЗрд░ рд▓рдЧрддреА рд╣реИред


JS рдореЗрдВ рдирдП рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕, рдЬреИрд╕реЗ Kotlin.js рдФрд░ Scala.js, рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, J2CL рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛ред


рдПрдХ рдЕрд▓рдЧ рдмрд┐рдВрджреБ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рд╣реА рд╣реИред рд╡рд░реНрдмреЛрдЬрд╝ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрдпреЛрдВ рд▓рд┐рдЦреЗрдВ, рдпрджрд┐ рдЖрдк рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреЛрдЯрд▓рд┐рди рдореЗрдВ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рднрд╛рдЧ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ?


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдПрдХ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ - JSweet рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ , рддреЛ рдореБрдЭреЗ J2CL рдкрд░ рдЕрдзрд┐рдХ рднрд░реЛрд╕рд╛ рд╣реИред JSweet рдЯреВрд▓реАрдВрдЧ рдмрд╣реБрдд рдореИрддреНрд░реАрдкреВрд░реНрдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рддреИрдпрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди JSweet рдХреЗ рдкрд╛рд╕ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдореБрджрд╛рдп рд╣реИ рдФрд░ рдпрд╣ рд▓рдЧрднрдЧ рд╕рднреА рдПрдХ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред


рдХреНрдпрд╛ рдЖрдк рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛрдб рдХрд╣рддреЗ рд╣реИрдВ?


рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдкрд╛рдЪреЗ 2.0 рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╣реИред


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХрд╛ рдорддрд▓рдм рдПрдХ рдЦреБрд▓реА рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ ред рд╕рдореБрджрд╛рдп рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдирд┐рд░рд╛рд╢рд╛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЖрдИ, J2CL рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЗрд╕рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕рдХреА рдЕрдВрддрд┐рдо рдПрдкреАрдЖрдИ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдФрд░ рди рд╣реА рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреИрдЪ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдирд╣реАрдВ рд╣реИред


рдЪрд▓реЛ рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛ рдФрд░ рдЙрддреНрдкрд╛рдж рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реЛред


рдЕрдкрдбреЗрдЯ: GWT2 рд╕реЗ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ J2CL рдПрдкреНрд▓рд┐рдХреЗрд╢рди - https://github.com/DominoKit/dominodo

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


All Articles