최근에 알고리즘 코드카타를 진행하면서 Java 언어로 코딩 테스트 문제를 풀어보고 있는데
Java를 수박 겉핥기식으로 알다보니 막히는 부분도 많고 구글링을 해서 찾아봐도 동작방식이 명확하게 이해하는게 어려웠다.
그래서 Java의 기초적인 개념에 대해 처음부터 깊게 다시 공부해야된다는 필요성을 느껴 진행하였고 그것을 정리해본다.
JAVA 란?
자바는 한마디로 비유해보자면 번역기라고 느껴졌다.
Windows, Mac, Linux 와 같은 OS가 국가라고 한다면 서로의 언어가 달라 말이 통하지 않지만
번역기를 통해 해당 국가의 언어로 번역을 거쳐 전달하면 그 뜻이 전달된다.
자바의 실행 과정
- 자바 코드 작성
흔히 배우는 .Java 란 확장자로 코드를 작성 - 컴파일
컴퓨터가 이해할 수 있도록 바이트코드로 변환하는 과정이며 .class 확장자로 저장 - JVM(Java Virtual Machine)으로 바이트코드 실행
바이트코드란 무엇일까?
컴퓨터가 읽을 수 있는 건 결국에 0과 1 로 이루어진 이진수밖에 없다. 그렇기 때문에 컴퓨터가 이해할 수 있도록 번역과정을 거치게 되는데 바이트코드는 자바코드와 컴퓨터 언어의 중간언어 역할인 것이다. 그렇다면 처음부터 바이트코드로 작성하면 되지 왜 번거롭게 자바로 작성을 할까? 아래 예시코드를 보면 답이 나온다.
바이트코드와 자바 "Hello Java" 출력 코드 비교 (전: 바이트코드, 후: 자바)
Compiled from "HelloJava.java"
public class HelloJava {
public HelloJava();
Code:
0: aload_0
1: invokespecial #1
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #7
3: ldc #13
5: invokevirtual #15
8: return
}
public class HelloJava {
public static void main(String[] args) {
System.out.println("hello java");
}
}
자바코드가 딱 봐도 간결하고 작성하기 쉬워보인다. 만약 Hello Java 하나 출력하는데 바이트코드처럼 작성해야한다고 했으면 나는 Java를 쳐다도 보지 않았을 것 같다.
자바는 여러 회사들이 표준 스펙이라는 것을 정해 해당 규격에 맞게 JDK를 개발한다. 여기에 포함되어 있어 JVM로 바이트코드를 해석하여 실행이 된다. 이렇듯 대부분 회사들이 이 표준 스펙에 맞추어 본인들의 OS에서 실행될 수 있도록 개발하기 때문에 다양한 환경에 제약없이 개발할 수 있는 것이 자바인 것이다.
자바가 번역기라면 표준 스펙은 사람의 언어 형식인 것이다. 여러 국가들이 언어는 달라도 나, me, 私 처럼 뜻은 통하는 의미적 동의어가 있는 것처럼 말이다.
이러한 점을 봤을 때 자바를 사용하는 이유는 어떠한 서비스를 만들 때 여러 운영체제에 맞도록 여러번 나눠 개발할 필요없이 자바환경에만 맞추어 개발하면 대부분의 환경에서 사용할 수 있는 작업 효율성과 호환성이라는 생각이 들었다.
'개발 > 내일배움캠프 TIL' 카테고리의 다른 글
[TIL #10] 향상된 for문 (0) | 2024.11.11 |
---|---|
[TIL #8] 1주차 미니 프로젝트를 마치며 (0) | 2024.11.08 |
[TIL #6] 본 캠프의 시작, 그리고 팀장 경험 (0) | 2024.11.04 |
[TIL #4] SQL 비트 연산자 (0) | 2024.10.24 |
[TIL #3] SQL의 기초3 (0) | 2024.10.23 |