Dev/Java

[Java] Java를 시작하기 전에

隣のプログラマー君 2024. 4. 26. 23:42
반응형

대한민국 프로그램 제작 대부분의 점유율을 자랑하는 Java

 

요 근래 의도치 않게 풀스택 개발자 스러운 면모를 보이게 되어버려서, 슬슬 Java에 대한 기록도 남겨두어야할 것 같아 카테고리를 새로 팠다. Java를 시작하기 전에 우리가 아주 많이 사용하고 있는 이 Java라는 언어에 대해서 간단히 이야기 해보자. 기초 문법 메서드 만드는거나  for, while, class 그런건 안쓸거다. 

 

1. 컴파일  언어

기본적으로 Java는 C계열 언어들과 같이 컴파일 언어로 분류된다. 컴파일 언어가 뭔지 간단히 설명하고 넘어가자면 언어를 해석, 실행하는 방식에 대한 이야기인데, 주로 언어는 인터프리터, 컴파일 두가지가 있다. 인터프리터의 경우엔 한줄한줄 읽어가며 해석하고 실행을 한다고 보면 되겠고, 컴파일의 경우엔 한번에 쫙 읽어서 해석하고 세팅한 후 실행한다는 차이점이 있다. 

그렇기 때문에 발생하는 차이점은 프로그램을 실행함에 있어서 컴파일이라는 단계가 하나 더 있기 때문에, 해석시에 발생하는 문법적인 오류나 실행시에 발생하게 되는 오류 등을 잡아준다. 

걍 대충 말하면 실행하기 전에 "어 야 임마 너 코딩 잘못했음." 한번 해주는 단계가 있다는거다. 

Javascript는 인터프리터 언어라 그런게 없기 때문에 빌드타임때 가만히 있다가 뻥뻥 터져버리는 런타임 오류에 개발자들이 머리를 싸매다가 TypeScript를 쓰게 됐고 대충 그런거임. 

 

2. 객체지향 언어

Java를 하게 되면 무적권 나오는 개념이 객체지향인데, Java가 애초에 객체지향 프로그래밍을 위해 나왔고 때문에 객체지향 프로그래밍을 대표하는 언어이기 때문이다. 이 객체지향이 뭔지에 대해서 설명을 하는게 제일 쉽지 않은데, 일단 내가 이해한 내용을 바탕으로 설명해보겠다. 

기본적으로 생각하고 넘어가야할건 컴퓨터는 사람이 알려주지 않으면 혼자선 아무것도 하지 못하는 쇳덩어리라는 것이다. 

사람이 컴퓨터에게 생각하는 방식을 알려주는 과정이 코딩인데, 이 생각하는 방식을 알려주는 방식 중에 하나가 객체 지향이다. 

원래 컴퓨터의 머릿속에는 존재하지 않지만 사람이 너는 이 것이 있다는 것을 알아야하고 이 것에 대해서 생각을 하고, 이런 식으로 우리에게 이 것에 대한 정보를 알려줘야한단다? 라고 정의를 해주는게 객체지향 프로그래밍이다. 

 

대표적인 예시긴 한데 자동차에 대한 프로그램을 만든다고 하면, 컴퓨터는 일단 자동차가 뭔지 알아야하고, 자동차의 부품들이 뭐가 있는지를 알아야한다. 그걸 사람이 class 라는 걸 정의해줌으로써 알려주는 거임. 

 

그리고 객체가 뭐냐 라고 하면 class 라고 하는 사람들이 있던데, 엄밀히 따지면 class는 객체를 알려주고, 그걸 바탕으로 객체를 만들어내서 사용하기 위한 설계도, 청사진 같은 개념이지 그 자체로 객체가 되는 것은 아니다. 

public Car generateObject() {
	return new Car();
}

이런 식으로 new 라는 명령어를 사용해줘야만 Car라는 객체가 생성이 되고(이걸 "인스턴스(Instance)" 라고 부른다) 이때부터 객체라고 하게 되는 것이다. 

 

Java는 이런 식으로 프로그래밍을 하는 언어라고 생각하면 되겠다. 

LIST