Java란 ?

김창모·2023년 5월 26일
0

java

목록 보기
1/1

왜 자바 ?

Java 가 인기를 얻게 된 이유는 JVM 이라는 가상머신(VM) 에 의해서 실행되어 운영체제가 달라도 모두 같은 코드로 실행할수 있기 때문이다.
하지만 이로 인해 발생하는 단점은 JVM 을 거쳐 실행되기 때문에 비교적 실행속도가 느리다.
또한 가비지 컬렉터로 자동으로 메모리를 관리해준다.

JVM ?

- JDK

- Java Development Kit
- 자바 개발 환경으로 자바 어플리케이션을 개발하기 위해 필요한 도구를 제공한다.
- 자바 언어를 바이트 코드로 컴파일 해주는 자바 컴파일러 (javac)
- 자바 클래스 파일을 해석해주는 역 어셈블리어 (javap) 등이 있다.

- JRE

- Java Runtime Environment
- JRE 는 자바 실행 환경으로 JVM , 자바 클래스 라이브러리 등 자바 애플리케이션 실행에 필요한 파일들을 포함한다.

- JVM

- Java Virtual Machine
- JVM 은 자바 가상머신으로 자바 애플리케이션을 실행하는 가상머신이다.
- 실제 컴퓨터로부터 JAVA 애플리케이션 실행을 위한 메모리를 할당받아 Runtime Data Area 를 구성한다.

위의 세가지는 자바 프로그래밍에 사용되는 3대 핵심 기술 패키지이다.
우리가 자바를 사용하려면 1.8 (8) 11 15 17 등등의 JDK 를 설치했을것이다.
( web 작업을 한다면 EE 버전을 설치하면 된다. EE 애플리케이션을 구동하는 서버인 컨테이너를 필요로 하며 글래스피시(Glassfish) , 톰캣(Tomcat) , 제티(Jetty) 가 있다. )

Runtime Data Area

컴파일된 Java 애플리케이션의 요소들을 Heap , Method , Stack 세가지 영역에 알맞게 저장한다.

1. Heap

- Heap 영역은 new 명령어를 사용해 생성한 클래스의 인스턴스들과 배열이 저장되는 공간이다.
- Heap 영역은 가비지 컬렉터에 의해 동적으로 메모리가 관리된다.
- 참조 변수들의 값이 저장된다.

2. Method ( Class Area )

- Method 영역은 클래스 파일의 바이트 코드가 로드되는 곳이다.
- Method 영역에 클래스 파일의 바이트 코드가 로드되는 것을 "클래스 로딩" 이라고 한다.

3. Stack

- Stack 영역은 지역변수와 매개변수가 저장되는 공간이다.
- 프로그램의 실행 과정에서 임시로 할당되며 현재 실행중인 메소드가 종료되면 그 메소드에 사용된 모든 변수가 스택에서 제거된다.
- 참조 변수들의 주소값이 저장된다.

OOP

OOP 란 객체지향 프로그래밍의 영어 약자이며 Java 는 OOP 언어중 하나이다.
OOP 의 특징으로는 캡슐화 , 추상화 , 다향성 , 상속 크게 네가지가 있다.

1. 캡슐화

- 캡슐화란 하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는것을 의미한다.
- 캡슐화의 목적중 하나는 은닉화 로써 데이터의 접근을 관리할수 있다.

2. 추상화

- 추상화란 클래스들의 공통적인 속성과 기능을 정의하여 코드의 중복을 줄이고 클래스간의 관계를 효과적으로 설정하여 유지보수를 용이하게 만드는것이다.

- abstract (추상클래스)

  1. 하나 이상의 추상메서드 를 가지고 있거나 abstract 로 선언된 클래스.
  2. 상속을 통해서 자손 클래스에서 클래스를 완성해야 하며 상속을 위한 클래스 이므로 인스턴스 생성 불가.
  3. 추상클래스는 다중상속이 불가능하다.
  4. 추상 클래스의 목적은 상속받은 클래스에서 기능을 이용하고 확장시키는데 있다.

- interface(인터페이스)

1. 인터페이스는 다중상속이 가능하다.
2. 인터페이스의 목적은 함수의 구현을 강제하여 부모 클래스와 같은 동작을 보장하기 위함이다.

3. 다형성

- 다형성이란 상속을 통해 기능을 확정하거나 변경하는것을 가능하게 해주어 코드의 재사용성을 높여준다.
  • 오버라이딩
 오버라이딩 이란 자식 클래스에서 상속받은 부모 클래스의 메서드를 다시 재창조 하여 사용하는 것을 말한다.
  • 오버로딩
오버로딩 이란 같은 이름의 메서드의 매개변수의 개수나 타입을 다르게 하여 사용하는 것을 말한다.

4. 상속

 상속이란 객체들 간의 관계를 구축하는 방법으로써 다형성과 함께 적용되어 코드의 재사용성을 높여준다. 
 상속의 단점으로는 상위 클래스에 강하게 결합하게된다.

0개의 댓글