자바(Java) 이해하기 (자바의 특징, JAM)

자바(Java) 이해하기 (자바의 특징, JAM)

728x90

개념정리

자바(Java Programming Language) 이해하기

자바란? / 자바의 역사 / 자바언어의 특징 / JVM(Java Virtual Machine)

자바에 대해 공부한 내용으로 자바의 정석 도서를 참고하였다.

1. 자바란?

썬 마이크로시스템즈에서 1996년 1월 공식적으로 발표한 객체지향 프로그래밍 언어

꾸준히 새로운 버전을 발표하고 있으며, 모바일(J2ME)이나 대규모 기업환경(J2EE), XML 등 다양한 최신기술을 지원함으로써 활동영역을 넓혀가고 있음.

2. 자바의 역사

1991년 썬의 오크(Oak)라는 언어에서 시작됨

가전제품에 탑재될 소프트웨어를 목적으로 C++의 장점을 도입하고 단점을 보완한 새로운 언어로 오크를 개발

그 시대 인터넷의 등장으로 운영체제에 독립적인 오크를 인터넷에 적합하도록 방향을 바꾸면서 이름을 자바로 변경

처음엔 자바로 작성된 애플릿(Applet)이 정적인 웹페이지에 멀티미디어적인 요소들을 제공할 수 있는 유일한 방법으로 단기간에 많은 사용자를 확보하였으나 이후 보안상의 이유로 애플릿을 지원하지 않게 되었음

대신 서버쪽 프로그래밍을 위한 서블릿(Servlet)과 JSP(Java Server Pages)가 많이 사용됨

구글의 스마트폰 운영체제인 안드로이드에서도 Java를 사용

3. 자바언어의 특징

1. 운영체제에 독립적이다.

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

JVM은 운영체제에 종속적이어서 썬에서는 여러 운영체제에 설치할 수 있는 다른버전의 JVM을 제공함

2. 객체지향언어이다.

객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어라는 평가를 받고있음

3. 비교적 배우기 쉽다.

C++과 스몰톡(small talk)이라는 언어의 장점은 취하면서 복잡하고 불필요한 부분은 과감히 제거하여 단순화 함

간결하면서도 명료한 객체지향적 설계로 많은 사용자층을 확보하여 객체지향 프로그래밍의 저변확대에 기여

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

가비지컬렉터(garbage collectior)가 자동적으로 메모리 관리를 해주기 때문에 프로그래머가 메모리를 따로

관리하지 않아도 됨

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

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

6. 멀티쓰레드를 지원한다.

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

여러 쓰레드에 대한 스케줄링(scheduling)을 자바 인터프리터가 담당

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

자바로 작성된 애플리케이션은 여러개의 클래스로 구성되어 있어 필요한 시점에 플래스를 로딩하여 사용할 수 있고 클래스가 변경되어도 비교적 적은 작업으로 처리

4. JVM(Java Virtual Machine)

'자바를 실행하기 위한 가상 기계' ≒ '자바를 실행하기 위한 가상 컴퓨터' 라고 말할 수 있음

가상 기계 = 소프트웨어로 구현된 하드웨어, 가상컴퓨터 = 소프트웨어로 구현된 컴퓨터

예시 : TV와 비디오를 소프트웨어화한 윈도우 미디어 플레이어

자바로 작성된 애플리케이션은 모두 가상컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요

출처 : 자바의 정석

장점 : Java 애플리케이션은 JVM하고만 상호작용을 하기때문에 OS와 하드웨어에 독립적

단점 : 일반 애플리케이션과 다르게 JVM을 한 번 더 거치기 때문에 속도가 느림

JVM은 OS에 종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요

출처 : 자바의 정석

728x90

from http://yuricoding.tistory.com/72 by ccl(A) rewrite - 2021-11-15 05:02:14