단의 개발 블로그
자바란? 본문
자바란?
자바는 1995년 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 연구원들이 개발한 언어이다. 처음에는 가전제품에 사용하는 언어로 만들어졌으나, 웹과 모바일에서 가장 많이 사용된다.
자바로 가능한 일
- 웹 프로그래밍
- Servlet, JSP, Spring 프레임워크 등과 같은 기술을 사용하여 웹 프로그래밍
- 안드로이드 애플리케이션
- 안드로이드 개발 시 사용하는 메인 언어, 안드로이드 스튜디오를 사용하여 쉽게 제작
- 게임 개발
- LWJGL 라이브러리를 사용하여 게임 개발도 가능
- DB
- JDBC, JPA 등과 같은 기술을 사용하여 DB 처리
- 빅데이터 및 분산처리
- 분산 처리 시스템을 사용하여 많은 데이터를 가공 및 시각화
자바로 할 수 없는 일
- 시스템 프로그래밍
- 운영체제, 드라이버, 커널 등의 개발은 C/C++언어를 사용하여 개발
- 높은 성능을 요구하는 일
- GC(Garbage Collection)과 JIL(Just-in-time) 컴파일러와 같은 기능 때문에 실행 속도가 느림
- IOS 앱 개발
- IOS 개발은 swift/Objective-c가 메인 언어, 자바로 개발 불가능
자바의 특징
- 객체 지향 언어
- 객체지향 프로그래밍(OOP, Object Oriented Programming)이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 하나씩 조립 및 연결하여 프로그램을 완성하는 것
- 먼저 설계도인 클래스를 작성하고, 객체와 객체를 연결하여 목적에 맞게 작업
- 객체지향 언어의 특징인 캡슐화, 상속성, 다형성을 완벽하게 지원
- 이식성
- 서로 다른 실행환경을 가진 시스템 간 프로그램을 옮겨 실행 가능
- 자바 실행환경(JRE)가 설치된 모든 환경에서 실행 가능
- 메모리 관리
- 자바는 개발자가 직접 메모리에 접근할 수 없으며, 메모리는 자바가 직접 관리
- 객체 생성 시 자동으로 메모리 영역에 할당, 사용이 완료되면 Garbage Collector가 사용하지 않는 객체를 제거
- 멀티 스레드
- 스레드 생성 및 제어와 관련된 라이브러리를 제공, 운영체제 상관 없이 멀티스레드를 쉽게 구현
- 동적로딩
- 실행 시 모든 클래스가 로딩되는 것이 아닌, 필요한 시점에 클래스를 로딩
- 분산환경지원
- TCP/IP 라이브러리가 기본으로 포함
- http와 http 프로토콜 지원
- 오픈소스 라이브러리 풍부
- 자바는 오픈소스 언어이며 프로그램 내에서 사용하는 라이브러리 및 오픈소스 양이 방대
- 유지보수를 쉽고 빠르게 진행 가능
- 단점
- 실행 시 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 속도가 느림
- 예외 처리가 잘 되어 있지만, 개발자가 지정해야함
- 다른 언어에 비해 작성해야 하는 코드양이 증가함
JVM / JDK / JRE
자바는 컴파일러를 통해 기계어로 변환된다. 컴파일이란 특정 프로그래밍 언어를 기계가 이해할 수 있는 언어로 번역하는 과정을 뜻한다. 자바의 경우 JVM(Java Virtual Machine)이 이해할 수 있는 바이트 코드로 변환하는 것을 의미한다. JVM은 바이트 코드를 운영체제에 맞는 기계어로 반환한다.
- JDK(Java Development Kit) : JDK 설치 시 자동으로 JRE가 설치된다. JDK는 추가적으로 자바 컴파일러(Java compiler)를 포함하고 있다.
- JRE(Java Runtime Environment) : 자바 클래스 라이브러리(Java class libraries) + 자바 가상머신(JVM) + 자바 클래스 로더(Java class loader)를 포함, 클래스 로더, 클래스 라이브러리를 통해 작성한 자바 코드를 라이브러리와 결합 한 후 JVM에게 넘김, JRE는 JVM이 원활하게 작동할 수 있는 환경을 만들어주는 기능을 함
- JVM(Java Virtual Machine) : 자바 프로그램이 어느 운영체제에 상관 없이 실행될 수 있도록 해준다.
출처
https://helloworld-88.tistory.com/3