반응형

📝Java의 특징과 역사

Java의 특징에 대해서 알아봅시다. 프로그래밍언어로서 언어중에 탑3안에 들정도로 핫하죠

 

썬마이크로시스템즈사에서 한 번 쓰고 어느곳에도 실행 할 수 있게 하기 위해서 만들었고 웹과 인터넷의 출현으로 자바의 초점은 인터넷으로 옮겨지게 되었습니다.

썬마이크로시스템즈는 오라클과 인수합병 되었고 오라클로 넘어가게 되었습니다.

 

💗 장점

  1. C++과 같은 객체지향 언어 여러 방면 사용가능하다
  2. 이식성이 높다 (리눅스 , 유닉스 바로 호환가능) [플랫폼 독립적]
  3. 메모리를 자동으로 관리한다. (가비지컬렉터)
  4. 멀티스레드를 쉽게 구현 가능하다
  5. 동적로딩을 지원한다. 유지보수가 빠르고 쉽게 진행 할 수 있다 → 실행시 모든 객체 생성이 아니라 필요한 시점에서 로딩 해 객체 생성한다.
  6. 오픈소스 라이브러리가 풍부해 쉽게 개발한다.
  7. 자바는 바이트코드(.class)로 저장하기 때문에 그걸 실행하기 위해 JVM이 필요합니다 자바의 목표가 여러 환경에서 실행 가능하게 하기 위해 그렇게 저장합니다 즉 플랫폼 환경에 맞는 가상머신이 있다면 여러가지 환경에서 사용 가능합니다.

 

⚠️ 단점

  1. 자바는 실행을 위해 가상머신을 거쳐 다른 언어에 비해 실행속도가 느리다
  2. 예외처리는 잘 되어 있지만 일일이 처리해 줘야하는 불편한 점이 있다.
  3. 다른 언어에 비해 코드 길이가 긴 편이다

 

📝자바 라이프사이클

  1. 소스코드 작성
  2. 컴파일 →  바이트 코드로 변환
  3. 클래스 로딩 클래스 로더가 .class 파일을 JVM에 올려 놓는다
  4. 바이트코드 검증바이트 코드 로딩 후 JVM 내부에서 유효성 검사를 해서 유효하지 않으면 실행하지 않는다
  5. Just-In-Time (JIT) 자바 바이트 코드를 실행하는데 일반적으로 인터프리터 방식을 사용하는데 이럴 경우 한줄 씩 읽으면서 실행하기 때문에 실행 속도가 느리다. 이를 해결하기 위해 JIT 컴파일러를 도입 후 속도에 대한 이슈를 해결했다 인터프리터 대신 바이트코드를 네이티브 코드(기계어)로 변환시킨다
  6. 실행위 과정을 통해 변환된 기계어 코드는 JVM에서 실행됩니다
  7. 메모리관리 → JVM주기적으로 체크하며 메모리 효율 및 누수 등의 문제를 방지합니다.
  8. 종료 → 자바 프로그램이 실행을 마치면 JVM은 자원을 해제하고 종료시킵니다.

 

  • 부트스트랩 클래스 로더 (Bootstrap Class Loader)
    • JVM을 실행시키기 위한 핵심 클래스들을 로딩합니다.
  • 확장 클래스 로더 (Extension Class Loader)
    • 자바의 확장 클래스들을 로딩합니다. [Java9 이후 Platform Loader로 변경]
  • 시스템 클래스 로더 (System Class Loader)
    • $CLASSPATH에 설정된 경로를 탐색해 로딩합니다 [일반적으로 우리가 만든 클래스 파일을 로딩]

 

출처 :https://engkimbs.tistory.com/606

 

 

📝레지스터 구조

 

CPU는 RAM과 연결되어 있지만 보조기억장치에 바로 엑세스 불가능합니다.

CPU는 메모리에 있는 정보를 가져와서 CPU에서 처리후 메모리로 다시 보낸다

 

  • register
    • CPU에 해당 부분으로 엄청 빠르게 처리한다 [특정한 목적에 사용되는 일시적인 기억 장치]
    • 32bit =  = 4byte = 42억.... ( 1byte = 256 표현가능 ) 4바이트인 int형은 –21억 ~ 21억까지 표현 가능 → 한번에 429...을 처리 가능하다 그 값을 넘을 경우 register를 합쳐서 사용한다
    • 8비트 컴퓨터 한번에 8비트를 처리가능 -128 ~ 127 를 한번에 처리 가능 101011 이런식 16bit이면 300000000 + 40 을 처리할 때 레지스터가 16bit라서 범위를 넘어서 두개를 합쳐서 써야한다


레지스터는 명령어 등을 저장하는 임시공간이다. (RAM 역할을 하고 있다고 생각하면 됨)

 

   

 

📝C++ 메모리 구조

무슨 종류냐에 따라 저장되는 구조가 다릅니다.

 

 

🔗 참고 및 출처

https://engkimbs.tistory.com/606

https://yozm.wishket.com/magazine/detail/1979/

반응형