JavaRush /Java Blog /Random-KO /์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #93. Java์—์„œ String ํด๋ž˜์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹. Java๋กœ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ...

์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #93. Java์—์„œ String ํด๋ž˜์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹. Java๋กœ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

Java์—์„œ String ํด๋ž˜์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹

์ถœ์ฒ˜: DZone ์ €๋Š” ์ตœ๊ทผ ํ•œ ํฌ๋Ÿผ์—์„œ ๋‹ค์Œ ์งˆ๋ฌธ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. โ€œ์—ฌ๊ธฐ์„œ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฌธ์ž์—ด ๊ฐœ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๊นŒ ? ํ•˜๋‚˜ ๋˜๋Š” ๋‘˜?".
String langName = new String("Java");
ํŠนํžˆ Java์—์„œ String ํด๋ž˜์Šค๊ฐ€ ์ž‘๋™ ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ž˜ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋ณต์žกํ•œ ์งˆ๋ฌธ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ด๋–ป๊ฒŒ ๋Œ€๋‹ตํ–ˆ๋Š”์ง€ ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค . ๊ทธ๋ž˜์„œ ๋Œ“๊ธ€ ์„น์…˜์œผ๋กœ ๋›ฐ์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #93.  Java์—์„œ String ํด๋ž˜์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹.  Java์—์„œ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ - 1๋†€๋ž๊ฒŒ๋„ ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ์ค‘์—๋Š” '1'์„ ์ •๋‹ต์œผ๋กœ ์„ ํƒํ•œ ๋ถ„๋“ค๋„ ๊ณ„์…จ๋Š”๋ฐ, '2'๋ผ๊ณ  ๋‹ตํ•˜์‹  ๋ถ„๋“ค์ด ๋” ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ์ž ์‹œ ๋™์•ˆ ๋‚˜๋Š” Strings ์— ๋Œ€ํ•œ ๋‚˜์˜ ์ง€์‹์„ ์˜์‹ฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค . ์ •๋‹ต์€ ๋ชจ๋“  ๊ฒƒ์ด ์ƒํ™ฉ์— ๋‹ฌ๋ ค ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์งˆ๋ฌธ์€ ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ” ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

1. ์ด ๋ช…๋ น๋ฌธ์ด ์‹คํ–‰๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ช‡ ๊ฐœ์˜ Java String ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๊นŒ?

๋‹ต์€ ํ•˜๋‚˜๋ฟ์ž…๋‹ˆ๋‹ค.

์ด ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰ํ•œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ Java String ๊ฐ์ฒด๊ฐ€ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๊นŒ?

๋Œ€๋‹ต์€ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์™€ ๊ฐ™์€ ๋ช…๋ น๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋คํ”„๋ฅผ ํ™•์ธํ•œ ํ›„์— ๋ถˆํ™•์‹ค์„ฑ์ด ์‚ฌ๋ผ์กŒ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #93.  Java์—์„œ String ํด๋ž˜์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹.  Java - 2์—์„œ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ์œ„ ์ด๋ฏธ์ง€์˜ ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ ๋คํ”„๋Š” ๋™์ผํ•œ ๋‚ด์šฉ์„ ๊ฐ€์ง„ ๋‘ ๊ฐœ์˜ String ๊ฐœ์ฒด๊ฐ€ ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด๋Š” String ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋ฉด ๋‘ ๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํž™์— ์ถ”๊ฐ€๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์ผ๋ฐ˜(ํ’€์ด ์•„๋‹Œ) ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ฌธ์ž์—ด ์ƒ์ˆ˜ ํ’€(SCP)์— ์žˆ์Šต๋‹ˆ๋‹ค. ํž™์˜ ์ผ๋ถ€์ด๊ธฐ๋„ ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ํ›„ ์–ด๋ ค์›€์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•ญ์ƒ ์ƒˆ ๊ฐœ์ฒด๊ฐ€ ํ’€์ด ์•„๋‹Œ ์˜์—ญ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์ธ ์ƒ์„ฑ์ž ์ธ์ˆ˜๋„ ๊ฐ์ฒด์ด๋ฉฐ, ๋ฌธ์ž์—ด ํ’€์— ๋™์ผํ•œ ๋‚ด์šฉ์˜ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ํด๋ž˜์Šค ๋กœ๋”ฉ ์ค‘์— SCP์— ์ƒ์„ฑ ๋ฐ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Java ์–ธ์–ด ์‚ฌ์–‘์—๋Š” "๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด(๋” ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์ƒ์ˆ˜ ํ‘œํ˜„์‹(ยง15.28)์˜ ๊ฐ’์ธ ๋ฌธ์ž์—ด)์ด "์ธํ„ด"๋˜์–ด ๋ฌธ์ž์—ด ๋ฉ”์†Œ๋“œ . intern "์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์œ ํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์œ ํ•œ๋‹ค๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค . Java์˜ ๋ฌธ์ž์—ด์€ ๋ฆฌํ„ฐ๋Ÿด์ด๋ฏ€๋กœ ์ƒ์ˆ˜ ํ‘œํ˜„์‹์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ํ’€๋ง๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋”์šฑ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์‚ฌ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ œ์‹œ๋œ ์ฝ”๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹ค์‹œ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
String java = "Java";
String langName = new String(java);
์ด์ œ ์ฃผ์š” ์งˆ๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น๋ฌธ์€ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ String ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๊นŒ ?
String langName = new String("Java");
์ด ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ณ  ์˜์‹ฌ์„ ์—†์• ๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ์˜ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
public static main([Ljava/lang/String;)V
   L0
    LINENUMBER 11 L0
    NEW java/lang/String
    DUP
    LDC "Java"
    INVOKESPECIAL java/lang/String. (Ljava/lang/String;)V
    ASTORE 1

   L1
    LINENUMBER 14 L1
   FRAME APPEND [java/lang/String]
    GOTO L1

   L2
    LOCALVARIABLE args [Ljava/lang/String; L0 L2 0
    LOCALVARIABLE langName Ljava/lang/String; L1 L2 1
    MAXSTACK = 3
    MAXLOCALS = 2
6ํ–‰์—์„œ๋Š” LDC(Load Constant) ๋ช…๋ น์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ์ƒ์ˆ˜ ํ’€์˜ ์š”์†Œ๋ฅผ ์Šคํƒ์œผ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ๊ฐ์ฒด์ด๊ธฐ๋„ ํ•œ Java ๋ฆฌํ„ฐ๋Ÿด์ด ์ด๋ฏธ ํ’€์— ์ถ”๊ฐ€๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋™์•ˆ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜์—ฌ String ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ ํ•˜๋ฉด ๊ฐœ์ฒด๊ฐ€ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜๊ณ  ํ’€๋ง๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

Java๋กœ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

์ถœ์ฒ˜: Dev.to JavaScript์˜ ์„ธ๊ณ„๋Š” ์œ ์šฉํ•˜๊ณ  ์žฌ๋ฏธ์žˆ๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์˜์‹ฌ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Java ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํฅ๋ฏธ๋กœ์šด ๋Œ€์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์˜คํ”ˆ ์†Œ์Šค Vaadin ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์›น์šฉ ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค (GUI)๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTML์ด๋‚˜ JavaScript๋ฅผ ํ•œ ์ค„๋„ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ฒœ ๋งˆ๋”” ๋ง๋ณด๋‹ค ํ•œ ์žฅ์˜ ์‚ฌ์ง„์ด ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ #93.  Java์—์„œ String ํด๋ž˜์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹.  Java - 3์—์„œ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

๋ฐ”๋”˜์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

์Šคํฌ๋ฆฐ์ƒท ์™ผ์ชฝ์— Java ํด๋ž˜์Šค๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” Apache Tomcat, Eclipse Jetty ๋˜๋Š” ๊ธฐํƒ€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ™์€ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์—์„œ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ ํ•„๋“œ, ์ฝค๋ณด ์ƒ์ž, ๋ฐ์ดํ„ฐ ๊ทธ๋ฆฌ๋“œ, ๋‚ ์งœ ์„ ํƒ๊ธฐ, ์—…๋กœ๋“œ ํ•„๋“œ ๋“ฑ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI) ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ณด๊ธฐ(ํŽ˜์ด์ง€ ๋˜๋Š” UI๋ผ๊ณ ๋„ ํ•จ)๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ ˆ์ด์•„์›ƒ์„ ์‚ฌ์šฉํ•˜์—ฌ UI(์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค) ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ˆ˜์ง, ์ˆ˜ํ‰ ๋˜๋Š” CSS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ์˜ˆ์ œ์—์„œ๋Š” TextField ์™€ Button์„ VerticalLayout ์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค . ๋ทฐ๊ฐ€ ์ค€๋น„๋˜๋ฉด @Route ์ฃผ์„ ์„ ์‚ฌ์šฉํ•˜์—ฌ URL์„ ํ†ตํ•ด ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ์ด ์˜ˆ์—์„œ๋Š” @Route("hello") ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ http://localhost:8080/hello์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค . Vaadin ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Java๋กœ ์ž‘์„ฑ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋Š” HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋ธ”๋ฆฟ ๊ตฌํ˜„( VadinServlet )์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์„œ๋ธ”๋ฆฟ์€ @Route ์ฃผ์„ ์œผ๋กœ ํ‘œ์‹œ๋œ Java ํด๋ž˜์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์— ์˜ฌ๋ฐ”๋ฅธ ๋ณด๊ธฐ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. Vaadin ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฒ˜์Œ ์š”์ฒญ๋˜๋ฉด Vaadin์€ ํด๋ผ์ด์–ธํŠธ ์—”์ง„ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒฝ๋Ÿ‰ JavaScript ํŒŒ์ผ๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ์ด ์—”์ง„์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ด๋ฅผ JSON ๋ฉ”์‹œ์ง€๋กœ ์„œ๋ฒ„์— ๋ณด๋‚ด๋Š” ์ž‘์—…์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. VaadinServlet ๊ฐ์ฒด๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก ์—”์ง„์— JSON ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์—”์ง„์€ ์ด ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ํŽ˜์ด์ง€์˜ ์š”์†Œ(์žˆ๋Š” ๊ฒฝ์šฐ)๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. Vaadin์€ HTTP ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ƒํƒœ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ ํŠธ๋ฆฌ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์€ ํ‘œํ˜„๊ณผ ํ•ด๋‹น ์ƒํƒœ(ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”, ์บก์…˜, ๊ฐ’ ๋“ฑ)๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๋ณด์•ˆ ์ˆ˜์ค€์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋กœ์ง์€ ์„œ๋ฒ„์— ์žˆ์œผ๋ฏ€๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒ€์‚ฌ๋Š” ์„œ๋ฒ„์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, setEnabled(false) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„ํŠผ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๋‹จ์ˆœํ•œ ์™ธ๊ด€ ๊ธฐ๋Šฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋น„ํ™œ์„ฑํ™”๋œ ๋ฒ„ํŠผ์— ์ถ”๊ฐ€๋œ ํด๋ฆญ ๋ฆฌ์Šค๋„ˆ์—์„œ ์–ด๋–ค ๋กœ์ง๋„ ์‹คํ–‰ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์•…์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”๋œ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ VaadinServlet์„ ํ˜ธ์ถœํ•˜์—ฌ ๋งˆ์šฐ์Šค ํด๋ฆญ(ํด๋ฆญ ์ด๋ฒคํŠธ)์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

Vaadin์€ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ. Vaadin์€ Apache License 2.0์— ๋”ฐ๋ผ ๊ฒŒ์‹œ๋œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋ณธ๊ฒฉ์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๊ตฌ์ž…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ƒ์šฉ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์ง€๋งŒ ํ•„์ˆ˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ทฐ๋ฅผ ๋”์šฑ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋น„์ฃผ์–ผ ๋””์ž์ด๋„ˆ ์™€ CRUD ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ๊ตฌ๋…ํ•˜๊ธฐ ์ „์— ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Vaadin์€ JSP ๋ฐ JSF๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ. JSP, JSF ๋ฐ Angular์™€ ๊ฐ™์€ JavaScript ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ Vaadin ๊ณ ๊ฐ์ด ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์—์„œ Vaadin์œผ๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

Vaadin์€ Spring ๋ฐ Jakarta EE๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ. Vaadin์€ Spring ๋ฐ Jakarta EE(์ด์ „ Java EE)์™€ ๊ณต์‹์ ์œผ๋กœ ํ†ตํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Spring Initializr๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ Spring Boot ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Vaadin์„ ์ข…์†์„ฑ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Jakarta EE์˜ ๊ฒฝ์šฐ Jakarta EE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ Hello, World ์˜ˆ์ œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‹œ์ ์—์„œ๋Š” Jakarta EE ๋ฒ„์ „ 8๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ Vaadin์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

๋งŽ์€ Fortune 500๋Œ€ ๊ธฐ์—…์€ ๋ฌผ๋ก  ์„ฑ๊ณต์ ์ธ ์Šคํƒ€ํŠธ์—…๊ณผ ์ „ ์„ธ๊ณ„ 20๋งŒ ๋ช… ์ด์ƒ์˜ ๊ฐœ๋ฐœ์ž๋„ Vaadin์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ ๋ฐ ๊ธฐํƒ€ Vaadin ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š” .
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION