자바의 특징으로는 크게 7가지의 독특한 특성을 가지고 있습니다. 객체지향 객체 지향 언어 클래스 계층 구조, 상속성, 다형성, 캡슐화 등을 지원합니다. 멀티스레드 하나의 프로그램에서 다수의 스레드가 동시에 실행할 수 있는 환경을 지원합니다. 멀티스레드 프로그램을 작성하기 위해서는, 운영체제가 멀티스레드를 지원하고 관련된 API나 라이브러리를 제공해야 합니다. 하지만, 자바는 운영체제의 도움없이 멀티스레드 프로그래밍이 가능합니다. 플랫폼 독립성 하드웨어, 운영체제 등 플랫폼에 종속되지 않는 독립적인 바이트 코드로 컴파일 되며 JVM만 있으면 자바 프로그램의 실행이 가능합니다. 소스와 클래스 파일 하나의 자바 소스 파일에는 여러 개의 클래스를 작성할 수 있지만, 하나의 클래스 파일에는 반드시 하나의 컴파일된..
JDK Java Development Kit의 약자 자바 응용 프로그램 개발에 필요한 자바 컴파일러 및 기타도구, JRE(Java Runtime Environment), 클래스 라이브러리의 소스 및 자바 응용프로그램 샘플 소스 등을 포함. JRE Java Runtime Environment의 약자 프로그램을 개발하지 않는 보통 사용자의 경우 자바 가상 기계(JVM) 등을 포함하는 자바 실행 환경만 필요하기 때문에 JRE만 있으면 됩니다.
자바와 c/c++의 가장 큰 차이점은 실행 환경에 있습니다. 자바 소스를 컴파일하면 자바 가상 기계에서 실행 가능한 바이트 코드 형태의 클래스 파일이 생성됩니다. 반면 c/c++ 소스를 컴파일하고 나면 플랫폼 상에서 바로 실행될 수 있는 실행 파일이 생성 됩니다. 즉, c/c++ 소스를 컴파일해서 생성된 실행파일에는 플랫폼에 종속적인 코드가 있으며, 플랫폼이 바뀌면 다시 소스를 컴파일하고 링크해야 합니다. 하지만, 자바의 클래스 파일은 자바 가상 기계상에서 실행되어 플랫폼에 종속적인 코드를 갖지 않으므로 플랫폼이 달라져도 다시 컴파일 할 필요가 없습니다. TIP 자바와 c/c++의 실행환경과 실행 과정의 차이점 자바 자바는 링크 과정이 없이 컴파일러가 바로 바이트 코드를 생성합니다. 바이트 코드는 자바 ..
자바가 WORA(write once run anywhere)의 특징을 가질 수 있는 것은 바이트 코드와 자바 가상 기계때문입니다. 바이트 코드(byte code) 바이트 코드는 자바 컴파일러가 자바 소스 프로그램을 컴파일한 기계어로서, 플랫폼에 대한 종속성 없이 자바 가상 기계에서 실행되는 바이너리 코드입니다. 바이트코드는 컴퓨터상의 CPU에 의해 직접 실행되지 않으며, 대신 자바 가상 기계가 인터프리터 방식으로 바이트 코드를 해석하여 해당 플랫폼에서 실행시킵니다. 바이트 코드는 자바가상기계에서 실행되는 기계어라고 생각하면 됩니다. 자바 개발 환경인 JDK(Java Development Kit)는 개발자가 바이트 코드를 직접 볼 수 있도록 컴파일된 자바 클래스 파일을 disassemble하는 도구를 제공..
이전 포스팅에서 프로그래밍 언어와 컴파일에 대하여 알아볼 때 절차지향 언어와 객체지향언어에 대한 언급이 있었습니다. 오늘은 이 두가지에 대하여 알아보도록 하겠습니다. 절차지향 언어란? 절차지향 프로그래밍에 쓰이는 언어를 절차지향 언어라고 하며, 대표적인 예로 C언어가 있습니다. 절차지향언어는 개체를 순차적으로 처리하여 프로그램 전체가 연결되어야 합니다. 절차지향언어의 구조는 컴퓨터의 처리구조와 유사합니다. 따라서 실행 속도가 빠르다는 것이 장점입니다. 하지만, 소프트웨어가 엄청난 발전을 이루면서 절차지향언어의 단점이 두드러지게 나타납니다. 절차지향 언어의 단점 유지보수의 어려움 모든 구성요소가 유기적으로 연결되어 있으면 하나가 고장났을 때 시스템 전체가 고장납니다. 이 말은 즉슨, 문제를 해결하기 위..