자바를 시작하기 전에
자바의 특징
운영체제에 독립적이다. 자바가상머신(JVM) 덕분에 가능하다.
객체지향 언어이다. 상속, 캡슐화, 다형성 같은 객체지향개념의 특징이 잘 적용되어 있다.
자동 메모리 관리 가비지컬렉터(Garbage Collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래밍에 집ㅂ중할 수 있다.
네트워크와 분산처리를 지원한다. 풍부하고 다양한 네트워크 프로그래밍 라이브러리를 지원한다.
멀티쓰레드를 지원한다. 일반적으로 운영체제에 따라 구현방법이 상이하며 처리 방식도 다르다. 그러나 자바는 시스템과 관계없이 구현 가능하며 관련된 라이브러리가 제공된다. 그리고 자바 인터프리터가 쓰레드에 대한 스케쥴링을 담당한다.
동적 로딩을 지원한다. 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩한다. 그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 된다.
JVM
Java Virtual Machin 자바를 실행하기 위한 가상 컴퓨터
하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점이 있다.
JVM은 OS종속적이다.
JRE
Java Runtime Environment └ JVM + 자바클래스 라이브러리(Java API)
JDK
Java Development Kit └ JRE + 자바를 개발하는데 필요한 프로그램들
개발에 필요한 실행 파일
javac.exe 자바 컴파일러. 자바소스코드를 바이트코드로 컴파일 한다.
java.exe 자바 인터프리터. 컴파일러가 해석한 바이트코드를 해석하고 실행한다.
javap.exe 역어셈블러. 컴파일된 클래스파일을 원래의 소스로 변환한다.
javadoc.exe 자동문서생성기. 소스파일에 있는 주석을 이용하여 Java API문서와 같은 형식의 문서를 자동으로 생성한다.
jar.exe 압축 프로그램. 클래스파일과 프로그램의 실행에 관련된 파일을 하나의 jar파일로 압축하거나 압축해제한다.
자바프로그래밍의 실행과정
프러그램의 실행에 필요한 클래스(*.class)를 로드한다.
클래스 파일을 검사한다.(파일형식, 악성코드 체크)
지정된 클래스에서 main(String[] args)를 호출한다.
Last updated