Java
자바란
자바 소개
- 가전제품에 사용될 오크(Oak)라는 언어에서부터 시작
- 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되고 자바로 이름 변경
- 현재 스마트폰을 비롯한 각종 장비, 데스크톱 애플리케이션, 기업 환경에서 실행되는 서버 애플리케이션 개발
특징
- 이식성 높은 언어
- 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것
- 자바 프로그램은 소스 파일 다시 수정하지 않아도 자바 실행 환경(JRE: Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능
- 객체 지향 언어
- 객체를 만들고 객체와 객체를 연결하여 목적에 맞는 프로그램 구현
- 캡슐화, 상속, 다형성 기능 지원
- 함수적 스타일 코딩 지원
- 대용량 데이터 병렬 처리, 이벤트 지향 프로그래밍에 적합
- 함수식 프로그래밍을 위한 람다식 지원
- 컬렉션의 요소를 필터링 / 매핑 / 집계 처리 쉬워짐, 코드 간결
- 메모리 자동 관리
- 개발자가 직접 메모리에 접근 불가
- 자바가 직접 관리 ⇒ Garbage Collector
- 다양한 애플리케이션 개발
- 다양한 운영체제에서 실행되는 프로그램 개발 가능
- Java SE(Standard Edition)
- 자바 가상 기계(JVM), 자바 개발에 필수적인 도구, 라이브러리 API 정의
- 자바 프로그램을 개발하기 실행하기 위해 JDK 설치 필수
- Java EE : 분산 환경에서 서버용 애플리케이션 개발을 위한 도구 및 라이브러리 API 정의
- 서버용 앱 : Servlet/JSP 이용한 웹 애플리케이션, 분산 처리 컴포넌트 EJB, XML 웹 서비스
- 멀티 스레드
- 하나의 프로그램이 동시에 여러 가지 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리할 때 필요
- 스레드 생성 및 제어와 관련된 라이브러리 API 제공
- 동적 로딩 지원
- 앱이 실행될 때 모든 객체가 생성되지 않고 객체가 필요한 시점에 클래스를 동적 로딩해서 객체 생성
- 해당 클래스만 수정하면 되므로 전체 앱 다시 컴파일할 필요 없음 ⇒ 유지보수 용이
- 막강한 오픈소스 라이브러리
- 자바는 오픈소스 언어 ⇒ 수많은 오픈소스 라이브러리
JVM(자바 가상 기계)
- 자바는 중간 단계의 바이트 코드이기 때문에 해석하고 실행할 수 있는 가상의 운영체제 필요 ⇒ JVM
- 실제 운영체제를 대신해 자바 프로그램 실행하는 가상의 운영체제 역할
- 운영체제별 프로그램 실행, 관리 방법 다르기 때문에 운영체제와 자바 프로그램을 중계하는 JVM 사용
- 바이트 코드는 모든 JVM에서 동일한 실행결과 보장, JVM은 운영체제에 종속적.
- 장점
- 단점
- JVM에 의해 기계어로 번역되고 실행되기 때문에 C, C++의 컴파일 단계에서 만들어지는 완전한 기계어보다 속도 느림
- 최적화된 JIT 컴파일러를 통해 속도 격차 줄이고 있음
개발 순서
- .java 소스 파일 작성 ⇒ 컴파일러(javac.exe)로 바이트 코드 파일(.class)생성 ⇒ JVM 구동 명령어(java.exe) 실행