자바(Java Programming Language)에 대해 알아보자

2024. 12. 10. 11:54JAVA

728x90
반응형

 

 안녕하세요. 진득 코딩입니다. 이번 시간에는 프로그래밍 언어 중 객체지향언어로 널리 알려진 Java라는 언어에 대해서 알아보도록 하겠습니다.

 

자바의 정의

 

  •  자바는 썬 마이크로시스템즈(Sun Microsystems)에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어입니다.

  •  자바의 중요한 특징은 운영체제(Operating System, 플랫폼)에 독립적이라는 것입니다. 그래서 자바로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능합니다.

  • 자바는 객체지향개념과 기존의 다른 프로그래밍 언어, 특히 C++의 장점을 채택하는 동시에 잘 사용되지 않는 부분은 과감히 제외시켜서 비교적 배우기 쉽고 이해하기 쉬운 간결한 표현이 가능합니다.

  • 자바는 풍부한 클래스 라이브러리(Java API)를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공합니다. 또한 모바일(J2ME)이나 대규모 기업환경(J2EE), XML 등의 다양한 최신 기술을 지원합니다.
     
자바의 역사

 

  •  자바의 역사는 1991년에 썬의 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서 시작되었습니다.

  • 원래 목표는 가전제품에 탑재될 소프트웨어를 만드는 것이었습니다. 그래서 C++을 확장해서 사용하려고 했지만 C++로는 한계를 느끼게 되었습니다. 그래서 C++의 장점을 도입하고 단점을 보완한 새로운 언어를 개발하게 되었습니다.

  • 여러 종류의 운영체제를 사용하는 컴퓨터들이 통신하는 인터넷이 등장함에 따라 운영체제에 독립적인 Oak가 적합하다고 판단하였습니다. 그래서 Oak를 인터넷에 적합하도록 개발 방향을 바꾸어 이름을 자바(Java)로 변경하게 되었습니다.

  • 자바로 개발한 웹브라우저인 핫자바(Hot java)를 발표하고 그다음 해인 1996년 1월에 자바의 정식 버전을 발표하였습니다.

  • 그 당시만 해도 자바로 작성된 애플릿(Applet)은 정적인 웹페이지에 사운드와 애니메이션 등의 멀티미디어적인 요소들을 제공할 수 있는 유일한 방법이었습니다. 하지만 최신 웹브라우저에서는 보안상의 이유로 애플릿을 더 이상 지원하지 않습니다.

  • 최근에는 서버 쪽 프로그래밍을 위한 서블릿(Servlet)과 JSP(Java Server Pages)가 더 많이 사용되고 있습니다.

  • 또한 구글의 스마트폰 운영체제인 안드로이드에서도 Java를 사용합니다.

자바의 특징

 

  1. 운영체제에 독립적입니다.

    - 자바는 일종의 에뮬레이터인 자바가상머신(JVM)을 사용하기 때문에 기존의 언어와 달리 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해서 많은 노력이 필요하지 않습니다.

    - 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달합니다.

    - 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이기 때문에 운영체제와 하드웨어에 관계없이 실행 가능합니다.

  2. 객체지향언어입니다.

    - 자바는 객체지향 프로그래밍언어(object-oriented programming language)중의 하나로 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어입니다.

  3. 비교적 배우기 쉽습니다.

    - 자바의 연산자와 기본 구문은 C++에서, 객체지향관련 구문은 스몰톡(small talk)이라는 객체지향언어에서 가져왔습니다.

    - 이 언어들의 장점은 살리고 복잡하고 불필요한 부분은 과감하게 제거해 단순화하여 쉽게 배울 수 있고, 간결하고 이해하기 쉬운 코드들을 작성할 수 있습니다.

  4. 자동 메모리 관리(Garbage Collection)

    - 자바로 작성된 프로그램이 실행되면, 가비지컬렉터(garbage Collector)가 자동적으로 메모리를 관리해 줍니다.

    - 자동으로 메모리를 관리한다는 것이 다소 비효율적인 면도 있지만, 프로그래머가 보다 프로그래밍에 집중할 수 있습니다.

  5. 네트워크와 분산처리를 지원합니다.

    - 다양한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발할 수 있습니다.

  6.  멀티쓰레드를 지원합니다.

    - 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현 가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽습니다.

    - 여러 쓰레드에 대한 스케줄링(scheduling)을 자바 인터프리터가 담당하게 됩니다.

  7. 동적 로딩(Dynamic Loading)을 지원합니다.

    - 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있습니다.

    - 또한 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 됩니다.

    - 만약 애플리케이션의 변경 사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있습니다.
대표적인 자바의 단점으로는 속도 문제를 꼽을 수 있는데 바이트코드(byte code)를 하드웨어의 기계어로 바로 변환해 주는 JIT 컴파일러와 Hotspot과 같은 신기술의 도입으로 JVM의 기능이 향상됨으로써 속도 문제가 상당히 개선되었습니다.

 

JVM(Java Virtual Machine)

 

  • JVM(Java virtual machine)은 직역하면 자바를 실행하기 위한 가상기계라고 할 수 있습니다.

  • 가상 기계(virtual machine)는 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미의 용어입니다.

  • 가상 컴퓨터(virtual computer)는 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻으로 컴퓨터 속의 컴퓨터라고 생각하면 됩니다.

  • 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행됩니다.

일반 애플리케이션과 Java 애플리케이션의 비교

 

  • 일반 애플리케이션의 코드와 비교했을 때 Java애플리케이션은 JVM을 한 번 더 거치게 됩니다.

  • 또한 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점을 가지고 있습니다.

  • 그러나 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였습니다.

다양한 OS용 JVM

  • Java 애플리케이션은 JVM 하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이라 다른 OS에서도 프로그램의 변경 없이 실행이 가능합니다.

  • 단, JVM은 OS에 종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요합니다.


 

 이번 시간에는 자바의 정의부터 특징 및 JVM에 대해 알아보았습니다. 다음 시간에는 자바 개발 환경을 구축해 보도록 해보겠습니다. 끝까지 봐주셔서 감사합니다.😊

728x90
반응형
LIST