자바(Java Programming Language)
1.1~1.3
1. 자바(Java Programming Language)
- 객체지향 프로그래밍 언어
- 운영체제에 독립적임
- 자동 메모리 관리(Garbage Collector)
- Garbage Collector가 자동으로 메모리를 관리 → 프로그래머가 따로 관리할 필요 없음
- 멀티쓰레드 지원
- 시스템과 상관없이 구현 가능
- 자바 인터프리터가 여러 쓰레드에 대한 스케줄링 담당
- 동적 로딩(Dynamic Loading) 지원
- 실행 시 모든 클래스가 로딩되지 않고 필요한 시점에 클래스 로딩
- 일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일할 필요 없음
- JVM
- Java Virtual Machine
- 자바로 작성된 어플리케이션을 실행하는 가상 컴퓨터
- Java 어플리케이션 → JVM과 상호작용
- JVM → OS와 상호작용(해당 OS에서 실행 가능한 JVM필요)
- 바이트코드: JVM이 이해할 수 있는 기계어, JVM은 바이트코드를 OS의 기계어로 변환하고 전달
2. 자바 개발 환경 구축하기
- JDK(Java Develeopment Kit)
- 자바 개발 도구
- JVM, 자바클래스 라이브러리, 자바 개발에 필요한 프로그램 포함
- JRE + 개발에 필요한 실행파일
- JRE
- JVM + 클래스 라이브러리(Java API)
- 환경변수 설정
- JDK가 설치된 디렉토리의 bin 디렉토리(ex. C:\jdk1.8\bin)을 PATH에 추가
- bin 디렉토리에 자바로 프로그램을 개발하는데 필요한 실행파일들이 포함
- PATH → OS가 파일의 위치를 파악하는데 사용되는 경로
- JDK 주요 실행 파일들
-
javac.exe
자바 컴파일러, 자바 소스코드를 바이트 코드로 컴파일
-
java.exe
자바 인터프리터, 컴파일러가 생성한 바이트코드를 해석하고 실행
-
javap.exe
역어셈블러, 컴파일된 클래스파일을 원래의 소스로 변환, 소스 전체가 아닌 선언부만 저장, ‘-c’ 옵션으로 바이트코드로 컴파일된 내용 확인
-
javaodc.exe
자동 문서 생성기, 소스파일에 있는 주석(/** */)을 기반으로 JAVA API문서와 같은 형식의 문서 생성
-
jar.exe
압축 프로그램, 클래스 파일과 프로그램의 실행에 관련된 파일을 하나의 jar파일로 압축하거나 압축 해제 압축 → (jar cvf Hello.jar Hello1.class Hello2.class) 압축 해제 → (jar xvf Hello.jar)
-
3. 자바로 프로그램 작성하기
class Hello {
public static void main(String[] args) {
System.out.println("Hello, world.");
}
- 소스파일명: 클래스명.Java, 클래스명과 대소문자까지 동일
- 실행
- Hello.java 작성 → javac.exe 컴파일 → Hello.class 생성 → java.exe 실행 → “Hello, world.” 출력
- 자바의 모든 코드는 클래스 안에 존재
- 서로 관련된 코드를 그룹으로 나누어 클래스를 구성
- 클래스들이 모여 하나의 Java 어플리케이션을 구성
- pubilc static void main(String[] args)
- main메서드의 선언부, java.exe에 의해 호출 될 수 있도록 미리 약속되어있음 항상 똑같이 적어야됨
- Java 어플리케이션은 main 메서드의 호출로 시작, 마지막 문장까지 수행을 마치면 종료
- 하나의 소스파일에 하나의 클래스만 정의하는 것이 보통
- 하나의 소스파일에 다수의 클래스를 정의하는 것이 가능
- 소스파일의 이름은 public class의 이름과 일치, public class 가 없다면 소스내 임의의 클래스 명으로 지정
- 하나의 소스파일에 public class 개수 < 1
Leave a comment