Java/Java 기본

Java의 개념

검정비니 2018. 6. 6. 22:55
728x90
반응형

Java란?


특징:


1. 객체지향 프로그래밍 언어이다


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



2. 자바 가상 머신 (Java Virtual Machine 또는 JVM)으로 인해 플랫폼 독립적


자바 가상 머신은 서로 다른 플랫폼에서 동일한 자바 실행 환경을 제공한다. 그러나 자바 가상 기계 자체는 각 플랫폼에 맞게 설정되어 있어야 하므로, 플랫폼 종속적이라고 할 수 있다. 한번 작성된 자바 응용프로그램은 어떤 회사의 자바 가상 기계가 설치되어 있든지 상관없이 정상적으로 실행된다.


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



3. 멀티스레드


자바는 하나의 프로그램에서 다수의 스레드가 동시에 실행할 수 있는 환경을 지원한다. 멀티스레드 프로그램을 작성하기 위해서는, 운영체제가 멀티스레드를 지원하고 멀티스레드와 관련된 API나 라이브러리를 제공해야만 한다.


스레드: 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다.


API: API (Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.



4. 실행 모듈


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



5. 클래스로 캡슐화


자바는 객체 지향 언어의 캡슐화(encapsulation)의 원칙을 철저히 지켜 변수나 메소드는 반드시 클래스 내에 구현한다. 클래스에 속하지 않은 변수나 메소드는 있을 수 없다. 클래스 안에 새로운 클래스, 즉 내부 클래스를 만들 수 있다.


캡슐화는 객체지향 언어에만 있는 독특한 장치는 아니다. 기존에 C언어에서도 캡슐화 장치는 있었다. 다만, 객체 지향 언어로 오게 되면서,  캡슐화 장치가 보다 완벽하게 지원되게 된 것이다.

(C언어에서는 구조체가 캡슐화 장치의 일환이었다고 일컬어진다.)



6. 패키지


패키지는 자바의 독특한 개념이다. 서로 관련 있는 클래스는 패키지로 묶어 관리한다. 패키지는 파일시스템의 폴더 개념과도 같다. 예를 들어, java.lang.System 클래스는 java\lang 이라는 폴더의 System.class 파일을 나타내며, 여기서 java.lang을 패키지라고 부른다.




Java에서 기계어로:


컴파일: 고급 프로그래밍 언어로 쓰여진 파일을 저수준의 언어로 이루어진 파일로 해석하는 과정.


컴퓨터는 이진기호 (binary)를 사용하기 때문에, 인간이 읽을 수 있는 고수준의 언어를 이해하지 못한다. 이 때문에, 고수준의 언어를 저수준의 언어로 해석할 필요가 있는데, 이 과정을 컴파일(compile)이라고 한다.


기본적으로, 자바 언어로 쓰여진 자바 파일의 확장자명은 .java 이다. 그런데, 만약 이를 컴파일 하게 되면, ".class" 라는 확장자명을 가진 동명의 클래스 파일이 생성된다.


자바를 컴파일하는 방법에는 이클립스와 같은 IDE (Integrated Development Equipment)를 사용하는 방법도 있지만, 가장 기초적인 방식은 터미널에서 "javac" 키워드를 이용하는 방식이다.


i.e. javac A.java

(위의 명령어를 입력하면, A.class라는 클래스 파일이 생성된다.)

반응형

'Java > Java 기본' 카테고리의 다른 글

타입 변환  (0) 2018.06.08
변수와 상수  (0) 2018.06.08
자바의 데이터 타입  (0) 2018.06.08
이름 붙이는 관습  (0) 2018.06.07
Java 프로그램의 구조  (0) 2018.06.06