Pre-onboarding 기간동안 JAVA를 학습하면서 새롭게 알게 된 내용들과 유용한 내용들을 정리해보았다.
JAVA를 공부하면서 변수 선언 및 초기화 과정에서 메모리 할당 방식이 C++, python 등의 다른 언어들과 다름을 알게 되었다. 기존에 알던 내용들과 헷갈리지 않도록 정리를 해봤다.
public class example{
public void main(String[] args) {
char alphabet; // char형
int number; // int형
double temperature; // double형
}
}
#include <stdio.h>
int main()
{
char alphabet; // char형
int number; // int형
double temperature; // double형
return 0;
}
number = 0 # int형
name = "jisung" # string형
temperature = 7.9 # float형
위의 예시들을 통해 C와 JAVA는 변수 선언시 자료형이 필요하고
python은 초기화를 할 때, 할당되는 값들로 자료형이 정해짐을 알 수 있다.
위의 예제만 보고 'C와 JAVA는 변수 할당 방식이 동일하구나!' 라고 생각할 수도 있다.
하지만 변수 선언 방식만 동일할 뿐 2가지 언어는 변수 선언시 메모리 할당 과정이 다르다.
C는 위의 그림과 같이 변수 선언시 초기화를 하지 않는다면 흔히 쓰레기값이라 불리는 특정값이 담긴다. 쓰레기값이라고 할 지라도 해당 값을 담을 메모리 공간이 필요하다. 이를 저장하기 위해 초기화하지 않고 변수를 선언만 하더라도 메모리가 할당된다.
JAVA는 위의 그림과 같이 변수 선언시 초기화를 하지 않는다면 메모리 할당이 되지 않아 주소값을 가지지 않는다.
변수를 초기화했을 경우에는 메모리 할당이 되어 주소값을 가지게 된다.
PYTHON은 개발자가 직접 메모리 할당을 할 수 없다. PYTHON MEMORY MANAGER가 존재하며 메모리를 할당한다고 알려져 있다.
위의 그림과 같이 PYTHON에서 'NUM = 3'으로 변수를 생성했다고 가정해보자.
참조자인 NUM은 STACK 영역에, 객체인 3은 HEAP에 저장된다.
PYTHON MEMORY MANAGER는 HEAP의 객체를 참조하는 형태로 동적할당을 해준다.
개발을 위한 프로그래밍 언어지만 각각의 방식이 다르고 이러한 이유로 사용되는 분야도 다른게 아닐까라고 생각해본다.
학교에서 언어를 학습하고 실습 예제를 만들 때, 그리고 평소에는 그렇게 중요하게 생각하지 않았지만 짧게 나마 운영업무를 하면서 생각보다 중요하다고 느꼈던 부분이 있다. 그건 자료형들의 메모리 사용 크기와 범위이다.
회사에서 사용했던 DB는 RDBMS인 Oracle이었다. 새로운 테이블을 생성하기 위해 ERD를 작성한 적이 있었는데 데이터별 메모리 크기를 마음대로 작성해서 혼났던 기억이 있다.
그래서 짧게 나마 자료형들의 메모리 크기 및 범위에 대해서 학습해보았다.
C와 다른 점이 있다면 char와 long이다.
C에서 char는 1byte, long은 4byte고 long long이 8byte의 크기를 가진다.
주로 python을 사용했던 나는 늘 JDK가 무엇인지 알지도 못하고 설치를 했었고 가끔 오류가 나기도 했었다.
괜히 어설프게 알고 있기보단 우선 핵심적인 내용들만 간단하게 정리해보았다.
JDK = JRE + @
JDK는 '개발을 위해 필요한 도구'들을 포함한다.
JDK를 설치하면 JRE도 함께 설치가 된다.
JRE는 JVM이 자바 프로그램들을 동작시킬 때 필요한 라이브러리 및 기타 파일들을 가지고 있다. 즉, JAVA 개발이 아닌 JAVA 프로그램을 실행시켜야 하는 경우에는 꼭 JRE가 있어야 한다.