3 minute read

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