1. 자바란?
자바란? '썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어. 창시자는 제임스 고슬링이다.'
(출처 나무위키) 라고 간단히 정의되어 있습니다. 소위 대한민국은 자바 공화국이라고 하는데, 왜 이토록 자바는 많이 쓰이고, 인기가 많을까요?
2. 자바를 사용하는 이유
※ JVM
자바가 나오기 전에는 OS마다 실행환경이 달라 같은 언어여도 다른 코드를 사용해야하는 등 프로그래밍하기에 불편했습니다. 동일한 프로그램을 만들지만, OS에 따라서 따로따로 프로그래밍을 해야했다는 뜻이죠. 하지만 Java는 운영체제에 상관없이 똑같은 코드로 구현할 수 있게 되었습니다. 바로 JVM 덕분입니다.
JVM은 Java Virtual Machine으로, 각각의 OS 바로 위에서 작동하는 JVM 코드 즉, 바이트코드를 읽어들이고 수행하는 역할을 담당합니다. Java 컴파일러는 개발자가 작성한 소스코드를 컴파일하게 됩니다. 이때 바이트 코드로 컴파일되며, 각각의 OS 환경에 맞게 컴파일됩니다.
결론적으로 어떤 OS든 개발자는 동일한 소스코드를 작성하면 되는 것이고, 프로그램은 똑같이 동작합니다.
3. 자바 컴파일 과정
1. 개발자는 소스코드를 작성한 후 저장한다. (~~.java 파일)
2. 컴파일을 수행한다. (javac)
3. JVM이 읽을 수 있는 바이트코드로 컴파일된다. (~~.class)
4. JVM에서 프로그램 로직을 수행한다.
정리) 자바 컴파일러(javac)가 자바 소스(java 파일)를 바이트 코드로 변환한다 (컴파일). 클래스로더가 바이트코드를 런타임 데이터 영역에 로드시키고, 로딩된 바이트 코드는 실행엔진에 의해서 실행.
클래스로더? 런타임 데이터 영역? 안보이던 단어가 보이죠? 이는 JVM의 구조에 대한 내용입니다. 바로 다음 포스팅에서 JVM 구조와 자세한 컴파일 동작과정을 설명하겠습니다.
'웹 개발 공부 : Back-end > JAVA' 카테고리의 다른 글
[리마인드] 자바 '+' 연산 (0) | 2024.09.23 |
---|---|
[리마인드] 자바의 변수 명명 규칙 (0) | 2024.09.23 |
[리마인드] 자바 - 객체지향 프로그래밍 (OOP) 1탄 (0) | 2024.07.31 |
[리마인드] 자바 - JVM (0) | 2024.07.31 |
1. 자바란?
자바란? '썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어. 창시자는 제임스 고슬링이다.'
(출처 나무위키) 라고 간단히 정의되어 있습니다. 소위 대한민국은 자바 공화국이라고 하는데, 왜 이토록 자바는 많이 쓰이고, 인기가 많을까요?
2. 자바를 사용하는 이유
※ JVM
자바가 나오기 전에는 OS마다 실행환경이 달라 같은 언어여도 다른 코드를 사용해야하는 등 프로그래밍하기에 불편했습니다. 동일한 프로그램을 만들지만, OS에 따라서 따로따로 프로그래밍을 해야했다는 뜻이죠. 하지만 Java는 운영체제에 상관없이 똑같은 코드로 구현할 수 있게 되었습니다. 바로 JVM 덕분입니다.
JVM은 Java Virtual Machine으로, 각각의 OS 바로 위에서 작동하는 JVM 코드 즉, 바이트코드를 읽어들이고 수행하는 역할을 담당합니다. Java 컴파일러는 개발자가 작성한 소스코드를 컴파일하게 됩니다. 이때 바이트 코드로 컴파일되며, 각각의 OS 환경에 맞게 컴파일됩니다.
결론적으로 어떤 OS든 개발자는 동일한 소스코드를 작성하면 되는 것이고, 프로그램은 똑같이 동작합니다.
3. 자바 컴파일 과정
1. 개발자는 소스코드를 작성한 후 저장한다. (~~.java 파일)
2. 컴파일을 수행한다. (javac)
3. JVM이 읽을 수 있는 바이트코드로 컴파일된다. (~~.class)
4. JVM에서 프로그램 로직을 수행한다.
정리) 자바 컴파일러(javac)가 자바 소스(java 파일)를 바이트 코드로 변환한다 (컴파일). 클래스로더가 바이트코드를 런타임 데이터 영역에 로드시키고, 로딩된 바이트 코드는 실행엔진에 의해서 실행.
클래스로더? 런타임 데이터 영역? 안보이던 단어가 보이죠? 이는 JVM의 구조에 대한 내용입니다. 바로 다음 포스팅에서 JVM 구조와 자세한 컴파일 동작과정을 설명하겠습니다.
'웹 개발 공부 : Back-end > JAVA' 카테고리의 다른 글
[리마인드] 자바 '+' 연산 (0) | 2024.09.23 |
---|---|
[리마인드] 자바의 변수 명명 규칙 (0) | 2024.09.23 |
[리마인드] 자바 - 객체지향 프로그래밍 (OOP) 1탄 (0) | 2024.07.31 |
[리마인드] 자바 - JVM (0) | 2024.07.31 |