티스토리 뷰

BackEnd/Java

Java 정의와 특징

jinseoit 2021. 7. 28. 16:49

Java의 정의

Sun Microsystems에서 개발하여(1995년 제임스 고슬링) 1996년 1월 공식적으로 발표한 '객체지향 프로그래밍 언어'이다

※ 프로그래밍 : 컴퓨터가 일을 수행 하도록 프로그래밍 언어로 명령어 집합(프로그램)을 만드는 일

 

 

Java의 특징 

1) 객체지향 프로그래밍

  - 객체지향 프로그래밍: 프로그램의 구현을 시간의 흐름이 아닌 객체간의 관계와 협력 기반으로 프로그램 하는 것

  - Object oriented programming(OOP) 이라고함

  - 객체지향의 특징 : 재사용성, 유지보수, 코드관리, 신뢰성 높은 프로그램(상속, 캡슐화, 다형성, 추상화)

 

 

2) 이식성이 높은 언어(운영체제에 독립적)

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

   -  Java 언어로 개발된 프로그램은 자바 실행환결(JRE :Java Runtime Environment)이 설치되어 있는 운영체제에서 실행 가능 처음 자바는 파일이름.java로 저장 되고 자바 컴파일러인 javac에 의해 파일이름.class 바이트 코드로 변환 되는데 이 바이트 코드 상태에서는 자바 가상머신이 있는 어느 플랫폼이나 실행이 가능하다

CPU에 의해 동작하는 파일이름.exe의 바이너리 코드가 생성되는 C언어와는 다르게 파일이름.class의 바이너리 코드가 생성된 다음 인터프리터(해석기)가 있는 자바가상머신에서 실행되기 때문에 느리다는 단점도 있다(최근에는 CPU와 RAM 성능이 많이 개선되어 체감하기 힘듬)

 

 

3) 자동 메모리 관리

  - 자바는 JVM이 지속적으로 메모리를 감시하며 더이상 사용되지 않는 메모리를 해제시켜 준다. C/C++ 등 다른 언어 같은 경우 더이상 사용하지 않는 메모리를 개발자가 직접 해제해야 하지만 자바에서는 Garbage Collection을 통해 메모리 관리를 자동으로 수행되기 때문에 개발자가 따로 신경 쓸 필요가 없다(개발자가 직접 메모리를 해제하고 싶은 경우, System.gc();함수를 사용하여 Garbage Collector를 호출하여 해제)

 

 

4) 멀티쓰레드 프로그래밍

  - 자바는 하나의 프로그램에서 여러 개의 쓰레드가 동시에 실행할 수 있는 환경을 지원한다. C/C++은 운영체제의 도움을 받아 멀티 쓰레드 수행

  - 멀티쓰레드란 여러 스레드(프로그램의 실행단위, 프로세스 내 주소공간 및 자원 공유)를 동시에 실행시키는 응용프로그램을 작성하는 기법으로 장점은 프로세스 내 메모리 공유를 통해 시스템 자원 소모가 줄어든다, 반면 자원을 공유하기 때문에 충돌의 가능성이 있다.

 

 

5) 동적 로딩(Dynamic loading)지원

  - 자바는 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩하여 생성

  - 동적로딩은 클래스 일부 변경시 다시 컴파일하지 않아도 되는 이점이 있지만 그때 그때 메모리에서 불러오기 때문에 프로그램 실행 속도가 정적로딩에 비해 느림(느린 속도를 해결하기 위해 static 키워드를 사용)

※정적로딩 : 프로그램 실행 시 모든 실행파일이 메모리에 적재되어 실행되는 로딩방법 대표적으로 C언어가 있다 정적 로딩은 모든 파일이 메모리에 적재되어 메모리를 많이 차지하지만, 빠르게 가져올 수 있다는 장점이 있다.

 

 

Java 용어

  JDK(Java Development Kit) : 자바에서 제공되는 개발용 라이브러리. 계속 버젼이 올라가고 있음

  JRE(Java Runtime Environment) : 자바 프로그램이 실행되는 환경. 8.0까지 무료로 제공 됨

  JVM(Java Virtual Machine) : 자바 가상 머신으로 프로그램이 실행되는 환경인 JRE 가 설치되어 있어야 함

'BackEnd > Java' 카테고리의 다른 글

Java 데이터 타입  (0) 2021.07.29
공지사항
최근에 올라온 글