고코딩

JAVA란 무엇일까? 본문

JAVA

JAVA란 무엇일까?

고코딩 2020. 12. 28. 09:30

나는 처음부터 JAVA를 배우지 않았다. 오히려 C언어, Python을 먼저 접하고 난 뒤 JAVA를 만나게 되었다. 보통 처음에 배운 언어에 익숙해져서 그 언어만 사용하는 개발자가 된는 경우가 대부분이다. 그럼 무엇이 내가 JAVA를 사용하게 만들었을까?

정의

구글에 자바의 정의에 대해 검색해보면 아래와 같이 정의하고 있다.

자바(영어: Java, 문화어: 쟈바)는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다. 1991년 그린 프로젝트(Green Project)라는 이름으로 시작해 1995년에 발표했다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용하고 있다. 현재 버전 15까지 출시했다.

자바의 개발자들은 유닉스 기반의 배경을 가지고 있었기 때문에 문법적인 특성은 파스칼이 아닌 C++의 조상인 C 언어와 비슷하다. 자바를 다른 컴파일언어와 구분 짓는 가장 큰 특징은 컴파일된 코드가 플랫폼 독립적이라는 점이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다. 바이트코드를 실행하기 위해서는 JVM(자바 가상 머신, Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다. 때문에 자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템에서는 어디서나 실행할 수 있으며, 이 점이 웹 애플리케이션의 특성과 맞아떨어져 폭발적인 인기를 끌게 되었다.

첫 번째 문단의 내용에서 알수 있듯이 웹 애플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나 이다. 대부분의 웹 프레임워크들의 소스코드들은 자바를 기반으로 사용되고 있다. 그럼 왜 웹 개발에서 자바를 가장 많이 사용하는 것일까? 그 이유는 두 번째 문단에서 확인할 수 있다.

자바를 다른 컴파일언어와 구분 짓는 가장 큰 특징은 컴파일된 코드가 플랫폼 독립적이라는 점이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다. 바이트코드를 실행하기 위해서는 JVM(자바 가상 머신, Java Virtual Machine)이라는 특수한 가상 머신이 필요한데, 이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다.

JAVA는 JVM(자바 가상 머신, Java Virtual Machine)덕분에 어느 운영체제에서든지 자바로 작성된 프로그램을 실행시킬수 있다. 웹 개발의 특성상 서버를 Window, Linux, Unix 등 환경에 맞는 곳에서 동작해야 하는데 다른 언어로 작동시키기에는 제약사항이 너무 많이 발생한다. Java는 JVM만 있으면 동작이 가능하니 이 특징 때문에 가장많이 쓰이는 개발언어가 된것이 아닐까 싶다.

자바의 특징

  • 객체지향언어
    • 객체지향 프로그래밍(OOP, Object Oriented Programming)이란 프록램을 개발하는 기법이다. 객체를 만들고 객체끼리 연관을 지으면서 전체 프로그램을 완성하는 것을 말한다.
    • 객체를 만들기 위해서는 Class(클래스)를 작성하고 클래스들을 객체화 시켜 사용한다.
    • 객체지향언어의 특징인 캡슐화 상속성 다향성을 지원한다. 나중에 이에 관한 포스트를 더 올릴 예정이다.
  • 이식성이 높다
    • 다른 실행환경에서도 프로그램을 옮겨 실행할 수 있다.
    • JRE(자바 실행환경)이 설치되어잇는 모든 운영체제에서 실행이 가능하다.
  • 메모리를 자동을 관리한다
    • C++에서 객체를 생성하면 객체를 반드시 제거해주어야 한다. 이 작업을 하지 않으면 메모리에 가비지데이터(Garbage Data)들이 많이 쌓이고 메모리가 부족해 프로그램이 갑자기 다운되는 현상이 발생한다.
    • JAVA에서는 개발자가 직접 메모리에 접근하는 것이 아닌 JAVA가 접근해 메모리를 관리한다.
    • 객체 생성시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 가비지 콜렉터(Garbage Collector)를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.
    • 개발자는 가비지 콜렉터 덕분에 코딩에 집중할 수 있다.
  • 오픈소스 라이브러리가 풍부하다
    • 자바는 오픈소스(Open Source) 언어이고 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스의 양이 방대하다.
    • 유지보수를 쉽고 빠르게 진행할 수 있다.

물론 자바의 단점도 많다. JVM를 거쳐서 실행해야 해서 실행속도가 느리고, 예외처리를 개발자가 일일이 지정해줘야 한다. 이 예외처리 개념이 생각보다 단순하면서도 복잡하다. 나중에 시간이 한번 예외처리 방법들에 대해서 포스팅 해야겠다. 또 다른언어에 비해서 작성해야 하는 코드의 길이가 긴 편인데 사실 프로그래밍 작성에 익숙해지다 보면 길어도 눈에 다 보이기 시작한다. 자바에 대해서 설명하면 정말 끝도 없이 설명이 가능할 만큼 양이 많이 때문에 차후 다른 JAVA관련 포스팅으로 자바에 대해 더 포스팅하겠다.