🎮 [JAVA 자바] #1 | 자바 특징, WORA, Eclipse, package, static, extern, JDK, JRE, SE, 디버그
🎮 자바 특징
- WORA(Wirte Once Run Anywhere)
- 자바의 가장 큰 특징으로, 한 번 작성된 코드는 OS, H/W와 관계없이 모든 플랫폼에서 똑같이 실행될 수 있다.
- WORA 가능하게 하는 자바 특징
- 바이트 코드(byte code) : 자바 소스를 컴파일한 목적 코드 (.class 파일) 컴파일러에 의해 변환되는 코드의 명령어 단위가 1byte이며, 운영체제에서 직접 실행되는 것이 아니라 JVM 상에서 실행된다.
- JVM(Java Virtual Machine) : 자바 바이트 코드를 클래스 로더를 통해 읽어들여 자바 API와 함께 실행하는 자바 가상 기계. 자바 가상 기계가 설치된 모든 컴퓨터에서(어떤 플랫폼)에서도 동일한 실행 환경을 제공할 수 있다.
- 프로그래밍을 위해 필요한 개발 도구
- 편집기, 컴파일러, 실행환경, 디버거 -> IDE(통합개발환경으로 Eclipse, Xcode 같은거)
🎮 자바 프로그램
- public class HelloWorld {}
HelloWorld는 클래스 이름
public이 붙은 클래스의 이름과 파일명이 일치해야 한다.
모든 코드를 클래스 안에 작성하고, 한 파일에 여러 클래스를 작성 가능하다.
- public static void main(String[] args)
자바 프로그램은 main()메소드에서 실행 시작
main()메소드가 반드시 하나 존재해야한다.
String[] args는 program argument로 프로그램 시작될 때 사용자로부터 입력 받는다.
-> args[0], args[1], args[2] 이렇게 접근 가능하다.
- System.out.prinln("Hello World!");
화면 출력 후 줄바꿈. (System.out.print()는 줄바꿈 없이 출력)
숫자는 문자로 변형돼서 출력된다.
public : 어디에서나 접근 가능
static : 객체 생성없어도 호출이 가능
- static + (지역변수 또는 함수) : 데이터 공간에 할당되어 사라지지 X
- 그냥 지역변수는 stack영역에 할당되며 블럭단위, 로컬파일 안에서 사용
- 패키지 package
서로 관련된 클래스들의 묶음. 자바 클래스들을 고유한 이름을 제공하기 위해 패키지 단위로 구분.
* 임포트 : 자바 API의 패키지 클래스 사용하기 위해서 import 선언과 함께 패키지 단위로 사용 가능
(ex. import java.lang.String; import java.lang.Math;)
사용할 때는, Math.random() 이런식으로 사용.
* 패키지 선언 : package xxx (ex. package week2_1; )
🎮 이클립스 기능
- 디버그
동적분석으로, 중단점을 찍고 실행할 수 있으며, call stack, stack frame확인 가능
F11 : 디버그 모드 실행
F6 : step over (next)
F5 : step into
F7 : step return
F8 : 다음 중단점까지 실행
F2 : 실행종료
🎮 JAVA SE 설치와 실행
- JDK와 JRE
JRE : Java Runtime Environment 자바 실행환경(JVM)
JDK : Java Development Kit 또는 Java SDK(Softwore ~~) JRE 포함 + 자바 개발환경으로 SE, ME, EE로 구분
- Java ME(Micro Edition) : 휴대전화나 PDA, 셋톱박스 등 임베디드 하드웨어 응용 개발 위한 플랫폼 (SE + 임베디드 API)
- Java SE(Standard Edition) : 데스크탑과 서버 응용 개발 플랫폼
- Java EE(Enterprise Edition) : 자바 이용한 다중 사용자, 기업용 응용 개발 위한 플랫폼 (SE + 서버 관련 API)
JRE < JDK
JDK : ME < SE < EE
- Java SE 구성
\Java\jdk-x.x.x\
bin : 자바 개발, 실행에 필요한 도구와 유틸리티 명령
conf : 여러 종류의 배치 파일
include : 네이티브 코드 프로그래밍에 필요하는 C 언어 헤더 파일
jmods : 컴파일된 모듈 파일들
legal : 각 모듈에 대한 저작권과 라이선스 파일
lib : 실행 시간에 필요한 라이브러리 클래스들
\Java\jdk-x.x.x\bin\
javac : 자바 소스를 바이트코드로 변환하는 컴파일러
java : JVM을 작동시켜 자바 프로그램(.class) 실행
...