์ดํด๋ฆฝ์ค ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ ์๋ฃํ๋ค๋ฉด, ์๋ฐ ๊ฐ๋ฐ์ ์ํ ์๋ฐ ํ๋ก์ ํธ ์์ฑ์ด ํ์ํฉ๋๋ค. ์์ฑ๋ ํ๋ก์ ํธ ํ์ผ์ ์ด์ฉํด์ ์ํ๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ๋ง๋ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด main() ๋ฉ์๋๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์คํํฉ๋๋ค.
์๋ฐ ํ๋ก์ ํธ ์์ฑํ๊ธฐ
1. ์ดํด๋ฆฝ์ค ๋ฉ๋ด์ File > New > Java Project ๋ฉ๋ด๋ฅผ ์ ํํฉ๋๋ค.
2. ์๋ฐ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ธฐ ์ํด์ ํ๋ก์ ํธ ๋ช , ์ฌ์ฉ JRE, ํ๋ก์ ํธ layout ๋ฑ ์ค์ ํ, Finish ๋ฒํผ์ ๋๋ฌ ์์ฑ์ ์งํํฉ๋๋ค.
'New Java Project' ์ฐฝ์ด ๋ํ๋๋ฉด 'Project name' ์ ๋ ฅ๋์ ์์ฑํ ํ๋ก์ ํธ๋ช ์ ์ ๋ ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ JRE ํญ๋ชฉ์์ ์ฌ์ฉํ๊ณ ์ ํ๋ JRE ๋ฒ์ ์ ์ค์ ํ๊ณ 'Finish' ๋ฒํผ์ ๋๋ฌ ์์ฑ์ ์งํํฉ๋๋ค.
Create a Java Project (์๋ฐ ํ๋ก์ ํธ ์์ฑ)
ํด๋น ํ๋ฉด์ Eclipse IDE์์ ์๋ฐ ํ๋ก์ ํธ๋ฅผ ์๋ก ์์ฑํ ๋ ๋ณด์ด๋ 'Create a Java Project'์ฐฝ์ ๋๋ค.
1๏ธโฃ Project name
- ์์ฑํ ์๋ฐ ํ๋ก์ ํธ์ ์ด๋ฆ์ ์ ๋ ฅํ๋ ์นธ์ ๋๋ค.
2๏ธโฃ Use default location
- ํ๋ก์ ํธ๋ฅผ Eclipse์ ๊ธฐ๋ณธ ์ํฌ์คํ์ด์ค ๊ฒฝ๋ก์ ์์ฑํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- โ ์ฒดํฌ์์ IDE์์ ๋ฏธ๋ฆฌ ์ค์ ํด ๋ ๊ธฐ๋ณธ ์์น์ ์ ์ฅ๋ฉ๋๋ค.
- โป ์ฒดํฌ ํด์ ์์ ์ฌ์ฉ์๊ฐ ์ํ๋ ํน์ ํด๋๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
3๏ธโฃ JRE
- ํ๋ก์ ํธ๊ฐ ์ด๋ค Java ์คํ ํ๊ฒฝ(Java Runtime Environment)์ ์ฌ์ฉํ ์ง ์ ํํ๋ ํญ๋ชฉ์ ๋๋ค.
- '๐ Use an execution environment JRE' ๋ ํน์ ์๋ฐ ์คํ ํ๊ฒฝ ๊ทธ๋ฃน(์: JavaSE)๋ด์์ ๊ฐ์ฅ ์ ํฉํ JRE๋ฅผ ์๋์ผ๋ก ์ ํํ์ฌ ์ฌ์ฉํฉ๋๋ค. ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ์ํ๋ ์คํ ํ๊ฒฝ์ ์ ํํ ์ ์์ต๋๋ค.
- '๐ Use a project specific JRE'๋ ํน์ JRE ๋ฒ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ฌ ํด๋น ํ๋ก์ ํธ์์๋ง ์ฌ์ฉํ๋๋ก ์ค์ ํฉ๋๋ค. ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ์ค์น๋ JRE ๋ชฉ๋ก์ ํ์ธํ๊ณ ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 'Configure JREs...' ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ค์น๋ JRE ๋ชฉ๋ก์ ํ์ธํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- '๐ Use default JRE 'jre' and workspace compiler preferences' ๋ ์ํฌ์คํ์ด์ค ์ ์ฒด์ ์ค์ ๋ ๊ธฐ๋ณธ JRE๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ต์ ๋ฒ์ ์ JDK๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข์ผ๋ฉฐ, Eclipse์ ์ค์น๋ JDK ๋ชฉ๋ก์ 'Configure JREs...'์์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
4๏ธโฃ Project layout
- ์๋ฐ ์์ค ํ์ผ(.java)๊ณผ ์ปดํ์ผ๋ ํด๋์ค ํ์ผ(.class)์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ์ง ๊ฒฐ์ ํ๋ ํญ๋ชฉ์ ๋๋ค.
- '๐ Use project folder as root for sources and class files'๋ ์๋ฐ ์์ค ์ฝ๋์ ์ปดํ์ผ๋ ํด๋์ค ํ์ผ ๋ชจ๋ ํ๋ก์ ํธ์ ์ต์์ ํด๋์ ์์นํ๊ฒ ๋ฉ๋๋ค. (์: HelloWorld/src ์์์ ์์ค์ ํด๋์ค๊ฐ ํจ๊ป ์กด์ฌ)
- '๐ Create separate folders for sources and class files (๊ธฐ๋ณธ ์ ํ)๋ ์์ค ์ฝ๋๋ src ํด๋์, ์ปดํ์ผ๋ ํด๋์ค ํ์ผ์ bin ๋๋ target/classes ํด๋์ ๊ฐ์ด ๋ณ๋์ ํด๋์ ์ ์ฅ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ ์ฒด๊ณ์ ์ธ ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ์ํด ์ด ์ต์ ์ ์ ํํฉ๋๋ค. 'Configure default...' ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๊ธฐ๋ณธ ์์ค ํด๋ ๋ฐ ์ถ๋ ฅ ํด๋ ์ด๋ฆ์ ์ค์ ํ ์ ์์ต๋๋ค.
5๏ธโฃ Working sets
- ๊ด๋ จ๋ ํ๋ก์ ํธ๋ค์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ทธ๋ฃนํํ์ฌ IDE ๋ด์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ๋๋ค. ํฐ ํ๋ก์ ํธ๋ ์ฌ๋ฌ๊ฐ์ ์์ ํ๋ก์ ํธ๋ฅผ ๋์์ ์์ ํ ๋ ์ ์ฉํฉ๋๋ค. (์ผ๋ฐ์ ์ผ๋ก ์๋ตํด๋ ๋ฉ๋๋ค.)
6๏ธโฃ Module (Java 9 ์ด์์์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ)
- โ Create module-info.java (module-info.java ํ์ผ ์์ฑ)๋ module-info.java ํ์ผ์ ์์ฑํฉ๋๋ค. ํด๋น ํ์ผ์ ๋ชจ๋์ ์ด๋ฆ, ์์กด์ฑ, ๊ณต๊ฐํ ํจํค์ง ๋ฑ์ ์ ์ํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋ ์์คํ ์ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ๊ฐ์์ฑ์ ์ ์ดํ๋ฉฐ, ๋ฐํ์ ํ๊ฒฝ์ ์ต์ ํํ ์ ์์ต๋๋ค.
- Module name (๋ชจ๋ ์ด๋ฆ)์ ๋ชจ๋ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ด๋ก์ ์ผ๋ก ์๋ฌธ์๋ก ์์ํฉ๋๋ค. ํด๋น ํญ๋ชฉ์ ๋น์๋๋ฉด ํ๋ก์ ํธ ์ด๋ฆ(HelloWorld)์ด ๋ชจ๋ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- Generate comments (์ฃผ์ ์์ฑ)๋ module-info.java ํ์ผ์ ๊ธฐ๋ณธ์ ์ธ ์ฃผ์์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
3. module-info.java ํ์ผ ๋ด, ๋ชจ๋์ ์ค์ ํฉ๋๋ค. (์ ํ์ฌํญ, Java9 ๋ถํฐ ๋์ ๋ ๋ชจ๋ ์์คํ ์ ์ผ๋ถ๋ก ์์ด๋ ์ถฉ๋ถํ ๊ฐ๋ฐ ๊ฐ๋ฅ)
Java 9๋ถํฐ ๋์ ๋ ๋ชจ๋ ์์คํ ์ ์ผ๋ถ์ด๋ฉฐ, ๊ธฐ์กด์ classpath ๊ธฐ๋ฐ ์๋ฐ ํ๋ก์ ํธ๋ module-info.java ์์ด๋ ์ถฉ๋ถํ ๊ฐ๋ฐ ๋ฐ ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ module-info.java ๋ ๋ฐ๋์ ํ์ํ ๊ฑด ์๋๋๋ค.
module-info.java๋ฅผ ๊ผญ ์ค์ ํด์ผ ํ ๊น?
๊ฒฐ๋ก ์ ์ผ๋ก๋ ํ์๋ ์๋๋๋ค. ์๋ฐ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ module-info.java ํ์ผ์ ์์ฑํ๋๋ก ์ ํํ์ง ์๊ฑฐ๋, ์์ ๋ชจ๋ ์์คํ ์ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ ์๋ ์์ต๋๋ค. ์ด์ ๋ฒ์ ์ ์๋ฐ(Java 8 ์ดํ)์์ ๊ฐ๋ฐํ๋ ๋ฐฉ์์ฒ๋ผ, ํด๋์ค๋ค์ ๋จ์ํ ํจํค์ง ๋จ์๋ก ๋ฌถ์ด์ ๊ฐ๋ฐํ๋ ๊ฒ๋ ์ฌ์ ํ ๊ฐ๋ฅํฉ๋๋ค.
ํ์ง๋ง, ์๋ฐ 9 ์ดํ๋ถํฐ๋ ๋ชจ๋ ์์คํ ์ด ๋์ ๋์๊ณ , ์ด๋ฅผ ํ์ฉํ๋ฉด ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ป์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฑฐ๋, ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ํ๋ํํ๋ ๊ณผ์ ์์ ๋ชจ๋ ์์คํ ์ ๊ณ ๋ คํด ๋ณด๋ ๊ฒ๋ ์ข์ต๋๋ค.
๋ชจ๋(Module)์ด๋ ์ ํํ๊ฒ ๋ฌด์์ด๊ณ ์ ์จ์ผ ํ ๊น?
๋ชจ๋์ด๋ ๊ด๋ จ๋ ํด๋์ค๋ค์ ๋ ผ๋ฆฌ์ ๋ฌถ์์ด๋ฉฐ, ๋ช ์์ ์ผ๋ก ์์กด์ฑ๊ณผ ์ ๊ทผ ๋ฒ์๋ฅผ ์ ์ธํ ์ ์๋๋ก ํด์ค๋๋ค. ๋ชจ๋์ ๋ ๊ณ ๋ธ๋ก์ฒ๋ผ, ๋ ๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ก์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ชจ๋ ์์คํ ์ ์ฌ์ฉํ๋ ์ฃผ์ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๐ข ๊ธฐ์กด(classpath ๋ฐฉ์)์ ๋ฌธ์ ์
- ํด๋์ค ์ถฉ๋ ๋ฐ์ ๊ฐ๋ฅ (์: ๋์ผ ํด๋์ค๊ฐ ์ฌ๋ฌ jar์ ์์ ๋)
- ๋ถํ์ํ ํด๋์ค์๋ ์ ๊ทผ ๊ฐ๋ฅ
- ์์กด ๊ด๊ณ๊ฐ ๋ช ํํ์ง ์์
๐ฅ ๋ชจ๋ ์์คํ ์ ํต์ฌ ๋ชฉ์
1. ๊ฐํ ์บก์ํ(Strong Encapsulation)
- ๋ชจ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์ ๋ด๋ถ ํจํค์ง์ ์๋ public ํ์ ๋ง์ ์ธ๋ถ๋ก ๊ณต๊ฐํ๊ณ , ๋ช ์์ ์ผ๋ก ํ์ฉํ์ง ์์ ๋ด๋ถ ๊ตฌํ์ ์จ๊น๋๋ค. ์ด๋ฅผ ํตํด ์๋ชป๋ ์์กด์ฑ ํ์ฑ์ ๋ฐฉ์งํ๊ณ , API๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ๋ฉฐ, ๋ด๋ถ ๊ตฌํ ๋ณ๊ฒฝ์ ๋ํ ์ํฅ์ ์ต์ํ ํ ์ ์์ต๋๋ค. ๋ง์น ์ ์ค๊ณ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฒ๋ผ, ์ฌ์ฉ์๋ ๊ณต๊ฐ๋ ์ธํฐํ์ด์ค๋ง ์ ๊ฒฝ ์ฐ๋ฉด ๋๊ณ ๋ด๋ถ ๋์ ๋ฐฉ์์ ์ ํ์๊ฐ ์๊ฒ ๋ฉ๋๋ค.
2. ๋ช ํํ ์์กด์ฑ ๊ด๋ฆฌ(Explicit Dependencies)
- ๊ฐ ๋ชจ๋์ ์์ ์ด ์์กดํ๋ ๋ค๋ฅธ ๋ชจ๋์ ๋ช ์์ ์ผ๋ก ์ ์ธํฉ๋๋ค(requires ํค์๋ ์ฌ์ฉ). ์ด๋ฅผ ํตํด ์์กด์ฑ ๊ด๋ฆฌ๊ฐ ํจ์ฌ ๋ช ํํด์ง๊ณ , ๋ถํ์ํ ์์กด์ฑ์ ์ค์ด๋ฉฐ, ๋ฐํ์ ์ ๋๋ฝ๋ ์์กด์ฑ์ผ๋ก ์ธํ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
3. ํฅ์๋ ๋ณด์์ฑ(Enhanced Security)
- ํ์ํ ๋ชจ๋๋ง ํฌํจํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ ์ ์์ผ๋ฏ๋ก, ๊ณต๊ฒฉ ํ๋ฉด์ ์ค์ฌ ๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ํ, ๊ฐํ ์บก์ํ๋ ๋ด๋ถ ๊ตฌํ์ ๋ํ ๋ฌด๋จ ์ ๊ทผ์ ๋ง์ ๋ณด์ ์ทจ์ฝ์ ์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
4. ์๊ณ ํจ์จ์ ์ธ ๋ฐฐํฌ(Smaller and More Effcient Deployment)
- ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ํ ๋ชจ๋๋ง ํฌํจํ์ฌ ๋ฐฐํฌํ ์ ์์ผ๋ฏ๋ก, ๋ฐฐํฌ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ๋ฐํ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ํนํ ์๋ฒ ๋๋ ์์คํ ์ด๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ๋ฆฌ์์ค ์ฌ์ฉ์ ์ต์ ํํ๋๋ฐ ์ ์ฉํฉ๋๋ค.
5. ๋ ๋์ ์ ์ง๋ณด์(Improved Maintainability)
- ๋ชจ๋ ๋จ์๋ก ์ฝ๋๊ฐ ๋ถ๋ฆฌ๋์ด ์๊ณ ์์กด์ฑ์ด ๋ช ํํ๊ธฐ ๋๋ฌธ์, ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์์ ํ๊ณ ํ ์คํธํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค.
module-info.java ์์ฑ ๋ฐฉ๋ฒ
module com.example.hello { requires java.base; // ๋ค๋ฅธ ๋ชจ๋ ์์กด (java.base๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ) requires java.sql; // SQL ๊ธฐ๋ฅ์ด ํ์ํ ๋ exports com.example.hello; // ์ธ๋ถ์ ๊ณต๊ฐํ ํจํค์ง }โ
module : ๋ชจ๋ ์ด๋ฆ ์ ์ (์๋ฌธ์๋ก ์์ํ๋ ๊ฒ์ด ๊ด๋ก)
requires : ๋ค๋ฅธ ๋ชจ๋์ ๋ํ ์์กด์ฑ ๋ช ์ (์: java.sql, java.se, java.desktop ๋ฑ)
exports : ์ธ๋ถ์ ๊ณต๊ฐํ ํจํค์ง ์ง์ (์ด๊ฒ๋ง ๋ค๋ฅธ ๋ชจ๋์ด import ๊ฐ๋ฅ)
opens : ๋ฆฌํ๋ ์ ๋ฑ์ ์ํด ์ ๊ทผ ํ์ฉ (์: javaFX, jackson ๋ฑ์์ ์ฌ์ฉ)
์ธ์ module-info.java๋ฅผ ์จ์ผ ํ ๊น์?
โญ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒฝ์ฐ
- Java 9 ์ด์์ ๊ธฐ๋ฅ์ ์ ๋๋ก ํ์ฉํ๊ณ ์ถ์ ๋
- Jigsaw ๊ธฐ๋ฐ ๋ชจ๋ ์ค๊ณ๋ฅผ ๋์ ํ ํ๋ก์ ํธ
- ๋๊ท๋ชจ ์์คํ ๊ฐ๋ฐ ์ ๋ช ํํ ์์กด์ฑ ๋ฐ ์บก์ํ๊ฐ ํ์ํ ๊ฒฝ์ฐ
- ์์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด ๋ฐฐํฌํ ๋
โ ์ฌ์ฉํ์ง ์์๋ ๋๋ ๊ฒฝ์ฐ
- ์๊ท๋ชจ ํ์ต / ํ ์คํธ ํ๋ก์ ํธ
- ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ณผ ํธํ์ด ํ์ํ ๋
- SpringFrameworkd ๊ธฐ๋ฐ ํ๋ก์ ํธ (๋๋ถ๋ถ classpath ๋ฐฉ์)
4. ํด๋์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด์ ํจํค์ง๋ฅผ ์์ฑํฉ๋๋ค. ํจํค์ง๋ช ์ kr.or.junesker๋ก ์งํํ๊ฒ ์ต๋๋ค.
Source Package์ธ 'src' ํด๋์ 'kr.or.junesker' ํจํค์ง๋ฅผ ๋ง๋ค๊ฑฐ๋ ๋ณธ์ธ์ด ์์ฑํ๊ณ ์ ํ๋ ํจํค์ง๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
5. ํด๋น ํจํค์ง์ ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค.
์์ฑํ ํด๋์ค๋ช ์ Name ์ ๋ ฅ๋์ ์ ๋ ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ 'public static void main(String[] args)' ์ฒดํฌ๋ฐ์ค๋ฅผ ์ฒดํฌ ํ 'Finish' ๋ฒํผ์ ๋๋ฌ ํด๋์ค ์์ฑ์ ์งํํฉ๋๋ค. 'public static void main(String[] args)' ์ฒดํฌ๋ฐ์ค์ ์ฒดํฌ ํ ํด๋์ค๋ฅผ ์์ฑํ๋ฉด main() ๋ฉ์๋๊ฐ ํด๋์ค ๋ด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
New Java Class (์๋ก์ด ์๋ฐ ํด๋์ค ์์ฑ)
ํด๋น ํ๋ฉด์ ์๋ก์ด Java ํด๋์ค๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋ค์ด์ผ๋ก๊ทธ ์ฐฝ์ ๋๋ค.
Basic Settings
1๏ธโฃ Source folder
- ์๋ก์ด ํด๋์ค๊ฐ ์์ฑ๋ ์์ค ํด๋๋ฅผ ์ง์ ํฉ๋๋ค.
2๏ธโฃ Package
- ํด๋์ค๊ฐ ์ํ ํจํค์ง ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค. ํจํค์ง๋ ํด๋์ค๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ทธ๋ฃนํํ๊ณ ํด๋์ค ์ค๋ณต ๋ฐฉ์งํ๋๋ฐ ์ค์ํฉ๋๋ค.
3๏ธโฃ Enclosing type (์ฒดํฌ๋ฐ์ค)
- ๋ง์ฝ ๋ด๋ถ ํด๋์ค๋ฅผ ์์ฑํ๊ณ ์ถ๋ค๋ฉด, ์ด ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ๊ณ ์ธ๋ถ ํด๋์ค๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
4๏ธโฃ Name
- ์์ฑํ ํด๋์ค์ ์ด๋ฆ์ ์ ๋ ฅํ๋ ๊ณณ์ ๋๋ค. ํด๋์ค์ ์ด๋ฆ์ UpperCamelCase ๊ท์น์ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
5๏ธโฃ Modifiers
- ํด๋์ค์ ์ ๊ทผ ์ ์ด์ ๋ฐ ์์ฑ์ ์ค์ ํฉ๋๋ค.
ใ> Access Modifiers : public, private, protected, none ์ค ํ๋๋ฅผ ์ ํํ์ฌ ํด๋์ค์ ์ ๊ทผ ๋ฒ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
ใ> Properties : abstract, final, static, sealed, non-sealed ์ค ํ์ํ ์์ฑ์ ์ ํํ ์ ์์ต๋๋ค.
6๏ธโฃ Superclass
- ์์ฑํ ํด๋์ค๊ฐ ์์๋ฐ์ ๋ถ๋ชจ ํด๋์ค๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก java.lang.Obect๊ฐ ์ค์ ๋์ด ์์ผ๋ฉฐ, 'Browse...' ๋ฒํผ์ ๋๋ฌ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์ ํํ ์๋ ์์ต๋๋ค.
7๏ธโฃ Interfaces
- ์์ฑํ ํด๋์ค๊ฐ ๊ตฌํํ ์ธํฐํ์ด์ค๋ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค. 'Add...' ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ธํฐํ์ด์ค๋ฅผ ์ ํํ๊ณ , 'Remove' ๋ฒํผ์ผ๋ก ์ ๊ฑฐํ ์ ์์ต๋๋ค.
Methid Stubs
Which method stubs would you like to create?
1๏ธโฃ public static void main(String[] args)
- ํ๋ก๊ทธ๋จ ์คํ์ ์์์ ์ด ๋๋ main ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ง ์ฌ๋ถ๋ฅผ ์ ํํฉ๋๋ค.
2๏ธโฃ Constructors from superclass
- ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ง ์ฌ๋ถ๋ฅผ ์ ํํฉ๋๋ค.
3๏ธโฃ Inherited abstract methods
- ์์๋ฐ์ ์ถ์ ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ๊ตฌํํ ์ง ์ฌ๋ถ๋ฅผ ์ ํํฉ๋๋ค.
Add Comments
Do you want to add comments? (Configure templates and default value [here]
1๏ธโฃ Generate comments
- ํด๋์ค ๋ฐ ๋ฉ์๋์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ฃผ์์ ์๋์ผ๋ก ์์ฑํ ์ง ์ฌ๋ถ๋ฅผ ์ ํํฉ๋๋ค.
์๋ฐ ํ์ผ ์คํํ๊ธฐ
6. HelloWorldClass.java ์์ค ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
HelloWorldClass.java ์์ค ํ์ผ์ด ์์ฑ๋๊ณ , ๋ น์ 'TODO' ์์ญ์ ์ํ๋ ๋ก์ง์ ์์ฑํฉ๋๋ค.
7. 'Hello, World!'๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์ print๋ฌธ์ ์์ฑํฉ๋๋ค.
'Hello, World!'๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์๋ ์ง์ 'System.out.println' ๊ตฌ๋ฌธ์ ์์ฑํ๊ฑฐ๋ ์๋์์ฑ ๋จ์ถํค 'syso'๋ฅผ ์ ๋ ฅ ํ Ctrl + Space๋ฅผ ์ด์ฉํด ์๋์์ฑํ ์ ์์ต๋๋ค.
8. Run > Run As > Java Application ๋ฉ๋ด๋ฅผ ํตํด 'HelloWorldClass.java'๋ฅผ ์คํํ๊ฑฐ๋ Run ์์ด์ฝ์ ํด๋ฆญ > Run As > Java Application ๋ฉ๋ด๋ฅผ ํตํด ์คํํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋๊ฐ์ง ๋ฐฉ๋ฒ ์ค ํ๊ฐ์ง๋ฅผ ์ ํํด ํด๋น java ํ์ผ์ Run ํฉ๋๋ค.
๋ ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ํ๊ฐ์ง๋ฅผ ์ ํํด 'HelloWorldClass.java'๋ฅผ ์คํํฉ๋๋ค.
9. ์คํ ๊ฒฐ๊ณผ๋ฅผ 'Console'์์ ํ์ธํฉ๋๋ค.
'System.out.println'์ ์ด์ฉํด ์ถ๋ ฅํ๊ณ ์ ํ๋ 'Hello, World!' ๊ฐ ์ฝ์์ ์ถ๋ ฅ๋์๋ค๋ฉด ์ ์์ ์ธ ์คํ์ ์ํ ์ถ๋ ฅ์ ๋๋ค.
@Junesker