본문 바로가기

쉽게 풀어본 IT 기술

Java언어의 장단점

프로그램 Java라는 것은 커피 이름에서 왔다고 한다. 어찌 이렇게 근사한 이름을 지었는지. C++이후에 개발이 되었고, C++개발 시 여러가지 어려운 점들을 쉽게 사용할 수 있게 바꾼 부분이 있다.

기본적으로 객체 지향이라는 관점은 동일하다. Java가 기존 언어와 극명한 차이가 있다면 메모리의 사용 방법에 있을 것이다. 기존 C나 C++은 메모리를 사용할 때 메모리 할당 개념이 있어야 했다. 개발자가 메모리가 필요한 만큼을 미리 생각하여 할당을 받아서 사용한다. 메모리를 필요한만큼 할당 받아서 사용한다라는 것이 생각보다는 어려운 과점이다. 덧셈, 뺄셈 수준의 계산 정도야 메모리가 얼마나 필요할지 예측이 되지만, 어려운 내용이 들어가면 점점 복잡해지고, 나중에는 메모리에 대한 예측이 틀릴 수가 있기 때문이다.

장단점이 있다. 장점으로는 미리 예측을 하고 할당을 받아서 사용하기에 그만큼 효율적인 사용이 가능하다. 반대로 불필요한 메모리를 잡아놓고 사용 안할 수도 있기에 비효율적일 수도 있다. 그리고 메모리를 직접 제어한다는 것은 리스크를 포함하고 있다. 메모리를 잘못 접근하게 되면 프로그램에 심각한 오류를 야기 시킨다. 자바는 이런 점에서 개발자입장에서 편리하게 해준면이 있다. 개발자는 사용을 한다. 그리고 C, C++에서 메모리는 사용을 한 후에 반드시 해제를 해주어야 한다. 그래야만이 메모리 누수를 방지 할 수 있다. 자바는 그것 자체를 자바 엔진에서 해준다. 메모리를 사용하고 안쓰는 것은 주기적으로 청소를 해준다. 이름하야 가비지 컬렉션, 말그대로 청소를 해주는 것이다. 그래서 가비지 컬렉션이 일어나는 순간에 시스템 전체적으로 성능 저하도 있을 수가 있다. 그리고 개발자가 가비지를 컬렉션을 강제로 호출할 수 있는 있지만, 정확한 메모리 제어는 할 수가 없다. 그래서 정교한 개발을 위한 C++로 엔진을 개발하고, 개발이 용이하기에 응용프로그램이나

웹개발에서는 Java 기반의 언어를 많이 사용한다. 그리고 Java에는 편리하게 사용할 수 있는 함수들이 많이 제공된다. 함수들은 라이브러리라는 형태로 제공이되는데, 이 라이브러리에는 개발자가 만들어야 할 법한 많은 기능들이 미리 구현이 되어 있다. 구현이 되어 있다는 것은 준비가 되어 있다는 뜻이다. 준비된 것은 잘 사용하면 된다. 그리고 개발을 편리하게 도와주는 여러가지 기능들이 있는데, 이 묶음을 JDK라고 한다. Java Development Kit이다. 이것을 이용하며 자바를 통해서 많은 기능들을 개발을 한다. 그리고 Java는 운영체제에서 바로 수행되는 것이 아니라 JVM이라는 Virtual Machine위에서 동작을 한다.

Virtual Machine은 가상 머신으로 가상의 공간, 기능을 스스로 만들어두는 것이다. 운영체제가 있으면 운영체제는 여러가지 프로그램들이 실행될 수 있게 하는 기능을 제공을 한다. Java 프로그램은 그 운영체제에서 바로 수행되는 것이 아니라 Java가 동작될 수 있도록 하는 것은이 JVM이다. 그래서 동작에 필요한 JVM도 설치가 되어 있어야 한다. 그렇게 되면 이 JVM이 Java 프로그램을 동작시켜준다. 또하나의 특징은 그래서 운영체제에 따라서 다른 개발이 필요한 것이 아니다. 예를 들면 윈도우 프로그램은 C++로 개발이 되고, 윈도우에서 사용할 수 있는 라이브러리의 함수들을 이용해서 개발을 한다. 그래서 윈도우에서만 동작이 된다. 자바의 경우는 JVM, 자바가 구동될 수 있는 환경만 있으면 어떤 운영체제이든 동작이 가능하다. 물론 JVM이라는 것이 설치가 되어 있어야 한다.

그래서 자바가 가지는 장점을 상호호환성이 좋다라고 하거나 이식성이 좋다라든지 포팅이 간편하다라는 장점으로 이야기를 한다.


책처럼 전체를 보기를 원하시면 아래 링크를 클릭하시고 북마크 하셔서 보시면 편리합니다. 

https://wikidocs.net/22318