Study/Java

[Java] 자바의 언어적 특성 정리

growingtree 2022. 1. 3. 17:50

1. 이식성이 높은 언어

  • 이식성 : 서로 다른 실행환경을 가진 시스템 간에 프로그램을 옮겨서도 실행할 수 있는 것
  • 왜 이식성이 높을까 ?
    자바는 JVM(Java Virtual Machine) 위에서 동작하기 때문에 운영체제 상관없이 작동 가능하다.

2. 객체지향 언어

  • 객체지향 : 부품에 해당하는 객체들을 먼저 만들고 이것들을 하나씩 연결해서 전체 프로그램을 완성하는 기법
  • 자바는 100% 객체지향 언어에 해당한다. 객체를 만들기 위해 설계도에 해당하는 클래스를 작성하고, 객체와 객체를 연결해 목적에 맞는 프로그램을 만들어 낸다. 자바에서는 아무리 작은 단위의 프로그램이라도 객체로 만듦
  • 객체지향언어이기 때문에 객체지향 언어가 갖는 캡슐화, 다형성 , 상속 등의 기능을 제공

객체지향에 대해참고링크
1) 객체지향 프로그래밍(OOP)이 무엇인지?
- 컴퓨터 프로그래밍 패러다임 중 하나로 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 ‘객체’로 만들고 객체들의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법을 말한다.
2) 객체지향 프로그래밍의 장점이 뭐지?
- 코드 재사용 가능 : 남이 만든 클래스 가져와서 이용하거나 상속 가능
- 유지보수가 쉬움 : 클래스 내부에 존재하는 메서드, 변수만 찾아서 수정하면 됨
- 대형 프로젝트에 적합 : 프로젝트를 클래스 단위로 모듈화시켜 개발가능 → 업무분담에 용이
3) 객체지향 프로그래밍의 단점은 뭐지?
- 처리속도가 상대적으로 느림
- 객체가 많아지면 용량이 커질 수도 있음
- 설계 시 많은 시간과 노력이 필요
4) 객체지향 프로그래밍이 가지는 특징이 뭐지?
- 클래스 + 인스턴스
- 추상화
- 캡슐화
- 상속
- 다형성

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

  • 함수적 프로그래밍을 위해 자바 8부터 람다식을 지원
  • 람다식을 사용하면 컬렉션 요소를 필터링, 매핑, 집계처리하는게 쉬워지고 코드도 간결해짐

4. 메모리를 자동 관리

  • C++의 경우, 생성된 객체를 제거하기 위해 개발자가 직접 코드로 제거해야한다. 이 작업을 개발자가 잘 처리해주지 않으면 프로그램이 불완전해지거나 갑자기 다운되는 현상 발생
  • 자바의 경우, 개발자가 직접 메모리에 접근할 수 없게 만들고 자바가 메모리를 관리하게 된다. 객체 생성 시 자동으로 메모리 영역을 찾아 할당해주고 사용이 완료되면 Garbage Collector 를 실행시켜 자동적으로 사용하지 않는 객체를 제거해준다. → 개발자의 입장에서는 메모리 관리의 수고를 덜고 핵심기능 코드 작성에 집중할 수 있음

5. 다양한 어플리케이션 개발 가능

  • 자바는 윈도우, 리눅스, 유닉스 등 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다. 단순한 콘솔 프로그램부터 시작해 클라이언트용 어플리케이션, 서버용 웹 어플리케이션, 모바일 안드로이드 앱까지 다양한 프로그램을 개발할 수 있다.

6. 멀티쓰레드를 쉽게 구현 가능

  • 하나의 프로그램이 동시에 여러 작업을 처리해야하는 경우, 대용량 작업을 빠르게 처리하기 위해 서브작업으로 분리해서 병렬처리하려면 멀티쓰레드 프로그래밍이 필요하다
  • 자바는 쓰레드 생성 및 제어와 관련된 라이브러리 API를 제공하고있기 때문에 실행되는 운영체제에 상관없이 쓰레드를 쉽게 구현할 수 있다.

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

  • 어플리케이션이 실행될 때 모든 객체가 한 번에 생성되지 않고, 객체가 필요한 시점에 클래스를 동적로딩해서 객체를 생성한다.
  • 개발이 끝난 후 유지보수를 해야하는 상황에서도 해당 클래스만 수정하면 되므로 전체 어플리케이션을 다시 컴파일할 필요가 없다. → 유지보수가 빠르고 간편

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

  • 자바는 오픈소스 언어라 자바로 만들어진 라이브러리가 굉장히 많음
  • 라이브러리를 활용해 시간과 비용을 줄이고 수준 높은 어플리케이션을 만들 수 있다.

참고

JAVA :: 자바란? 자바의 특징(객체지향, 메모리관리, 멀티스레드, 동적로딩, 오픈소스)

Java - (1) Java언어의 특징


자바 코드 실행 과정

  1. 개발자가 쓴 자바 코드(.java)가 자바 컴파일러를 거치면서 자바 바이트 코드로 컴파일 된다.
  2. 컴파일된 바이트 코드를 JVM의 클래스 로더 (Class Loader) 로 전달
  3. 클래스로더는 동적로딩을 통해 필요한 클래스들을 로딩 및 링크해 런타임 데이터 영역인 JVM의 메모리에 올린다.
  4. 실행엔진은 JVM메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행
반응형