카카오 클라우드 스쿨 12월 12일 (JAVA)

최재유·2022년 12월 12일
0

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 영역이라고도 함

0개의 댓글