카카오 클라우드 스쿨 12월 12일 (JAVA)
JAVA
1.Java
- Sun Micro Systems에서 만든 프로그래밍 언어
- 여러 플랫폼에서 실행되는 프로그램을 한 번만 작성하기 위해서 플랫폼 독립적인 언어를 개발하기 위해서 탄생
- C++과 가장 큰 차이점
C++:플랫폼 종속적-운영체제 별로 소스 코드를 다르게 작성해야 합니다.
컴파일러가 운영체제에서 실행되는 코드를 생성(운영체제가 달라지면 다르게 작성)
- Java: 플랫폼 독립적- 여러 운영체제에서 실행되는 프로그램을 한 번만 작성
컴파일러가 JRE(JVM)가 이해할 수 있는 코드를 생성 -운영체제 별로 별도의 JRE를 설치해서 JE가 해석해서 운영체제에서 실행되는 프로그램을 생성해서 실행
2.Java를 사용하는 이유
- 오픈 소스 프로젝트가 많이 구현되어 있음 -뛰어난 Echo System
- 자바 개발에 편리한 라이브러리 - apache common
- 서버 개발에 편리한 프레임워크 - spring, struts
- 검색 엔진 - Lucene
- NoSQL- Cassandra
- 분산 파일 시스템 - Hadoop
- 플랫폼으로 서의 역할: JVM 기반의 언어가 많음
Jython, Scala, Kotlin, Closure, Jruby, Groovy 등
- 소스코드를 작성한 후 컴파일을 하면 JRE가 이해할 수 있는 코드로 번역
3.Java 개발 플랫폼
- J2SE(Standard Edition): PC용 애플리케이션 개발을 위한 플랫폼
웹프로그래밍을 할 수 없음
J2EE에서 웹 관련 API를 가져오면 되는데 보통은 WAS Application이나 Spring 같은 프레임워크가 제공
- J2ME(Micro Edition): embedded 관련 애플리케이션 개발을 위한 플랫폼으로 J2SE에서 많은 기능을 제거
- J2EE(Enterprise Edition):가장 많은 기능을 가진 유료 버전이었는데 지금은 Eclipse 재단으로 소유권이 이전되면서 Open Source가 됨
4.Java 환경
- JDK(Java Development Kit):자바 개발 도구
- Java API: Java로 프로그램을 만들수 있도록 제공되는 클래스의 집합
- JVM(Java Virtual Machine):Java Program을 실행할수 있도록 추상화한 영역, Java Program이 실행될 때 메모리 영역(Register, Stack, Heap, Method 영역 등)을 구분해서 확보
- 개발에 관련된 프로그램 :bin 디렉토리
- JRE(Java Runtime Environment):자바 실행 환경, 자바로 만든 프로그램을 실행하기 위한 플랫폼
- JVM: JVM이 라이센스가 있는데 Oracle 의 Hot Spot과 Open Source 버전이 OpenJDK
- glue:플랫폼 고유의 라이브러리 와 JNI
- byte code: JDK를 이용해서 개발한 후 Compile을 하게되면 생성되는 JRE가 이해가능한 코드, Kotlin도 동일한 byte code를 생성
5.JVM 구성
- Native Method 영역: 운영체제에게 전달할 메서드를 소유한 영역
- Register 영역: CPU에게 전달할 코드 영역
- Stack: 메서드를 호출했을 때 메서드에게 할당되는 영역
- Heap:객체가 사용하는 메모리 영역(Young Generation, Old Generation -Garbage Collection의 대상이 되지만 실제 Garbage Collector는 이 영역을 Young영역보다 적게 참조), Permanent - 클래스 정보)
- Method 영역: 클래스의 메서드가 사용하는 영역
- Static한 영역이라고도 하고 Class 영역이라고도 함