JAVA - 이클립스 사용하기

오찬주·2024년 4월 6일

Java

목록 보기
6/6
post-thumbnail

[⚒️ CONTENTS]


지난 글에서는 intellj를 사용해 자바를 사용하는 글을 포스트했다.
하지만 .. 학교 수업에서는 거의 (아니 전부,,) eclipse를 활용하기에 이와 관련된 것들을 정리해보고자 한다.


이클립스 단축키

내가 주로 사용했던 단축기를 소개하자면 (맥북 기준)

기능 관련 단축키

commad + shift + O : 자동 임포트
(클래스명 선택 후) command + T : 상속 관계 표현 (한 번 더 command + T 입력하면 슈퍼 타입 확인
option + spacebar: 코드 자동 완성

편집 관련 단축키

command + shift + F: 자동 정렬
option + 방향키 : 코드 이동
command + D: 해당 줄 코드 삭제
option + up/down key : 해당 줄을 위/아래로 이동


자바 프로젝트

자바 프로젝트를 생성하고 실행하는 과정은 다음과 같다

1단계 : 자바 프로젝트 생성하기 (프로젝트 폴더 생성)
2단계: 패키지 생성하기 (하위 폴더 생성)
3단계: 자바 소스 파일 생성하기
4단계: 컴파일 및 바이트 코드 생성하기
5단계: 실행하기


1단계 자바 프로젝트 생성하기

File의 New의 Java Project를 누른다

project 이름을 설정해준다.

이때 Module에 체크가 되어있지 않도록 확인해준다

💡 모듈은 자바9에서 도입된 기능으로 일종의 패키지 집합을 의미한다. 지금은 테스트 코드를 작성하는 것이기에 모듈을 사용하지 않아 모듈 파일 생성을 해제해줘야 하기 때문에 위와 같은 과정을 거치는 것이다!

이후 Finish를 누른다.

3단계: 자바 소스 파일 생성하기

어라 2단계가 어디갔지?
사실 나는 패키지를 따로 생성을 안해주는 편이다.
패키지를 지정하지 않으면 디폴트 패키지가 지정된다.

src 폴더와 bin 폴더 아래에 하위 폴더 없이 바로 소스 폴더와 바이크 코드 파일이 각각 위치한다는 의미다.

만약 패키지를 지정해주면 코드를 작성할 때 항상 맨위에
package package name을 작성해주어야 한다.

그렇다면 귀찮은데 package 지정하지 말까?

NOPE.
보통 나는 java를 수업 실습용으로 활용하기에 default로 놔두지만,
있는 이유가 있다..

💡 하나의 프로젝트 안에 동일한 이름의 파일이 있어도 패키지로 분리되어 있으면 충돌이 발생하지 않는다!

바로 이게 가능하다는 말! 여러 개의 프로젝트를 합칠 때 우연히 동일한 이름의 자바 소스 파일을 생성했다 하더라도 패키지가 구분되면 합치는 데 전혀 문제가 발생하지 않기에 패키지 사용을 권장한다 !!


자바 소스 코드 실행 과정

그렇다면 자바 코드를 작성하고 run을 눌렀을 때 어떻게 실행되는걸까..?

먼저 소스 파일 (.java)을 작성한 후 컴파일을 수행하면 자바 가상 머신상에서 동작하는 바이크 코드 (.class)가 생성된다.

어라? 그런데 나는 New에서 class 생성하기를 눌렀는데
.java와 .class가 자동으로 만들어졌는걸?

이클립스는 소스 코드의 저장만으로도 컴파일이 자동으로 수행되기 때문!

소스 파일과 바이크 코드는 각각 프로젝트 내의 src 폴더와 bin 폴더 안에 위치하고, 바이트 코드를 실행하게 되면 자바가상머신은 운영체제에서 메모리를 할당받아 자바 프로그램을 실행하는 것이다!

java 소스 파일 생성
-> 파일 저장 시 자동 컴파일
-> .class 바이크 코드 파일 생성
-> 실행
-> JVM은 메모리 할당
-> 메서드 영역에 클래스 로딩
-> main() 메서드 실행

번외)

그렇다면 JVM(java virtual machine)이 할당한 메모리 영역은?

JVM은 메모리를 효율적으로 관리하기 위해 메모리를 크게
메서드 영역 스택 영역 힙 영역으로 나눠 사용한다.

특히 메모리의 메서드 영역은 class 영역, static(정적)영역, final(상수) 영역이라고 부른다.

메모리 할당 이후 실행 파일인 바이트 코드는 메모리의 메서드 영역 에서 로딩되며, 이후 클래스 내에 포함되어 있는 main()메서드를 실행하는 것이 JVM의 역할이다.

profile
프론트엔드 엔지니어를 희망합니다 :-)

0개의 댓글