본문 바로가기

Language/Java

자바란?

1. 자바(JAVA) 란?

자바 썬 마이크로시스템즈 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다. - 위키백과 -

간단히 말하자면 객체지향 방법론을 사용하는 프로그래밍 언어의 한 종류이다.

2. 왜 자바를 사용하는가?

- 플랫폼에 독립적이다.

'플랫폼' 이란?
flatform : flat(편평한) + form(모습) 즉, '여러사람이 편리하게 이용할 수 있도록 만든다' 는 개념으로 소프트웨어 분야에서 플랫폼은 '편평하다'는 특징만 가져 왔다고 생각하면 앞으로의 설명에 이해가 편하실것 같습니다.

'플랫폼에 독립적이다' 라는 의미를 알기 위해 OS와 RAM의 관계를 알아야 합니다.
OS는 RAM(메모리)를 사용하고 OS는 RAM의 구조를 설정합니다. 또한 프로그램을 실행시키게 되면 RAM의 특정 부분을 사용하게 됩니다. 결론적으로 프로그램은 OS에 종속하는 관계를 가지게 되는 것입니다.

그렇다면 OS마다 RAM의 구조를 다르게 설정한다면 프로그램이 사용하는 메모리 공간을 설정하는 과정에서 차이가 발생하게 되는 문제가 있습니다.

이를 해결하기 위해서 자바에서는 JVM을 사용합니다.

JVM이란?
JVM 이란 Java Virtual Machine으로 자바 가상 머신이라고 불립니다. JVM은 RAM의 일부분의 공간을 확보하고 그 위에서 동작 하도록 하기 때문에 OS에 구애 받지 않고 JAVA 프로그램을 사용할 수 있도록 합니다.

- Garbage Collection

소스코드를 작성하다보면 특정 메모리 공간을 사용해야 하는 경우 (예를 들어 heap, stack 등)가 빈번하게 발생한다. 'C'같은 언어의 경우 메모리를 선언하게 되면 해당 메모리를 나중에 다시 돌려주는 '릴리즈' 과정을 꼭 거쳐야 하는데 이 과정을 거치지 않을 경우 프로그램을 실행 할 때마다 사용했던 메모리 공간을 지우지 못한채 또 다른 메모리 공간을 생성하기 때문에 메모리에 부담될 수 있습니다.

자바는 이와 같은 메모리 공간을 돌려주는 릴리즈 과정을 프로그래머가 신경쓰고 코드를 작성하지 않아도 되는 이점이 있는데 이는 '가비지 컬렉션' 덕분입니다. 가비지 컬렉션은 사용되지 않는 다고 판단되는 메모리 공간은 자동적으로 돌려주는(릴리즈) 역할을 수행합니다.

3. Java Flatform - Java SE와 J2SE, J2EE, J2ME란?

- J2SE (Java 2 Standard Edition) : 데스크탑에서 OS 위에서 동작하는 프로그램들을 개발할때 Java 프로그래밍 언어를 지원하기 위한 플랫폼이다.

- J2EE (Java 2 Enterprise Edition) : J2SE외에 추가적으로 필요로 하는 것들 예를 들면 다수의 사용자가 접속하는 서버의 개발을 위한 플랫폼이다.

- J2ME (Java 2 Micro Edition) : 제한된 자원을 가진 (임베디드 시스템 - 예_ 냉장고의 온도 설정기) 기기에서 Java 프로그래밍 언어를 지원하기 위해 만들어진 플랫폼이다.

4. Java Develope Tool - JDK / JRE / JVM의 개념


- JVM (Java Virtual Machine) : 프로그램이 실행되면 JVM은 OS로 부터 이 프로그램이 필요로 하는 메모리를 할당 받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.

- JRE (Java Runtime Environment) : java 프로그램을 실행하는 역할을 한다.

- JDK (Java Development Kit) : .java 프로그램을 개발할 수 있게 해주는 개발 도구

정리하자면 JRE는 자바 어플리케이션을 실행할 수있는 환경을 제공해주고 개발자가 직접적으로 다룰일이 없습니다.
JDK는 자바로 된 언어를 컴파일하고 개발 할 수 있도록 해주는 개발환경의 세트를 의미한다. 즉 JDK를 설치하게 되면 자동적으로 JRE, JVM모두 설치되지만 JRE를 설치한다고 해서 JDK가 설치되지는 않습니다. (JVM은 설치됨) 그 용도가 다르기 때문입니다.
JDK가 설치 되어 있으면 메모장으로도 소스 코드를 작성하고 컴파일 하는 것이 가능합니다.

하지만 메모장으로 코딩하는것은 매우 불편하기 때문에 개발자의 편의를 위해 통합 개발 환경을 지원하는데 이를 'IDE'라고 합니다.

IDE (Integration Development Environment) 란? .java 개발을 하나의 프로그램에서 모두 할 수 있도록 지원해주는 프로그램으로 eclipse, vscode 등이 있습니다.

5. Java API

Java API 란?
내가 작성한 코드는 오타가 있을수도, 논리적 오류가 있을 수도 있습니다. 또한 같은 코드를 반복해서 적는 과정은 매우 비효율적이며 유지보수하는데도 어려움이 있습니다.

이 문제를 해결하기 위해서 자바에서는 API를 제공합니다. 'API' 는 'Application Programming Interface'의 약자로 많이 사용되는 기능등을 미리 자바에서 라이브러리 형태로 지원하는 것입니다.

API를 사용하는 가장 큰 이점은 소스 코드 컴파일 과정에서 오류가 발생했을때 API를 사용해 적은 코드는 문제가 없다 판단하고 다른 부분에 집중해 소스코드를 수정할 수 있고 또한 코드를 효율적으로 작성할 수 있습니다.

반응형