Java #1 자바 시작

compile

컴퓨터는 기계어를 이해할 수 있다. C나 Java같은 고급 언어로 작성된 프로그램은 컴퓨터가 이해할 수 없으므로 프로그램을 기계어로 변환하는 과정이 필요하다. 이를 컴파일(compile)이라 하고, 그런 과정을 처리하는 소프트웨어를 컴파일러(compiler)라고 한다. 각 언어마다 고유한 컴파일러가 있어, C 컴파일러로는 Java 프로그램을 컴파일할 수 없다.


Java와 C/C++ 실행환경 및 실행과정 차이

Java
링크과정없이 컴파일러가 바로 바이트 코드 생성
바이트 코드는 JVM에서만 실행이 가능
런타임에 필요한 클래스들이 JVM에 의해 링크되며 클래스 로더가 동적으로 필요한 클래스를 로딩
ClassLoader 객체를 이용하여 프로그래머가 직접 클래스를 로딩 가능

C/C++
컴파일러가 중간단계인 오브젝트 코드를 생성한 후 링커가 필요한 라이브러리들을 링크하여 최종 실행이 가능한 실행 파일을 생성
정적 라이브러리의 경우 라이브러리를 실행 파일에 포함시키므로 실행 파일 크기가 커짐
동적 라이브러리의 경우 런타임에 링크
오브젝트 코드 및 실행 파일은 플랫폼에 따라 다르므로 플랫폼이 바뀌면 컴파일 및 링크를 새로 해야함


Java 배포판의 종류

Java SE(Standard Edition) - 자바 표준 배포판, 데스트톱 응용프로그램과 서버 응용프로그램의 개발 플랫 폼이다.
Java ME(Micro Edition) - 모바일용 배포판, SE의 축소판이며 임베디드 및 가전제품을 위한 API가 정의되어 있다.
Java EE(Enterprise Editon) - 기업용 배포판, SE를 기본으로 인터넷 기반의 서버사이드 컴퓨팅 관련 API가 추가 되어있다.


Java의 특징

객체지향
자바는 객체지향 언어로서 클래스 계층구조, 상속성, 다형성, 캘슐화 등을 지원한다. 객체 지향 프로그램은 해결할 과제를 실제 세상의 객체와 객체 간의 상호 관계로 모델링하여 인간의 사고에 가깝게 표현한다.

멀티스레드
자바는 하나의 프로그램에서 운영체제의 도움 없이 다수의 스레드가 동시에 실행할 수 있는 환경을 지원한다.

플랫폼 독립성
자바는 하드웨어, 운영체제 등 플랫폼에 종속되지 않는 독립적인 바이트 코드로 컴파일 되며 자바 가상 기계(JVM)만 있으면 하드웨어나 운영체제를 막론하고 자바 프로그램의 실행이 가능하다.

소스와 클래스 파일
하나의 자바 소스 파일에는 여러 개의 클래스를 작성할 수 있지만, 하나의 클래스 파일(.class)에는 반드시 하나의 컴파일된 자바 클래스만이 포함된다. 하나의 자바 소스 파일에 작성된 클래스 중 오직 한 클래스만 public으로 선언할 수 있다. 파일 내 public으로 선언된 클래스의 이름과 소스 파일의 이름이 동일하게 작성되어야 한다.

실행모듈
자바 응용프로그램은 한 개 이상의 클래스 파일로 구성된다. 다수의 클래스 파일을 jar 파일 형태로 압축하여 배포 및 실행이 가능하다. 실행은 항상 main 메소드에서 시작된다. 하나의 클래스 파일에 하나 이상의 main 메소드는 있을 수 없지만 다수의 클래스 파일이 각각 main 메소드를 갖는 것은 가능하다.

클래스로 캡슐화
클래스 내에 변수나 메소드를 구현함으로써 캡슐화가 가능하다. 클래스에 속하지 않은 변수나 메소드는 있을 수 없다. 클래스 안에 내부 클래스를 만드는 것은 가능하다.

패키지
자바의 독특한 개념으로 서로 관련있는 클래스를 패키지로 묶어 관리한다.

댓글 없음: