SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
JAVA 기초
작성자 : 홍효상
이메일 : hyomee@naver.com
소스 : https://github.com/hyomee/JAVA_EDU
프로그램은 사람이 이해하는 코드를 작성.
느려도 꾸준하면 경기에서 이긴다.
Content
소스 : https://github.com/hyomee/JAVABASIC
1. 프로그램 기초
1. 프로그램 이란
2. JAVA
3. JAVA 설치
4. 개발 Tool 설치
5. 첫번째 프로그램
6. 자바 프로그램 구조
7. JVM
8. 기본 입출력
1. 프로그램이란
1. 프로그램 기초
• 목록, 순서,예정계획이란뜻
• Rapp&Poertner(1992) -특정목표를달성하기위한활동의집합체
• Y
ork(1983) - 목표를달성하기위한일련의상호의존적인활동
• Smith(1989)–특정목표를달성하기위해서만들어진조직적인활동
• 어떤작업을하기위한일련의순서를컴퓨터에게알려주기위한파일
• 일련의순서를컴퓨터가이해할수있는명령어들의모음
• 컴퓨터가이해할수있는명령어는0,1로되어있는데사람이이해할
수있는언어를프로그램언어라한다.
• 두산백과사전:컴퓨터를실행시키기위해차례대로작성된명령어모음
“ 어떤 목적을 달성 하기 위해서 프로그램 언어로 진행 순서를 작성 한 것 “
1-1. 프로그램 이란
• 어떤목적을수행하기위해만든파일
프로그램 실행
입력 ( 마우스, 키보드 등 )
처리 ( 계산, 화면 출력 등 )
프로그램 종료
처리하기위한명령어
을프로그램언어로작성
• 시스템프로그램
-컴퓨터시스템과하드웨어들을제어및관리하는프로그램
-예) 윈도우,리눅스,장치드라이버,컴파일러등
• 응용프로그램
-사용자가원하는기능을제공하는프로그램
-엑셀,게임,워드등…..
사전적의미 컴퓨터프로그램
프로그램파일(.exe) 프로그램종류
프로그램과소프트웨어
• 프로그램
-컴파일된결과물뿐만아니라,프로그래머가작성한소스코드까지도포함.
• 소프트웨어
-프로그램뿐만아니라CD,설명서,제품포장등패키지전체.
2. 프로그램 언어
1. 프로그램 기초
• 컴퓨터시스템을구동시키는소프트웨어를작성하기위한형식언어
• 컴퓨터를이용하여특정문제를해결하기위한프로그램을작성하기
위해사용되는언어
• 저급 언어
-기계어
● 컴퓨터가직접이해할수있는언어
● 0과1의2진수형태로표현되며수행시간이빠르다.
● CPU에내장된명령들을직접사용하는것으로,프로그램을작성하고이해하기가
어렵다.
● 기종마다기계어가다르므로언어의호환성이없다.
-어셈블리어
● 기계어와1:1로대응되는기호로이루어진언어로,니모닉(Mnemonic)언어
● 하드웨어제어에주로사용되며,언어의호환성이없다.
• ● 컴퓨터가직접이해할수없으므로어셈블리어로작성된프로그램은어셈블러를
사용하여기계어로번역해주어야한다.
• 고급 언어
● 컴파일러언어라고도하며,인간이실생활에서사용하는자연어와비슷한형태및
구조를가지고있다.
● 하드웨어에대한깊은지식이없어도프로그램작성과수정이용이
● 컴퓨터가이해할수있는기계어로번역하기위해컴파일러나인터프리터가사용
● 기계어와어셈블리어를제외한C,JAVA,Python등의 언어가고급언어
“ 사람이 이해 할 수 있는 표현법을 사용 하여 프로그램밍 할 수 있는 언어 “
1-1. 프로그램 이란
의미 언어종류
2. 프로그램 언어
1. 프로그램 기초
• 컴파일러는고급언어로작성된프로그램전체를목적프로그램으로
번역한후,링킹작업을통해컴퓨터에서실행가능한실행프로그램을
생성
• 번역실행과정을거쳐야하기때문에번역과정이번거롭고번역시간
이오래걸리지만,한번번역한후에는다시번역하지않으므로실행속
도가빠르다.
• 컴파일러를사용하는언어에는C언어Java등
• 인터프리터는 고급 언어로 작성된 프로그램을 한 줄 단위로
받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로
즉시 실행시키는 프로그램.
• 프로그램이 직접 실행되므로 목적 프로그램은 생성되지 않음
• 줄 단위로 번역, 실행되기 때문에 시분할 시스템에 유용하며
원시 프로그램의 변화에 대한 반응이 빠르다
• 번역 속도는 빠르지만 프로그램 실행 시 매번 번역해야 하므
로 실행 속도는 느리다.
• CPU의 사용시간의 낭비가 크다.
• 인터프리터를 사용하는 언어에는 Python, BASIC, SNOBOL,
LISP
, APL등
“ 사람이 이해 할 수 있는 표현법을 사용 하여 프로그램밍 할 수 있는 언어 “
1-1. 프로그램 이란
컴파일러 인터프리터
컴파일러와인터프린터차이점
1. 자바
1. 프로그램 기초
• 썬마이크로시스템즈의제임스고슬링(JamesGosling)과 다른연구원들이개발한객체지향적프로그래밍언어
• 컴파일된코드가플랫폼독립적
• 자바로개발된프로그램은CPU나운영체제의종류에관계없이JVM(JavaVirtualMachine)을 설치할수있는시스템에서는어디서나실행
“ 한 번 적성하면 어느 플랫폼에서나 실행 ( 플랫폼 독립성 )“
1-2. JAVA
JAVA
• 객체지향방법론을사용해야한다.
• 같은프로그램(바이트코드)이여러운영체제(마이크로프로세서)에서실행될수있어야한다.
• 컴퓨터네트워크접근기능이기본으로탑재되어있어야한다.
• 원격코드를안전하게실행할수있어야한다.
• 다른객체지향언어들의좋은부분만가지고와서사용하기편해야한다.
철학 ( 자바 언어의 5가지 핵심 목표 )
JVM
Windows
JVM
Mac
JVM
Linux
.class
( 자바 실행 파일 )
.java
( 자바 소스 파일 )
컴파일
바이트 코드
2. JDK & JRE
1. 프로그램 기초
• Java환경에서돌아가는프로그램을개발하는데필요한툴들을모아놓은소프트웨어패키지
• JRE(JavaRuntimeEnvironment)와 Java바이트코드컴파일러,Java디버거등을포함하는개발도구를포함하고있다.
• Oracle JDK는상업적이용을할경우유료
• 무료로이용하고자할경우
- Oracle의 OpenJDK빌드,ZuluJDK,AdoptOpenJDK 등의OpenJDK기반빌드를이용
- OpenJDK는GPL라이선스이지만classpath exception이적용되므로
Oracle의 지원이메이저버전이올라가는6개월마다끊기는점외에는자유롭게사용
“ 자바 개발 도구와 개발 실행 환경 “
1-2. JAVA
JDK(Java Development Kit)
• 컴퓨터의운영체제소프트웨어상에서실행되고클래스라이브러리및특정Java프로그램이
실행해야하는기타리소스를제공하는소프트웨어계층
• JDK를사용하여작성된Java코드를JVM에서이의실행에필요한필수라이브러리와결합한
후결과프로그램을실행하는JVM의인스턴스를작성
-수정없이도어떤운영체제에서든Java프로그램을실행
JRE(Java Runtime Environment)
• 자바바이트코드를실행하는실행기
• 개발자가 이해하는 자바 언어를 JVM이 이해하는 자바 바이트코드로 번역
JVM(Java Virtual Machine)
JDK
JRE
JVM
컴파일러, 디버거
클래스 로더, 자바 API
런타임 라이브러리
• JDK, JRE, JVM 관계
1. 자바 설치
1. 프로그램 기초
1-3. JAVA 설치
JAVA 설치
1. OPENJDK다운로드
* 다운로드 : http://jdk.java.net/java-se-ri/11
➢ 설치 폴더 : D:JAVA_202202download
① Windows/64 java Development 클릭
② D:JAVA_202202download 선택
- 폴더가 없으면 생성
③ 저장 버튼 클릭
①
②
③
1. 자바 설치
1. 프로그램 기초
1-3. JAVA 설치
JAVA 설치
2. 다운로드받은파일압축풀기
① 다운 받은 폴더를 탐색기로 연다.
② 압축 해제를 한다.
1. 자바 설치
1. 프로그램 기초
1-3. JAVA 설치
JAVA 설치
3. JAVA 설치
① D:JAVA_202202jdk-11 로 copy 한다.
• 디렉토리를 선택 후 오른쪽 마우스 클릭
• 복사 클릭
• 설치 폴더 이동
• 마우스 오른쪽 클릭
• 붙여넣기
* 최종 모습
1. 자바 설치
1. 프로그램 기초
1-3. JAVA 설치
JAVA 설치
4. Windows 환경설정
① 윈도우 + R 클릭 후 실행 창에서
sysdm.cpl 입력 후 확인 클릭
② 시스템 속성 창 에서 고급 탭 클릭 ③ 환경 변수 버튼 클릭
1. 자바 설치
1. 프로그램 기초
1-3. JAVA 설치
JAVA 설치
4. Windows 환경설정
④ 환경 변수 창 에서 시스템 변수 새로 만들기 클릭 ⑤ 시스템 변수 창에서 JAVA_HOME path 설정
변수 이름 : JAVA_HOME
변수 값 : D:JAVA_202202jdk-11bin
환경 변수 창 > 시스템 변수
JAVA_HOME 설정 확인
1. 자바 설치
1. 프로그램 기초
1-3. JAVA 설치
JAVA 설치
4. Windows 환경설정
⑥ 시스템 변수 영역 에서 Path 선택 후 편집 클릭 ⑤ 환경 변수 편집 창에서 새로 만들기 선택
1. 자바 설치
1. 프로그램 기초
1-3. JAVA 설치
JAVA 설치
4. Windows 환경설정
⑥ 아래 부분에 행이 추가 됨 , 찾아보기 클릭 ⑦ 폴더 찾아보기 창에서 java 설치 폴더 선택
D:JAVA_202202jdk-11bin
%JAVA_HOME%bin 입력 후 확인 버튼 클릭
-> 다음 페이지 로 이동 (8)번 이동
%JAVA_HOME%bin 입력 하지 않은 경우만 실행
1. 자바 설치
1. 프로그램 기초
1-3. JAVA 설치
JAVA 설치
4. Windows 환경설정
⑧ 환경 변수 추가 된 것 확인 ⑨ 환경 변수 창에서 확인 클릭
1. 자바 설치
1. 프로그램 기초
1-3. JAVA 설치
JAVA 설치
4. Windows 환경설정
⑪ 시스템 속성 창에서 확인 버튼 클릭 ⑫ 설치 확인
- 윈도우 + R 클릭 후 실행 창에서 cmd 입력 후 확인 클릭
- Java –version 입력 후 엔터
1. 개발 Tool 설치
1. 프로그램 기초
1-4. 개발 Tool 설치
개발 Tool 설치
1. Eclipse 설치
• 다운로드 : https://www.eclipse.org/downloads/packages/release/kepler/sr1/eclipse-ide-java-developers
1. 개발 Tool 설치
1. 프로그램 기초
1-4. 개발 Tool 설치
개발 Tool 설치
1. STS 설치
• 다운로드 : https://spring.io/tools
1. 개발 Tool 설치
1. 프로그램 기초
1-4. 개발 Tool 설치
개발 Tool 설치
1. STS 설치
• 다운로드 : https://www.jetbrains.com/idea/download/#section=windows
다운로드 : D:JAVA_202202download
Install 폴더 : D:JAVA_202202toolintellj
1. 첫 프로그램
1. 프로그램 기초
1-5. 첫번째 프로그램
첫 번째 프로그램
1. 자바 프로그램 구조
1. 프로그램 기초
1-6. 자바 프로그램 구조
자바 실행 과정
자바소스
(.java)
자바소스
(.class)
JVM
메모리 할당
프로그램실행
( main() )
Method 영역 Stack 영역 Heap 영역
JAVA File 구조
▪ 자바소스파일의확장자는,java
▪ 자바파일명은접근지정자가public인Top Level Class가있다면Class Name으로되어야함,없다면아무이름으로사용할수있음
▪ public Class 가main Method를가진다.
▪ package 가있다면,해당자바파일은반드시패키지명의폴더에존재해야한다.
Class 영역 Static 영역 Final 영역
package 선언 : 소스 파일의 위치
/** ~ */ : 여러 줄 주석
public : 다른 패키지에서도 사용 ( 공개 )
class : 클래스르 가리키는 자바 키워드, 파일명과 동일
- 내부 구성 요소 : field, method, constructor, inner class
자바로 만든 Application의 시작점
- Application에 하나 존재 해야 함 , 여러 개 존재 시 실행 시 지정 해 주어야 한다.
1. JVM
▪ StrackOverflowError
: Stack Frame에 Method를 추가 할 공간이 없을 때 발생
: JVM –Xss 옵션울 사용 하여 크기 조정
▪ OutOfMemoryError
: 실행 중인 Thread가 많아서 JVM Stack를 할당 할 수 없을 때 발생
▪ JRE(Java Runtime Enviroment)는 크게 API, JVM으로 구성 됨
▪ JVM(자바 가상 머신, Java Virtual Machine)은 클래스 로더를 통해 자바 클래스를 메모리로 로드하여 자바API를 이용하여 실행한다.
▪ Method안에서 선언한 로컬 데이터는 Thread로 부터 안전 하다는 의미는 JVM Stack에 저장 된 데이터는 해당 Thread에서만 사용 할 수 있기 깨문 이다,
▪ 객체는 new연산자에 의해 메모리 heap에 생성 되고 JVM의 GC(Garbage Collector)에 의해 자동으로 Heap 메모리에서 해제 됨.
Class
- main()
2. Main용 JVM stack ( Thread Stack )
3. Main용 Stack Frame 생성 ( push )
: main 함수 실행 전
4. 호출 되는 Method 별로 Stack Frame 생성 ( push )
5. Method가 종료 되면 Stack Frame 소멸 ( pop )
6. 최종적으로 main이 종료 되면 마지막으로 main용 Stack Frame 소멸 ( pop )
7. Main용 JVM Stack 해제
1. Main thread 실행
기본 자료형 4Byte -> 플랫폼 독립성 보장
1. 프로그램 기초
1-7. JVM
1. JVM
자바프로그램을 실행하면 JVM의 클래스 로더가 컴파일 된 자바 바이트코드(.class 파일)을 런타임 데이터 영역(Runtime Data Area)의 Method Area에 로드
하고 실행 엔진(Execution Engine)이 이를 기계어로 변역 하면서 실행.
1. 프로그램 기초
1-7. JVM
1. JVM
운영체계로 부터 부여 받은 메모리 영역
• Method Area
: 모든 쓰레드가 공유 하는 영역, JVM이 시작 할 때 생성, 클래스와 인터페이스 Method에 대
한 바이트 코드, 전역변수, 런타임 상수 등이 저장됨
-> Main Method가 컴파일 된 Byte Code가 있음
• Heap Area
: 객체를 저장 할 떄 사용 하는 영역 => 성능 고려 필요
• JVM Stack ( 임시 메모리 )
: 실행 시 Stack Frame이라는 각 쓰레드 마다 하나씩 할당
: 실행되는 메소드의 Stack Frame에는 지역변수, 메소드의 인자, 메소드의 리턴 값, 리턴 번
지 등이 저장되고 Stack Frame은 메소드가 끝나면 사라짐
• Program Counter Register
: 쓰레드마다 하나씩 존재 : JVM의 명령어 주소
• Runtime Constant Pool
: Method Area에 할당, 상수, 메소드, 필드를 저장
: 자바 프로그램이 참조 할 경우 메모리 주소를 찾아서 참조함
- Native Method Stack
: 자바 이외의 언어로 작성된 코드를 위한 Stack ( C, C++ 등 )
Thread
PC Register
JVM STACK
Native Method
STACK
Heap
- 객체 저장
Method Area
- Byte Code
: Static 변수
Runtime
Constant
Pool
생성/제거 관리
B Method 실행
Stack Frame
main
A
Method
B
Method
B Method 종료
생성
제거
Stack Frame
main
A
Method
1. 프로그램 기초
1-7. JVM
- 메소드 내에서 객체 참조 하면 선언한 변수는 지역변수로 Stack에 위치 하여 Heap에 저장
된 객체에 대한 참조 값을 가짐
- New 연산자는 Heap 메모리에 객체를 만들고 그 객체의 참조 값을 반환 함
User user = new User()
Stack
- user
- user1
Heap
- User()
참조
User user2 = user
참조
2. JVM
Method Area
- main()
- sum()
- counter : 0
Stack
total : args :
main()
1. 메인 실행
Heap Area
- NULL
Stack
total :, args :
i : 10, j : 30, sum : 40
Stack
total : 40, args :
2. SUM 실행 3. SUM 종료
* MAIN 종료 후 모두 사라짐
1. ClassMain Class가 시작 할 때 할당 됨
Method Area
- main()
- sum()
- counter : 1
class ClassMain {
static int counter;
public static void main(String[] args) {
int total = sum(10, 30);
}
static int sum(int i, int j) {
int sum = i + j;
counter = counter + 1;
return sum
}
}
1. 프로그램 기초
1-7. JVM
1. 콘솔에 출력
1. 프로그램 기초
1-8. 기본 입출력
콘솔에 문자열 출력
System.out.print()
▪ public void print(String s)
▪ 자료형 별로 Method가 선언 되어 있음 - Overloading
▪ 모든 출력을 한 줄로 출력
System:java.lang.System
Out : System.out :
- public static final PrintStream out = null
print:java.io.print()
-public void print(String s)
System.out.printf()
▪ printf(String format, Object ... args)
▪ format : 출력 포맷, …args : 가변 인자
▪ 출력 포맷을 지정 하여 문자 출력 – Overloading
▪ 가변 인자 개수 만큼 출력 포맷 지정
Overloading : 동일한 이름에 매개변수 자료형이 틀린 것
1. 콘솔에 출력
1. 프로그램 기초
1-8. 기본 입출력
콘솔에 문자열 출력
System.out.println()
▪ public void println(String x)
▪ 자료형 별로 Method가 선언 되어 있음 - Overloading
▪ 출력 후 자동 개행
2. 콘솔 입력
1. 프로그램 기초
1-8. 기본 입출력
콘솔 입력
()
▪ public Scanner(InputStream source ) : java.util
▪ source : 입력 장치
▪ 지정된 입력 스트림에서 입력(스캔)된 값을 scanner 객체를 구성
➢ 자료향에 따라서 사용 하는 Method가 틀림

Contenu connexe

Tendances

자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)Chang-Hwan Han
 
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSpring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSanghyuk Jung
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙Hyosang Hong
 
PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약정아 손
 
자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화Sungchul Park
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개Sungchul Park
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로Oracle Korea
 
프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.Young-Beom Rhee
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
스프링 어플리케이션의 문제해결사례와 안티패턴
스프링 어플리케이션의 문제해결사례와 안티패턴스프링 어플리케이션의 문제해결사례와 안티패턴
스프링 어플리케이션의 문제해결사례와 안티패턴Sanghyuk Jung
 
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기duriepark 유현석
 

Tendances (20)

자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)
 
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
(C#,멀티쓰레드강좌)쓰레드, STA, MTA개요, 간단한 멀티쓰레드 예제_닷넷,C#,WPF,자마린실무강좌
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
Java class
Java classJava class
Java class
 
Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSpring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDD
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙
 
PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약PHP 7의 새로운 특징과 기능 요약
PHP 7의 새로운 특징과 기능 요약
 
자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개
 
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
(국비지원/실업자교육/재직자교육/스프링교육/마이바티스교육추천)#13.스프링프레임워크 & 마이바티스 (Spring Framework, MyB...
 
HTTP web server 구현
HTTP web server 구현HTTP web server 구현
HTTP web server 구현
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
 
프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.
 
자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
스프링 어플리케이션의 문제해결사례와 안티패턴
스프링 어플리케이션의 문제해결사례와 안티패턴스프링 어플리케이션의 문제해결사례와 안티패턴
스프링 어플리케이션의 문제해결사례와 안티패턴
 
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
 
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
 
Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기
 

Similaire à Java 기초

Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509영석 조
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
안드로이드 스터디 Jni 발표 자료 Rev05 송형주
안드로이드 스터디 Jni 발표 자료 Rev05 송형주안드로이드 스터디 Jni 발표 자료 Rev05 송형주
안드로이드 스터디 Jni 발표 자료 Rev05 송형주iamhjoo (송형주)
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교JungWoon Lee
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuninghaiteam
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2도현 김
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Sourcecho hyun jong
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기Huey Park
 

Similaire à Java 기초 (20)

Java memory
Java memoryJava memory
Java memory
 
WIPI.ppt
WIPI.pptWIPI.ppt
WIPI.ppt
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
java_1장
java_1장java_1장
java_1장
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
 
5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
안드로이드 스터디 Jni 발표 자료 Rev05 송형주
안드로이드 스터디 Jni 발표 자료 Rev05 송형주안드로이드 스터디 Jni 발표 자료 Rev05 송형주
안드로이드 스터디 Jni 발표 자료 Rev05 송형주
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuning
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2
 
04 프로세스
04 프로세스04 프로세스
04 프로세스
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Source
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기
 

Plus de Hyosang Hong

Plus de Hyosang Hong (20)

MSA_기초자료.pdf
MSA_기초자료.pdfMSA_기초자료.pdf
MSA_기초자료.pdf
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형
 
Java 연산자
Java 연산자Java 연산자
Java 연산자
 
Java lambda
Java lambdaJava lambda
Java lambda
 
Java inner class
Java inner classJava inner class
Java inner class
 
Java generic
Java genericJava generic
Java generic
 
Java extends
Java extendsJava extends
Java extends
 
Java 제어
Java 제어Java 제어
Java 제어
 
Java collection
Java collectionJava collection
Java collection
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료
 
Map struct
Map structMap struct
Map struct
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙
 
Enum
EnumEnum
Enum
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 
Map struct
Map structMap struct
Map struct
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 

Java 기초

  • 1. JAVA 기초 작성자 : 홍효상 이메일 : hyomee@naver.com 소스 : https://github.com/hyomee/JAVA_EDU 프로그램은 사람이 이해하는 코드를 작성. 느려도 꾸준하면 경기에서 이긴다.
  • 2. Content 소스 : https://github.com/hyomee/JAVABASIC 1. 프로그램 기초 1. 프로그램 이란 2. JAVA 3. JAVA 설치 4. 개발 Tool 설치 5. 첫번째 프로그램 6. 자바 프로그램 구조 7. JVM 8. 기본 입출력
  • 3. 1. 프로그램이란 1. 프로그램 기초 • 목록, 순서,예정계획이란뜻 • Rapp&Poertner(1992) -특정목표를달성하기위한활동의집합체 • Y ork(1983) - 목표를달성하기위한일련의상호의존적인활동 • Smith(1989)–특정목표를달성하기위해서만들어진조직적인활동 • 어떤작업을하기위한일련의순서를컴퓨터에게알려주기위한파일 • 일련의순서를컴퓨터가이해할수있는명령어들의모음 • 컴퓨터가이해할수있는명령어는0,1로되어있는데사람이이해할 수있는언어를프로그램언어라한다. • 두산백과사전:컴퓨터를실행시키기위해차례대로작성된명령어모음 “ 어떤 목적을 달성 하기 위해서 프로그램 언어로 진행 순서를 작성 한 것 “ 1-1. 프로그램 이란 • 어떤목적을수행하기위해만든파일 프로그램 실행 입력 ( 마우스, 키보드 등 ) 처리 ( 계산, 화면 출력 등 ) 프로그램 종료 처리하기위한명령어 을프로그램언어로작성 • 시스템프로그램 -컴퓨터시스템과하드웨어들을제어및관리하는프로그램 -예) 윈도우,리눅스,장치드라이버,컴파일러등 • 응용프로그램 -사용자가원하는기능을제공하는프로그램 -엑셀,게임,워드등….. 사전적의미 컴퓨터프로그램 프로그램파일(.exe) 프로그램종류 프로그램과소프트웨어 • 프로그램 -컴파일된결과물뿐만아니라,프로그래머가작성한소스코드까지도포함. • 소프트웨어 -프로그램뿐만아니라CD,설명서,제품포장등패키지전체.
  • 4. 2. 프로그램 언어 1. 프로그램 기초 • 컴퓨터시스템을구동시키는소프트웨어를작성하기위한형식언어 • 컴퓨터를이용하여특정문제를해결하기위한프로그램을작성하기 위해사용되는언어 • 저급 언어 -기계어 ● 컴퓨터가직접이해할수있는언어 ● 0과1의2진수형태로표현되며수행시간이빠르다. ● CPU에내장된명령들을직접사용하는것으로,프로그램을작성하고이해하기가 어렵다. ● 기종마다기계어가다르므로언어의호환성이없다. -어셈블리어 ● 기계어와1:1로대응되는기호로이루어진언어로,니모닉(Mnemonic)언어 ● 하드웨어제어에주로사용되며,언어의호환성이없다. • ● 컴퓨터가직접이해할수없으므로어셈블리어로작성된프로그램은어셈블러를 사용하여기계어로번역해주어야한다. • 고급 언어 ● 컴파일러언어라고도하며,인간이실생활에서사용하는자연어와비슷한형태및 구조를가지고있다. ● 하드웨어에대한깊은지식이없어도프로그램작성과수정이용이 ● 컴퓨터가이해할수있는기계어로번역하기위해컴파일러나인터프리터가사용 ● 기계어와어셈블리어를제외한C,JAVA,Python등의 언어가고급언어 “ 사람이 이해 할 수 있는 표현법을 사용 하여 프로그램밍 할 수 있는 언어 “ 1-1. 프로그램 이란 의미 언어종류
  • 5. 2. 프로그램 언어 1. 프로그램 기초 • 컴파일러는고급언어로작성된프로그램전체를목적프로그램으로 번역한후,링킹작업을통해컴퓨터에서실행가능한실행프로그램을 생성 • 번역실행과정을거쳐야하기때문에번역과정이번거롭고번역시간 이오래걸리지만,한번번역한후에는다시번역하지않으므로실행속 도가빠르다. • 컴파일러를사용하는언어에는C언어Java등 • 인터프리터는 고급 언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시키는 프로그램. • 프로그램이 직접 실행되므로 목적 프로그램은 생성되지 않음 • 줄 단위로 번역, 실행되기 때문에 시분할 시스템에 유용하며 원시 프로그램의 변화에 대한 반응이 빠르다 • 번역 속도는 빠르지만 프로그램 실행 시 매번 번역해야 하므 로 실행 속도는 느리다. • CPU의 사용시간의 낭비가 크다. • 인터프리터를 사용하는 언어에는 Python, BASIC, SNOBOL, LISP , APL등 “ 사람이 이해 할 수 있는 표현법을 사용 하여 프로그램밍 할 수 있는 언어 “ 1-1. 프로그램 이란 컴파일러 인터프리터 컴파일러와인터프린터차이점
  • 6. 1. 자바 1. 프로그램 기초 • 썬마이크로시스템즈의제임스고슬링(JamesGosling)과 다른연구원들이개발한객체지향적프로그래밍언어 • 컴파일된코드가플랫폼독립적 • 자바로개발된프로그램은CPU나운영체제의종류에관계없이JVM(JavaVirtualMachine)을 설치할수있는시스템에서는어디서나실행 “ 한 번 적성하면 어느 플랫폼에서나 실행 ( 플랫폼 독립성 )“ 1-2. JAVA JAVA • 객체지향방법론을사용해야한다. • 같은프로그램(바이트코드)이여러운영체제(마이크로프로세서)에서실행될수있어야한다. • 컴퓨터네트워크접근기능이기본으로탑재되어있어야한다. • 원격코드를안전하게실행할수있어야한다. • 다른객체지향언어들의좋은부분만가지고와서사용하기편해야한다. 철학 ( 자바 언어의 5가지 핵심 목표 ) JVM Windows JVM Mac JVM Linux .class ( 자바 실행 파일 ) .java ( 자바 소스 파일 ) 컴파일 바이트 코드
  • 7. 2. JDK & JRE 1. 프로그램 기초 • Java환경에서돌아가는프로그램을개발하는데필요한툴들을모아놓은소프트웨어패키지 • JRE(JavaRuntimeEnvironment)와 Java바이트코드컴파일러,Java디버거등을포함하는개발도구를포함하고있다. • Oracle JDK는상업적이용을할경우유료 • 무료로이용하고자할경우 - Oracle의 OpenJDK빌드,ZuluJDK,AdoptOpenJDK 등의OpenJDK기반빌드를이용 - OpenJDK는GPL라이선스이지만classpath exception이적용되므로 Oracle의 지원이메이저버전이올라가는6개월마다끊기는점외에는자유롭게사용 “ 자바 개발 도구와 개발 실행 환경 “ 1-2. JAVA JDK(Java Development Kit) • 컴퓨터의운영체제소프트웨어상에서실행되고클래스라이브러리및특정Java프로그램이 실행해야하는기타리소스를제공하는소프트웨어계층 • JDK를사용하여작성된Java코드를JVM에서이의실행에필요한필수라이브러리와결합한 후결과프로그램을실행하는JVM의인스턴스를작성 -수정없이도어떤운영체제에서든Java프로그램을실행 JRE(Java Runtime Environment) • 자바바이트코드를실행하는실행기 • 개발자가 이해하는 자바 언어를 JVM이 이해하는 자바 바이트코드로 번역 JVM(Java Virtual Machine) JDK JRE JVM 컴파일러, 디버거 클래스 로더, 자바 API 런타임 라이브러리 • JDK, JRE, JVM 관계
  • 8. 1. 자바 설치 1. 프로그램 기초 1-3. JAVA 설치 JAVA 설치 1. OPENJDK다운로드 * 다운로드 : http://jdk.java.net/java-se-ri/11 ➢ 설치 폴더 : D:JAVA_202202download ① Windows/64 java Development 클릭 ② D:JAVA_202202download 선택 - 폴더가 없으면 생성 ③ 저장 버튼 클릭 ① ② ③
  • 9. 1. 자바 설치 1. 프로그램 기초 1-3. JAVA 설치 JAVA 설치 2. 다운로드받은파일압축풀기 ① 다운 받은 폴더를 탐색기로 연다. ② 압축 해제를 한다.
  • 10. 1. 자바 설치 1. 프로그램 기초 1-3. JAVA 설치 JAVA 설치 3. JAVA 설치 ① D:JAVA_202202jdk-11 로 copy 한다. • 디렉토리를 선택 후 오른쪽 마우스 클릭 • 복사 클릭 • 설치 폴더 이동 • 마우스 오른쪽 클릭 • 붙여넣기 * 최종 모습
  • 11. 1. 자바 설치 1. 프로그램 기초 1-3. JAVA 설치 JAVA 설치 4. Windows 환경설정 ① 윈도우 + R 클릭 후 실행 창에서 sysdm.cpl 입력 후 확인 클릭 ② 시스템 속성 창 에서 고급 탭 클릭 ③ 환경 변수 버튼 클릭
  • 12. 1. 자바 설치 1. 프로그램 기초 1-3. JAVA 설치 JAVA 설치 4. Windows 환경설정 ④ 환경 변수 창 에서 시스템 변수 새로 만들기 클릭 ⑤ 시스템 변수 창에서 JAVA_HOME path 설정 변수 이름 : JAVA_HOME 변수 값 : D:JAVA_202202jdk-11bin 환경 변수 창 > 시스템 변수 JAVA_HOME 설정 확인
  • 13. 1. 자바 설치 1. 프로그램 기초 1-3. JAVA 설치 JAVA 설치 4. Windows 환경설정 ⑥ 시스템 변수 영역 에서 Path 선택 후 편집 클릭 ⑤ 환경 변수 편집 창에서 새로 만들기 선택
  • 14. 1. 자바 설치 1. 프로그램 기초 1-3. JAVA 설치 JAVA 설치 4. Windows 환경설정 ⑥ 아래 부분에 행이 추가 됨 , 찾아보기 클릭 ⑦ 폴더 찾아보기 창에서 java 설치 폴더 선택 D:JAVA_202202jdk-11bin %JAVA_HOME%bin 입력 후 확인 버튼 클릭 -> 다음 페이지 로 이동 (8)번 이동 %JAVA_HOME%bin 입력 하지 않은 경우만 실행
  • 15. 1. 자바 설치 1. 프로그램 기초 1-3. JAVA 설치 JAVA 설치 4. Windows 환경설정 ⑧ 환경 변수 추가 된 것 확인 ⑨ 환경 변수 창에서 확인 클릭
  • 16. 1. 자바 설치 1. 프로그램 기초 1-3. JAVA 설치 JAVA 설치 4. Windows 환경설정 ⑪ 시스템 속성 창에서 확인 버튼 클릭 ⑫ 설치 확인 - 윈도우 + R 클릭 후 실행 창에서 cmd 입력 후 확인 클릭 - Java –version 입력 후 엔터
  • 17. 1. 개발 Tool 설치 1. 프로그램 기초 1-4. 개발 Tool 설치 개발 Tool 설치 1. Eclipse 설치 • 다운로드 : https://www.eclipse.org/downloads/packages/release/kepler/sr1/eclipse-ide-java-developers
  • 18. 1. 개발 Tool 설치 1. 프로그램 기초 1-4. 개발 Tool 설치 개발 Tool 설치 1. STS 설치 • 다운로드 : https://spring.io/tools
  • 19. 1. 개발 Tool 설치 1. 프로그램 기초 1-4. 개발 Tool 설치 개발 Tool 설치 1. STS 설치 • 다운로드 : https://www.jetbrains.com/idea/download/#section=windows 다운로드 : D:JAVA_202202download Install 폴더 : D:JAVA_202202toolintellj
  • 20. 1. 첫 프로그램 1. 프로그램 기초 1-5. 첫번째 프로그램 첫 번째 프로그램
  • 21. 1. 자바 프로그램 구조 1. 프로그램 기초 1-6. 자바 프로그램 구조 자바 실행 과정 자바소스 (.java) 자바소스 (.class) JVM 메모리 할당 프로그램실행 ( main() ) Method 영역 Stack 영역 Heap 영역 JAVA File 구조 ▪ 자바소스파일의확장자는,java ▪ 자바파일명은접근지정자가public인Top Level Class가있다면Class Name으로되어야함,없다면아무이름으로사용할수있음 ▪ public Class 가main Method를가진다. ▪ package 가있다면,해당자바파일은반드시패키지명의폴더에존재해야한다. Class 영역 Static 영역 Final 영역 package 선언 : 소스 파일의 위치 /** ~ */ : 여러 줄 주석 public : 다른 패키지에서도 사용 ( 공개 ) class : 클래스르 가리키는 자바 키워드, 파일명과 동일 - 내부 구성 요소 : field, method, constructor, inner class 자바로 만든 Application의 시작점 - Application에 하나 존재 해야 함 , 여러 개 존재 시 실행 시 지정 해 주어야 한다.
  • 22. 1. JVM ▪ StrackOverflowError : Stack Frame에 Method를 추가 할 공간이 없을 때 발생 : JVM –Xss 옵션울 사용 하여 크기 조정 ▪ OutOfMemoryError : 실행 중인 Thread가 많아서 JVM Stack를 할당 할 수 없을 때 발생 ▪ JRE(Java Runtime Enviroment)는 크게 API, JVM으로 구성 됨 ▪ JVM(자바 가상 머신, Java Virtual Machine)은 클래스 로더를 통해 자바 클래스를 메모리로 로드하여 자바API를 이용하여 실행한다. ▪ Method안에서 선언한 로컬 데이터는 Thread로 부터 안전 하다는 의미는 JVM Stack에 저장 된 데이터는 해당 Thread에서만 사용 할 수 있기 깨문 이다, ▪ 객체는 new연산자에 의해 메모리 heap에 생성 되고 JVM의 GC(Garbage Collector)에 의해 자동으로 Heap 메모리에서 해제 됨. Class - main() 2. Main용 JVM stack ( Thread Stack ) 3. Main용 Stack Frame 생성 ( push ) : main 함수 실행 전 4. 호출 되는 Method 별로 Stack Frame 생성 ( push ) 5. Method가 종료 되면 Stack Frame 소멸 ( pop ) 6. 최종적으로 main이 종료 되면 마지막으로 main용 Stack Frame 소멸 ( pop ) 7. Main용 JVM Stack 해제 1. Main thread 실행 기본 자료형 4Byte -> 플랫폼 독립성 보장 1. 프로그램 기초 1-7. JVM
  • 23. 1. JVM 자바프로그램을 실행하면 JVM의 클래스 로더가 컴파일 된 자바 바이트코드(.class 파일)을 런타임 데이터 영역(Runtime Data Area)의 Method Area에 로드 하고 실행 엔진(Execution Engine)이 이를 기계어로 변역 하면서 실행. 1. 프로그램 기초 1-7. JVM
  • 24. 1. JVM 운영체계로 부터 부여 받은 메모리 영역 • Method Area : 모든 쓰레드가 공유 하는 영역, JVM이 시작 할 때 생성, 클래스와 인터페이스 Method에 대 한 바이트 코드, 전역변수, 런타임 상수 등이 저장됨 -> Main Method가 컴파일 된 Byte Code가 있음 • Heap Area : 객체를 저장 할 떄 사용 하는 영역 => 성능 고려 필요 • JVM Stack ( 임시 메모리 ) : 실행 시 Stack Frame이라는 각 쓰레드 마다 하나씩 할당 : 실행되는 메소드의 Stack Frame에는 지역변수, 메소드의 인자, 메소드의 리턴 값, 리턴 번 지 등이 저장되고 Stack Frame은 메소드가 끝나면 사라짐 • Program Counter Register : 쓰레드마다 하나씩 존재 : JVM의 명령어 주소 • Runtime Constant Pool : Method Area에 할당, 상수, 메소드, 필드를 저장 : 자바 프로그램이 참조 할 경우 메모리 주소를 찾아서 참조함 - Native Method Stack : 자바 이외의 언어로 작성된 코드를 위한 Stack ( C, C++ 등 ) Thread PC Register JVM STACK Native Method STACK Heap - 객체 저장 Method Area - Byte Code : Static 변수 Runtime Constant Pool 생성/제거 관리 B Method 실행 Stack Frame main A Method B Method B Method 종료 생성 제거 Stack Frame main A Method 1. 프로그램 기초 1-7. JVM - 메소드 내에서 객체 참조 하면 선언한 변수는 지역변수로 Stack에 위치 하여 Heap에 저장 된 객체에 대한 참조 값을 가짐 - New 연산자는 Heap 메모리에 객체를 만들고 그 객체의 참조 값을 반환 함 User user = new User() Stack - user - user1 Heap - User() 참조 User user2 = user 참조
  • 25. 2. JVM Method Area - main() - sum() - counter : 0 Stack total : args : main() 1. 메인 실행 Heap Area - NULL Stack total :, args : i : 10, j : 30, sum : 40 Stack total : 40, args : 2. SUM 실행 3. SUM 종료 * MAIN 종료 후 모두 사라짐 1. ClassMain Class가 시작 할 때 할당 됨 Method Area - main() - sum() - counter : 1 class ClassMain { static int counter; public static void main(String[] args) { int total = sum(10, 30); } static int sum(int i, int j) { int sum = i + j; counter = counter + 1; return sum } } 1. 프로그램 기초 1-7. JVM
  • 26. 1. 콘솔에 출력 1. 프로그램 기초 1-8. 기본 입출력 콘솔에 문자열 출력 System.out.print() ▪ public void print(String s) ▪ 자료형 별로 Method가 선언 되어 있음 - Overloading ▪ 모든 출력을 한 줄로 출력 System:java.lang.System Out : System.out : - public static final PrintStream out = null print:java.io.print() -public void print(String s) System.out.printf() ▪ printf(String format, Object ... args) ▪ format : 출력 포맷, …args : 가변 인자 ▪ 출력 포맷을 지정 하여 문자 출력 – Overloading ▪ 가변 인자 개수 만큼 출력 포맷 지정 Overloading : 동일한 이름에 매개변수 자료형이 틀린 것
  • 27. 1. 콘솔에 출력 1. 프로그램 기초 1-8. 기본 입출력 콘솔에 문자열 출력 System.out.println() ▪ public void println(String x) ▪ 자료형 별로 Method가 선언 되어 있음 - Overloading ▪ 출력 후 자동 개행
  • 28. 2. 콘솔 입력 1. 프로그램 기초 1-8. 기본 입출력 콘솔 입력 () ▪ public Scanner(InputStream source ) : java.util ▪ source : 입력 장치 ▪ 지정된 입력 스트림에서 입력(스캔)된 값을 scanner 객체를 구성 ➢ 자료향에 따라서 사용 하는 Method가 틀림