Java 길찾기/이것이 자바다

[Java] 자바(Java)란?

Kindbeeeear_ 2021. 12. 20. 16:52

자바(Java) 소개

1995년도에 처음 썬 마이크로시스템즈(Sun Microsystems)에서 자바(Java) 언어를 발표한 후, 지금까지는 자바는 성공한 프로그래밍 언어로서 전세계적으로 다양한 분야에서 사용되고 있다. 자바는 1991년에 썬의 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서부터 시작되었다. 오크는 처음에는 가전제품에서 사용될 목적이었다. 그 후 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되었고, 이름도 자바로 변경하였다.

 

자바의 특징

1. 이식성이 높은 언어이다.

이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는것을 말한다. 예를 들어 윈도우에서 실행하는 프로그램을 리눅스(Linux) 또는 유닉스(Unix)에서 실행할 수 있다면 이식성이 높은 것이고, 실행할 수 없다면 이식성이 낮다고 볼 수있다. 윈도우에서 실행되는 대부분의 프로그램들은 윈도우 환경에 최적화되어 있기 때문에 유닉스나 리눅스에서 실행하려면 프로그램 소스 파일을 수정한 후, 재컴파일을 거쳐야 한다. 하지만 자바 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행 환경*(JER)이 설치되어 있는 모든 운영체제 에서 실행 가능하다. 따라서 자바는 이식성이 높은 프로그래밍 언어라고 볼 수 있다.

 

*(JRE = Java Runtime Environment)

 

 

2. 객체 지향 언어이다.

프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 객체 지향 프로그래밍 *(OOP)이라고 한다. 이때 사용되는 언어를 객체 지향 언어라고 한다.

 

*(OOP - Object Oriented Programming)

 

 

3. 함수적 스타일 코딩을 지원한다.

객체 지향 프로그래밍이 나오기 오래전부터 Lisp 또는 Scheme와 같은 함수적 프로그래밍 언어들이 있었는데, 학계를 제외하고는 현업에서 큰 호응을 얻지 못했다. 최근 들어 함수적 프로그래밍이 다시 부각되고 있는데, 대용량 데이터의 병렬 처리 그리고 이벤트 지향 프로그래밍을 위해 적합하기 때문이다. 자바는 함수적 프로그래밍을 위해 람다식을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.

 

 

4. 메모리를 자동으로 관리한다.

자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며, 메모리는 자바가 직접 관리한다. 객체 생성 시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector)를 실행시켜 자동적으로 사용하지 않는 객체를 제거시켜준다. 따라서 개발자는 메모리 관리의 수고스러움을 덜고, 핵심 기능 코드 작성에 집중할 수 있다.

 

 

5. 다양한 애플리케이션을 개발할 수 있다.

자바는 윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다. 단순한 콘솔 프로그램에서부터 클라이언트용 윈도우 애플리케이션, 서버용 웹 어플리케이션 그리고 모바일용 안드로이드 앱에 이르기까지 거의 모든 곳에서 실행되는 프로그램을 개발할 수 있다. 자바는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션 형태로 정의하고 있다.

 

- Java SE (Standard Edition) - 기본 에디션

Java SE는 자바 프로그램들이 공통적으로 사용하는 자바 가상 머신*(JVM)을 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다. 클라이언트와 서버 프로그램에 상관없이 자바 프로그램을 개발하고 실행하기 위해서는 반드시 Java Se 구현체인 자바 개발 키트*(JDK)를 설치해야 한다.

 

*(JVM = Java Virtual Machine)

*(JDK = Java Development Kit)

 

- Java EE (Enterprise Edition) - 서버용 애플리케이션 개발 에디션

Java EE는 분산환경(네트워크, 인터넷)에서 서버용 애플리케이션을 개발하기 위한 도구 및 라이브러리 API를 정의한다. 서버용 애플리케이션으로는 Servlet/JSP를 이용한 웹 애플리케이션, 분산 처리 컴포넌트인 *EJB 그리고 *XML 웹 서비스 등이 있다.

 

* EJB = Enterprise JavaBeans

* XML = eXtensible Markup Language

 

 

6. 기타사항

솔직히 말하면 앞에서 설명한 내용은 중요한 내용만 뽑아서 정리한 것이다.(내가 보려고) 다른 내용들도 많지만 앞에서 설명한 내용을 알고나면 당연한 지식들이기에 설명을 하지 않았다.(내 기준..) 멀티 쓰레드, 동적 로딩 등등.. 모른다면 책을 직접 사서 시작하는게 좋은것 같다. 물론 나도 처음시작하는 개발자의 '개'이지만 말이다...