2024. 2. 29. 01:03ㆍBE/Java
자바 소개
자바는 Oak라는 언어에서 시작되었는데 이는 가전제품에서 사용될 목적이었다.
인터넷 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되었고 자바로 이름이 변경되었다.
썬 마이크로시스템즈에서 1995년에 JAVA 언어를 발표한 후 현재까지 사용되고 있는 프로그래밍 언어다.
1995년부터 1999년까지 윈도우 프로그램 개발이 주류여서 메모리 및 CPU를 많이 사용하기 때문에 윈도우 프로그래밍 언어로 부적합했다.
1999년부터 인터넷이 활성화되면서 웹 애플리케이션 구축 언어로 급부상을 하는데... 기업체 및 공공기관의 다양한 서버 운영체제에서 한 번 작성한 코드로 모든 곳에서 실행 가능한 언어가 자바뿐이었기 때문이다.
가전제품용 프로그래밍 언어에서 서버 애플리케이션 개발하는 언어로 자리 잡게 되었다.
자바 특징
이식성이 높다
이식성은 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.
윈도우용 프로그램을 유닉스나 리눅스에서 실행할 수 없는 경우 소스 파일을 수정하고 재컴파일 과정을 거쳐야 한다.
자바로 개발된 프로그램은 소스 파일 수정 없이 자바 실행 환경(Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행이 가능하다.
객체 지향 언어다
자바는 객체 지향 프로그래밍 언어이다.
객체 지향 프로그래밍은 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고 이들을 조립, 연결하여 전체 프로그램을 완성하는 프로그래밍 기법이다.
함수적 스타일 코딩을 지원한다
자바는 Lambda Expression을 자바8 부터 지원한다.
함수적 프로그래밍은 대용량 데이터의 병렬 처리, 이벤트 지향 프로그래밍을 위해 적합하다.
람다식을 사용하면 컬렉션 요소를 필터링, 매핑, 집계 처리하는게 쉽고 코드가 간결해진다.
자동으로 메모리를 관리한다
C++은 메모리에 생성된 객체를 제거하기 위해 직접 코드를 작성해야 한다. 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되어서 자바가 메모리를 직접 관리한다. 객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고 사용이 완료되면 Garbage Collector를 실행시켜 자동으로 사용하지 않는 객체를 제거시킨다.
다양한 애플리케이션을 개발할 수 있다
자바는 다양한 운영 체제에서 사용할 수 있는 개발 도구와 API를 묶어서 에디션 형태로 정의하고 있다.
Java SE (Standard Edition)
자바 프로그램들이 공통적으로 사용하는 JVM을 비롯해 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다. 자바 프로그램을 개발하고 실행하기 위해서는 반드시 JAVA SE 구현체인 Java Development Kit (JDK)를 설치해야 한다.
Java EE (Enterprise Edition)
분산 환경 (네트워크, 인터넷)에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다.
서버용 애플리케이션으로는 Servlet/JSP를 이용한 웹 애플리케이션, 분산 처리 컴포넌트인 Enterprise Java Bean 그리고 XML 웹 서비스 등이 있다.
멀티 스레드를 쉽게 구현할 수 있다
하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하려면 멀티 스레드 프로그래밍이 필요하다. 운영체제마다 멀티 스레드 구현 방식이 다르지만 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에 OS에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.
동적 로딩을 지원한다
자바 애플리케이션은 여러 개의 객체가 연결되어 실행되는데 객체들은 클래스로부터 생성된다.
애플리케이션이 실행될 때 각 객체가 필요한 시점에 클래스를 동적으로 로딩해서 객체를 생성한다. 따라서 수정하더라도 필요한 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일할 필요가 없다.
이런 이유로 유지보수를 쉽고 빠르게 진행할 수 있다.
오픈 소스 라이브러리가 풍부하다
오픈소스 라이브러리를 사용하면 개발 기간을 단축하면서 안전성 높은 애플리케이션 쉽게 개발할 수 있다.
'BE > Java' 카테고리의 다른 글
[Java] 변수 (0) | 2024.03.06 |
---|---|
[Java] 자바 개발 환경 구축하기 (0) | 2024.03.01 |
[Java] 반복문 (0) | 2022.08.27 |
[Java] 조건문 (0) | 2022.08.27 |
[Java] 연산자 (0) | 2022.08.09 |