반응형
📝Java의 특징과 역사
Java의 특징에 대해서 알아봅시다. 프로그래밍언어로서 언어중에 탑3안에 들정도로 핫하죠
썬마이크로시스템즈사에서 한 번 쓰고 어느곳에도 실행 할 수 있게 하기 위해서 만들었고 웹과 인터넷의 출현으로 자바의 초점은 인터넷으로 옮겨지게 되었습니다.
썬마이크로시스템즈는 오라클과 인수합병 되었고 오라클로 넘어가게 되었습니다.
💗 장점
- C++과 같은 객체지향 언어 여러 방면 사용가능하다
- 이식성이 높다 (리눅스 , 유닉스 바로 호환가능) [플랫폼 독립적]
- 메모리를 자동으로 관리한다. (가비지컬렉터)
- 멀티스레드를 쉽게 구현 가능하다
- 동적로딩을 지원한다. 유지보수가 빠르고 쉽게 진행 할 수 있다 → 실행시 모든 객체 생성이 아니라 필요한 시점에서 로딩 해 객체 생성한다.
- 오픈소스 라이브러리가 풍부해 쉽게 개발한다.
- 자바는 바이트코드(.class)로 저장하기 때문에 그걸 실행하기 위해 JVM이 필요합니다 자바의 목표가 여러 환경에서 실행 가능하게 하기 위해 그렇게 저장합니다 즉 플랫폼 환경에 맞는 가상머신이 있다면 여러가지 환경에서 사용 가능합니다.
⚠️ 단점
- 자바는 실행을 위해 가상머신을 거쳐 다른 언어에 비해 실행속도가 느리다
- 예외처리는 잘 되어 있지만 일일이 처리해 줘야하는 불편한 점이 있다.
- 다른 언어에 비해 코드 길이가 긴 편이다
📝자바 라이프사이클
- 소스코드 작성
- 컴파일 → 바이트 코드로 변환
- 클래스 로딩 → 클래스 로더가 .class 파일을 JVM에 올려 놓는다
- 바이트코드 검증 → 바이트 코드 로딩 후 JVM 내부에서 유효성 검사를 해서 유효하지 않으면 실행하지 않는다
- Just-In-Time (JIT) → 자바 바이트 코드를 실행하는데 일반적으로 인터프리터 방식을 사용하는데 이럴 경우 한줄 씩 읽으면서 실행하기 때문에 실행 속도가 느리다. 이를 해결하기 위해 JIT 컴파일러를 도입 후 속도에 대한 이슈를 해결했다 인터프리터 대신 바이트코드를 네이티브 코드(기계어)로 변환시킨다
- 실행 → 위 과정을 통해 변환된 기계어 코드는 JVM에서 실행됩니다
- 메모리관리 → JVM은 주기적으로 체크하며 메모리 효율 및 누수 등의 문제를 방지합니다.
- 종료 → 자바 프로그램이 실행을 마치면 JVM은 자원을 해제하고 종료시킵니다.
- 부트스트랩 클래스 로더 (Bootstrap Class Loader)
- JVM을 실행시키기 위한 핵심 클래스들을 로딩합니다.
- 확장 클래스 로더 (Extension Class Loader)
- 자바의 확장 클래스들을 로딩합니다. [Java9 이후 Platform Loader로 변경]
- 시스템 클래스 로더 (System Class Loader)
- $CLASSPATH에 설정된 경로를 탐색해 로딩합니다 [일반적으로 우리가 만든 클래스 파일을 로딩]
📝레지스터 구조
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++ 메모리 구조
무슨 종류냐에 따라 저장되는 구조가 다릅니다.
🔗 참고 및 출처
반응형
'[CS 지식]' 카테고리의 다른 글
[CS 지식] 조합논리회로, 순서논리회로, 플립플롭, 논리게이트, CISC, RISC, 클럭, 외부클럭, 내부클럭, 노스브리지 (0) | 2021.06.19 |
---|---|
[CS 지식] 프로세스, 스레드(Thread), 멀티스레딩, 동기식, 비동기식, 동적, 정적 (0) | 2021.06.19 |
[CS 지식] MariaDB, 데이터베이스(Database), 관계형DBMS (RDBMS), CRUD (0) | 2021.06.17 |
[CS 지식] C vs C++ vs C# (0) | 2021.06.17 |
[CS 지식] Float vs Double, 실수타입 vs 정수타입, 아스키코드, Bus, 버퍼메모리, 캐시 (0) | 2021.06.17 |