본문 바로가기

Programming Language/JAVA

[JAVA/개념] JAVA는 무엇이고, JVM은 무엇인가? (각각의특징과 장단점)

JAVAJVM의 개념 & 특징(장단점)

 

 

 

 

JAVA란?

:
썬 마이크로시스템즈에서 개발해서 1996년 1월 발표한 프로그래밍 언어입니다.

자바는 객체 지향언어로써, 상속(Inheritance), 캡슐화(Encapsulation), 다형성(Polymorphism), 추상화(Abstraction)기능을 가진 완벽한 프로그래밍 언어입니다.




JVM란?
( JVM : Java Virtual Machine )

: 자바는 완전한 기계어가 아니라 바이트코드이기때문에 이를 해석하고 실행 할 수있는
가상 운영체제가 필요한데, 이것이 JVM입니다.
운영체제별로 따로 실행하고 관리하는 방법이 다르기에 별도로 운영체제와 자바 프로그램을
실행하고 관리하는게 아닌 중계하는 JVM을 두어서 여러 운영체제에서 동일한
실행 결과를 나타내도록 설계한것입니다.
, 한번 작성하면 어디서든 사용가능하다는 큰 장점을 지니고 있습니다.



 

 

※ 자바의 특징 ※

 

 

 

1. 이식성이 높다.

-> 자바는 다른 운영체제에서도 동일한 코드를 사용할수있습니다.

자바로 작성하고 컴파일을 하고나면 class파일이 생기는데 생성된 clas파일을

맥,윈도우,리눅스 다른 운영체제에서 사용가능합니다.

 

 

 

 

2. 메모리를 자동으로 관리해준다.

-> 자바는 객체생성시 자동적으로 메모리를 찾아서 할당하고 사용이 완료되면

사용하지않는 객체를 자동으로 제거시켜주기에, 메모리관리에 신경쓰지않아도 됩니다.

 

 

 

 

 

3. 객체 지향 언어

 

-> 객체지향언어는 여러개의 부품을 각각 사용할수있습니다.

자동차를 예로들면 핸들,좌석,엔진,바퀴 각각 따로있는것들을

연결해서 하나의 자동차를 만들듯이 java라는 언어는 그렇게 만들어집니다.

하지만, C언어는 절차지향언어로써, TV로 예를들면

TV 보기위해 우선 콘센트에 코드를 꼽고, 리모콘으로 전원을 키면

화면(결과)이 나오듯이 순서가 있는것이 절차지향언어입니다.

 

 

 

 

4. 보안에 강하다.

-> java는 네트워크 분산 처리 환경에서 사용하기 위해 만들어진 언어입니다.

특히나, 네트워크 환경은 다른환경보다 보안을 중요시하기에 바이러스가

침투하지 못하는 구조를 가지고 메모리에서 데이터접근을 제한할 수 있습니다.

여기서 접근허용을 하지않는다면 데이터구조 또는 데이터에 대한 접근이 불가능합니다.

 

 

5. 오픈소스가 풍부하다.

-> 자바는 오픈소스 언어이기에 자바를 사용하는 라이브러리 또한 오픈소스가 넘칩니다.

고급 기능을 구현한다면 코드를 직접 작성할 경우, 노력과 시간이 필요하고 실행이

잘될지 안전성을 보장할수없지만, 검증된 오픈소스는 개발시간을 단축할수있는

큰 장점을 가지고 있습니다.






 

 

 

※ 자바의 단점 ※

 

 

1. 자바(객체지향언어)는 C언어(절차지향언어) 보다 다소 무겁다.

예를 들면, 컴퓨터안에있는 하드디스크라는 객체를 사용하기위해 컴퓨터라는 객체를 전부

가져다 써야하는 자바같은경우 무거울수있습니다.

즉, 하드디스크 하나사용하기위해 컴퓨터라는 클래스를 모두 받아사용해야하기에 무거울수있습니다.

반대로, 절차지향언어는 하드디스크를 쓰려면 컴퓨터를 통째로 받을필요는없지만,

이번엔 컴퓨터가 필요하다면 하드디스크,외장하드,마우스 등등 필요없는 것들까지

전부 가져와 써야하는 귀찮음과 단점을 가지고있습니다.

이로인해 처리속도에도 영향이 있습니다.

 

 

(+ 객체지향언어는 다소 무거울수있으나, 절차지향언어는 무겁지 않습니다. )