Hello, Java!
Java์๋ ํ์ค ์คํ๊ณผ ๊ตฌํ์ฒด๊ฐ ์์.
Java๋ ์ด๋ฐ์ด๋ฐ ๊ธฐ๋ฅ์ ๋ง์กฑํด์ผ ํ๋ค๋ ํ์ค ์คํ์ด ์์! ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฐ ์คํ์ ๋ง๊ฒ ๊ตฌํํ โ๊ตฌํ์ฒดโ๊ฐ ์์.
- OpenJDK (Oracle)
- Corretto (Amazon)
๊ตฌํ์ฒด ๋ง๋ค ๋์์ ๋์ผํ์ง๋ง, ๋ด๋ถ์ ์ผ๋ก ๊ฐ์์ ์ ๋ง์ ๋ง๊ฒ ์ต์ ํํ ๋ถ๋ถ๋ค์ด ์์ ๊ฒ์. Corretto ๊ฐ์ ๊ฒฝ์ฐ๋ AWS ์๋น์ค๋ ๊ถํฉ์ด ์ข๋ค๊ณ ํจ.
Java ํ์ค ์คํ์๋ javac
์ปดํ์ผ๋ฌ, Run Lib, JVM๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์์ด์ผ ํ๋ค๊ณ ๋ช
์ ๋์ด ์์.
Java ์ปดํ์ผ
javac
์๊ฒ Java์์์ ์ปดํ์ผ๋ฌ์. C์์์ gcc
๊ฐ์ ๋
์์.
java
๋ java ์ปจํ์ผ๋ .class
ํ์ผ์ ์คํํ๋ ๋
์์.
Static Method & Variable
ํด๋์ค ์ธ์คํด์ค๊ฐ ์๋๋ผ ํด๋์ค ์์ฒด์ ๊ณ ์ ๋ ๋ฉค๋ฒ์. ๊ทธ๋์ ํด๋์ค ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ง ์๊ณ ๋ Method๋ Variable์ ํธ์ถํ ์ ์์ต๋๋ค.
static
Variable์ ๋ชจ๋ ํด๋์ค์์ ๊ณต์ ํ๊ฒ ๋ฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ธ๊ทธ๋จผํธ ๊ด์ ์์ ๋ณด๋ฉด DATA
์ธ๊ทธ๋จผํธ์ ์ ์ฅ๋๋ ๋ณ์๋ผ๊ณ ๋ณผ ์ ์๊ณ , ํด๋์ค๋ผ๋ ์์ญ์ ๋ฐ์ธ๋ฉ๋ Global Variable๋ก ๋ฐ์๋ค์ด๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
Static์ non-static Method์ ์ฐจ์ด๋ ๊ทธ Method๋ฅผ ํธ์ถํ ๋, this
ํค์๋๊ฐ ํ์ํ๋ ์๋๋ ์
๋๋ค. ๋ง์ฝ this
๋ฅผ ํตํด ํด๋์ค ์ธ์คํด์ค๊ฐ ๊ฐ๋ ๊ฐ์ ์ ๊ทผํ ํ์๊ฐ ์๋ค๋ฉด, ๊ทธ๊ฑด instance method ์
๋๋ค. ๋ง์ฝ ๊ทธ๋ด ํ์๊ฐ ์๋ค๋ฉด static method๋ก ๊ตฌํํด๋ ๋ฉ๋๋ค!
CLASSPATH
java
์ javac
์์ ์ด๋ค ํด๋์ค๋ฅผ ํธ์ถํ ๊ฒ์ธ์ง ์ง์ํ๋ ํ๊ฒฝ ๋ณ์ ์
๋๋ค.
Kafka Connector๋ฅผ ๋์ธ ๋, ์ด๋ค Connector Plugin์ ์จ์ผ ํ ์ง๋ ์ CLASSPATH
ํ๊ฒฝ ๋ณ์๋ก ๊ฒฝ๋ก๋ฅผ ์ ๋ฌํ์์ต๋๋ค. [ref]
๋ง์ฝ CLI ํ๊ฒฝ์์ ์ฌ์ฉํ๋ค๋ฉด,
$ javac --class-path /path/to/class MyClass.java
$ java --class-path /path/to/class MyClass
์ ๊ฐ์ ํ์์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
๋ฐฐ์ด ์ ์ธ
ArrayList<Integer> numbers = new ArrayList<>();
์ด๋, int
๋ผ๋ ์ ์ํ์ด ์๋๋ฐ, ์ Integer
๋ฅผ ์ฌ์ฉํ๋๋์. ์ด์ ๋ ArrayList
๋ Java์ Generic ํด๋์ค์ด๊ธฐ ๋๋ฌธ์, ๊ฐ์ฒด ํ์
๋ง ์ง์ํ๋ค๊ณ ํจ. ๊ทธ๋์ int
native ํ์
์ด ์๋๋ผ Integer
๋ผ๋ ๊ฐ์ฒด ํ์
์ ์จ์ผ ํ๋ค๊ณ ํจ.
java.lang
ํจํค์ง
System
Integer
,Double
,String
Object
โํจํค์งโ์ง๋ง, ๋ชจ๋ ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์
์์ ์๋์ผ๋ก import
๋จ. ๊ทธ๋์ System.out.println()
์ ์ธ ๋,
Java 11
[10๋ถ ํ ์ฝํก] ํธํธ์ Java 11
์ด๋ป๊ฒ ๊ณต๋ถํ๊ณ ์๋์ง?
์ธํ๋ฐ์์ ์ ๊ฐ์๊ฐ ๋ฌด๋ฃ๋ก ํ๋ ค์๊ธธ๋ ์ผ๋จ ์ ๊ฐ์๋ก ์์ ํ์ต๋๋ค.
โ๊น์ํ์ ์๋ฐ ์ ๋ฌธ - ์ฝ๋๋ก ์์ํ๋ ์๋ฐ ์ฒซ๊ฑธ์โ
๋ฌด๋ฃ๋ผ์ ๋ถ๋ด๊ฐ ์์ด ์์ํด๋ณธ ๊ฒ ๊ฐ๊ณ , ์ฒ์์ Java๋ผ๋ ์ธ์ด์ ์ํ๊ณ๋ฅผ ์ค๋ช ํ๋ ๋ถ๋ถ์ด ์ฐธ ์ข์์ต๋๋ค. ๊ทธ ์ธ์ ๋ท๋ถ๋ถ์ ๊ฐ๋ฐ์ ์์ ์ฒ์ ํ๋ ์ฌ๋ ์์ฃผ๋ก ๋ง์ถฐ์ ธ ์์ด์ ๋น ๋ฅด๊ฒ ๋๊ฒผ์ต๋๋ค. ์์ ๊ฐ์ฌ๋ถ์ด ์ค๋ช ํ๋ ๊ฒ๋ค ์ค์๋ ์ค๊ธ ~ ๊ณ ๊ธ ๋ถ๋ถ์ด ์ ๊ฐ ๋ ์ฌ๋ฐ๊ฒ ๊ณต๋ถ ํด๋ณผ ์ ์๋ ์ฃผ์ ๋ค์ธ ๊ฒ ๊ฐ์ต๋๋ค ใ ใ
์ง๊ธ์ ๋ฐฑ์ค์์ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ธ์ด์ ๋ง์ ๋๊ปด๋ณด๊ณ ์์ต๋๋ค ใ ใ
๋ฐฑ์ค์์ Java ์ ์ถ๋ ฅ
๋ฐฑ์ค์ ํ ๋๋ ์ ์ถ๋ ฅ์ ๋ฐ๊ธฐ ์ํด ๊ณ ๋ คํด์ผ ํ ์ ๋ค์ด ํญ์ ์๋ค.
Scanner
Scanner sc = new Scanner(System.in)
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);
sc.close();
BufferedReader, BufferedWriter
๋ฐฑ์ค ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ฉด, ๋ถ๋ช ๋ก์ง๊ณผ ์๊ฐ๋ณต์ก๋๊ฐ ์ต์ ์ธ๋ฐ๋ โ์๊ฐ์ด๊ณผโ๊ฐ ๋จ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด๊ฒ์ Scanner
์ System.out.print()
๊ฐ ์
์ถ๋ ฅ์ ์ฒ๋ฆฌํ๋ ์๊ฐ์ด ๋๋ ค์ ๊ทธ๋ฐ ๊ฒ์ผ๋ก โ๋ฒํผ๋งโ ๊ธฐ์ ์ ์ฐ๋ BufferedReader
์ BufferedWriter
๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ ๋ฒํผ๋ง์ ์ด๋ฒ์ ๋ณตํํด์ ๋ค์ ์ด์์ฒด์ (OS) ์์
์์ ๋ฐฐ์ ๋ ๋ด์ฉ์ธ๋ฐ, ์ด๋ ๊ฒ ๊ธ๋ฐฉ ๋ค์ ๋ง๋๋ค๋ ใ
ใ
๋ฐ๊ฐ๋ค.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
br.close();
bw.flush();
bw.close();
์ด๋, ์ฃผ์ํ ์ ์ bw.write(int n)
์ ๊ฐ์ด ์ ์๋ฅผ bw.write()
ํ ๊ฒฝ์ฐ ์ด๊ฑธ ์ซ์ String์ด ์๋๋ผ ์์คํค์ฝ๋๋ก ํด์ํด ์ถ๋ ฅํ๋ค. ๊ทธ๋์ ์ ์ ์ถ๋ ฅ ๋๋ String.valueOf(int n)
์ผ๋ก String์ผ๋ก ๋ณํํ ํ์ ์ถ๋ ฅ ํด์ค์ผ ํ๋ค.
Spring
https://start.spring.io/
- Spring Boot!
- ๋ด๋ถ์ tomcat ์๋ฒ๊ฐ ์๋ค!
- ๊ทธ๋ฅ Spring๋ง ์ธ ๋๋ tomcat ์๋ฒ๊น์ง ์ง์ ์ด์ํด์ผ ํ์.
- Component Scan
@Component
Spring Boot๊ฐ ์งฑ์ด๋ค
๊ทธ๋ฅ Spring์ ์ฐ๊ฒ ๋๋ฉด, ๋ด์ฅ ์๋ฒ๊ฐ ์์ด์ ๋ณ๋์ tomcat ์๋ฒ๋ฅผ ๋์์ผ ํจ.
๋ฐ๋ฉด์ Spring Boot์๋ tomcat ์๋ฒ๊ฐ ๋ด์ฅ ๋์ด ์์(embedded server). ๊ทธ๋์ ์๋น ๋ ์ด์ด๋ฅผ ๋ฐ๋ก ๋ํ๋ก์ด ํ ํ์ ์์.
Java Bean
์๋์ ๊ฐ์ ๊ท์น์ ๋ฐ๋ฅด๋ Java ํด๋์ค๋ฅผ ์ง์นญํจ. ์ด๋ฐ ๊ท์น๋ค์ Java Bean ํ์ค์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ.
- ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์์ด์ผ ํจ.
- ๋ชจ๋ ๋ฉค๋ฒ ๋ณ์๋
private
์ผ๋ก ์ ์ธํด์ผ ํจ. - Getter์ Setter ๋ฉ์๋๋ฅผ ์ ๊ณตํด์ผ ํจ.
- Java Bean ๊ฐ์ฒด๋ฅผ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ ์ ์ก์ ์ํด
java.io.Serializable
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํจ.
์ด๋ ๊ฒ ํ๋ ์ด์ ๋ Java์์ ๊ฐ์ฒด์ ์ฌ์ฌ์ฉ ์ฑ์ ๋์ด๊ณ , ๋ ์ฝ๊ฒ ๋ค๋ฃจ๊ธฐ ์ํด์์.
JDBC Integration Test
@SpringBootTest
- ์ Annotation์ Test ์ฝ๋์์ Spring ์ปดํฌ๋ํธ๋ฅผ DI๋ก ์ฃผ์ ๋ฐ๊ธฐ ์ํด์
@Transactional
- JDBC์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ํ์,
COMMIT
์์ดROLLBACK
์ ์คํํด์ ํด๋น ๋ด์ฉ์ด DB์ ๋ฐ์๋์ง ์๋๋ก!
- JDBC์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ํ์,
์๊ฑฐ๋ Unit Test๋์ ๋ค๋ฅธ ๊ฐ๋ ์. Integration Test๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์ํธ์์ฉ๊น์ง ํ ์คํธ์ ํฌํจ๋์ด ์์.