Skip to content

Latest commit

 

History

History
65 lines (43 loc) · 4.86 KB

Java란.md

File metadata and controls

65 lines (43 loc) · 4.86 KB

JAVA

JAVA는 썬 마이크로시스템즈의 제임스 고슬링과 다른 여구원들이 개발한 객체 지향적 프로그래밍 언어이다.

JAVA의 핵심 목표

  1. 객체 지향 방법론을 사용해야 한다.
  2. 같은 프로그램 (바이트코드)이 여러 운영 체제에서 실행될 수 있어야 한다.
  3. 컴퓨터 네트워크 접근 기능이 기본으로 탑재되어 있어야 한다.
  4. 원격 코드를 안전하게 실행할 수 있어야 한다.
  5. 다른 객체 지향 언어들의 좋은 부분만 가지고 와서 사용하기 편해야 한다.

JAVA의 특징

1. 이식성이 높은 언어

이식성이란, 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것.

소스 파일을 다시 수정하지 않아도, 자바 실행 환경 (JRE)이 설치되어 있는 모든 운영체제에서 실행 가능하다. 이식성이 좋다는 것은 어느 플랫폼에서도 독립적이다와 동일한 말이다. 주로, C언어와 비교되는 특징 - C언어는 CPU에 의해 동작하는 .exe 파일 이름으로 바이너리 코드가 생성되어 플랫폼에 따라 코드를 수정해야하는 반면, Java 언어는 .class의 바이너리 코드가 생성된 다음 인터프리터가 있는 자바 가상 머신에서 실행되기 때문에 다른 플랫폼에서 수정없이 실행 가능하다.

2. 객체 지향 언어

객체 지향 언어란, 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법.

절차 지향 언어란, 객체 지향 언어와 비교되는 언어로, 개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되는 기법. 순서가 중요한 언어.

객체를 만들기 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다. 여러 객체를 만들고, 이것들을 조립하고 연결하여 프로그램을 만들기 때문에, 부품들은 언제든지 교체가 가능하다. 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다. 코드 재사용이 가능하다. 생산성 증가. 객체에 문제가 발생했을 때, 문제가 되는 부품만 수리하면 다시 정상적으로 프로그램이 작동한다. 유지 보수가 용이하다. 개발자가 생각한대로 모델링이 가능하다. 하지만, 개발 속도나 실행 속도면에서 절차 지향 언어보다 느린 경향이 있다.

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

함수적 프로그래밍이란, 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법. 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 함.

자바는 함수적 프로그래밍을 위해 람다식 (Lambda Expressions)을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.

4. 메모리 자동 관리

객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 Garbage Collector를 실행시켜 자동적으로 사용하지 않는 객체를 제거한다. 이와 반대로, C++은 메모리 객체 제거를 개발자가 직접 코드 작성한다.

5. 멀티 스레드 (Multi-Thread) 쉽게 구현 가능

멀티 스레드 (Multi-Thread)란, 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것. 하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리할 때 사용.

자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하고 있기 때문에, 실행되는 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다. ex. Thread Class, Runnable Interface

6. 동적 로딩 (Dynamic Loading) 지원

동적 로딩 (Dynamic Loading)이란, 프로그램을 실행할 때 필요할 때마다 동적으로 메모리, 객체 생성.

애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다. 개발 완료 후 유지보수가 발생하더라도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일할 필요가 없다. 유지보수를 쉽고 빠르게 진행할 수 있다.

7. 오픈소스 라이브러리 풍부

자바는 오픈소스 언어이기 때문에 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스가 넘쳐난다. 검증된 오픈소스 라이브러리를 사용하면 개발 기간을 단축하면서 안전성이 높은 애플리케이션을 쉽게 개발할 수 있다.