1. 자바란 무엇인가?
- 다중 플랫폼 지원, 객체 지향, 네트워크 언어이고 가장 많이 사용되는 프로그래밍 언어 중 하나
- 썬 마이크로시스템즈 - 제임스 고슬링 - 객체지향적 프로그래밍 언어로 개발
2. 자바는 어디에 사용되는가?
- 과거 가전제품, 휴대용 장치 탑재 용
- 웹 AP, 안드로이드 모바일 AP 개발
- 빅데이터 분석에 사용 - 하둡이 자바 기반 오픈소스프레임워크, 그 외 자바 머신러닝, 딥러닝4j, 아파치 스파크 등 자바기반 도구 존재
- 와일드플라이(JBOSS), 아파치 등 서버 기술에도 사용
3. 자바의 역사
- 역사
- OAK(오크 나무) > JAVA(커피이름?)
- 썬 > 오라클이 인수
- 1995년 자바 출시 - 나랑 동갑 > 최신버전 18버전
- 버전과 버전간 차이
- 2014년에 출시한 8버전을 가장 많이 사용 - 오라클이 자바를 인수하고 출시한 첫번째 LTS버전
- LTS : Long Term Support 의 약자이며 출시 후 8년 이라는 긴 기간동안 보안 업데이트와 버그 수정을 지원할 것임을 선언한 버전, 8, 11, 17 버전이 있음
- 8 - 11 차이
- 애플릿 도구 사용 불가
- AWTUtilities(GUI관련) 클래스 사용 불가,
- String, 파일 관련하여 다양한 메소드 도입
- 람다식에 var변수 사용 가능
4. 자바언어의 특징
- 자바의 큰 특징
- 슬로건 : WORA - Write Once Run Anywhere (한번 작성하면 어디서든 돌아간다)
- 플랫폼에 독립적 - 컴파일러를 통해 class파일로 만들어 놓으면 JVM이 있으면 어느 운영체제에서나 실행가능
- 자동 메모리 관리 기능이 있는 언어 - 동적 메모리 수거를 프로그래머가 하지 않고 가비지 컬렉터를 이용하여 메모리 관리
- 다른 언어와 차이
- c, c++는 필요없는 메모리 사용 해제를 프로그래머가 직접 함, 자바는 가비지 컬렉터가 해줌
- c언어의 경우 각 운영체제에 맞게 컴파일을 해야함, 자바는 각 운영체제에 맞는 자바 가상 머신(JVM)을 이용하여 어느 환경에서 실행할 수 있음
5. JVM(Java Virual Machine)
- JVM이란?
- 자바를 실행하기 위한 가상 기계
- 자바 소스코드(.java) > 컴파일러 > 바이트 코드(.class) > 각 운영체제에 맞는 자바 가상머신(JVM)이 실행
- 자바컴파일러 : JDK bin에 존재하는 javac.exe
- JVM은 크게 클래스 로더, 실행엔진으로 이루어짐
- 클래스 로더 : 말그대로 class파일을 읽어드림
- 실행엔진 : 인터프리터가 바이트코드를 번역하고 실행
- SDK, JDK, JVM, JRE
- SDK(Software Development Kit) - 소프트웨어 개발 도구, 말 그대로 소프트웨어 개발에 필요한 제작 키트, 대표적으로 JDK(Java Development Kit)가 있음
- JDK : 자바 프로그램을 실행, 컴파일, 개발용 도구
- JRE(Java Runtime Environment) : JVM, 자바 클래스 라이브러리(Java Class Library) 등으로 구성
- 포함관계 SDK(JDK(JRE(JVM)))