자바의 정석
자바 특징
백엔드 개발자
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의 경우 모든 기계어를 메모리에 올려서 한번에 컴파일한다.