자바의 정석

자바 특징

백엔드 개발자 2021. 7. 19. 18:02

자바

  • 모던 프로그래밍 언어(객체지향 + 함수형)
  • 어플리케이션(컴퓨터 프로그램)을 만드는데 사용된다.
  • 실행환경(JRE) + 개발도구(JDK) + 라이브러리(API)(프로그래밍하면서 쓰일만한 것들을 미리 만들어둔 것.)

 

 

사용처

1.  PC 애플리케이션(ex : 인텔리제이)

2. 웹 애플리케이션 (Spring BOOT)

3. 모바일 애플리케이션(안드로이드)

4. 빅데이터(ex : hadoop)

5. 게임(마인프래프트), 과학, 소형기기 등

 

 

자바의 역사

 

  • J2SE : 가장 기본적인 자바 버전
  • J2ME : 소형 기기에서 사용되는 버전
  • J2EE : 엔터프라이즈 버전(대기업용)

 

  • 1.5, 8버전때 큰 변화가 많이 있었다.
  • 9버전 이후부터는 6개월마다 발표했다. (8버전 이전까지는 안정성을 주로 고려했다면, 이후로는 새로운 기능 추가에 초점)
  • 자바 8 기준으로 공부해도 무관.

 

 

 

 

특징 

 

1. 운영체제에 독립적이다.

  • JVM의 존재로 인해서 운영체제와 관련 없이 애플리케이션 실행이 가능하다.(자바 애플리케이션과 OS사이에서의 변환 역할을 담당해줄 수 있어서 JVM하고만 통신한다. 독립적이다.)
  • JVM이 없는 애플리케이션은 OS( ex : windows, macintosh, linux...)에 따라 수정이 필요하므로, 의존적이다.

 

다만 프로그램은 운영체제나 하드웨어에 독립적이지만, JVM은 운영체제에 종속적이어서 운영체제에 맞는 JVM이 필요하다. 

 

 

2. 객체지향언어(OOP)이다.

상속, 다형성, 캡슐화 등 이 잘 적용되어 있다.

 

3. GC(가비지 컬렉터)의 존재로 인한 메모리 관리

  • 자바로 작성된 프로그램이 실행되면 자동으로 GC가 메모리를 관리(사용되지 않는 메모리를 체크하고 반환)
  • 자바의 속도가 느려진다는 것이 단점.(JIT, Hotspot등으로 많이 개선되었다.)
  • C의 경우 GC가 없고 직접 메모리 제어가 가능하다는 장점이 있지만 메모리 누수 발생의 위험이 있다.

 

4. 네트워크 및 분산처리 지원

java api에 다양한 라이브러리들이 많다.

 

5. 멀티쓰레드 지원

시스템에 관계없이 구현가능.

하나의 프로그램에 대해 여러 작업을 동시에 할 수 있는 

여러 쓰레드에 대한 스케줄링을 인터프리터가 담당해준다.

 

6. 동적 로딩 지원

자바는 동적로딩을 지원해서 필요한 시점에 필요한 클래스만을 로딩해서 사용할 수 있다

C의 경우 모든 기계어를 메모리에 올려서 한번에 컴파일한다.