본문 바로가기
Java

이것이 자바다 (첫번째 정리) 1장까지

by 자연송어 2021. 3. 6.

1.3 자바 개발 환경의 구축

 

환경 변수 필요한 이유

서버 프로그램 설치할 때 JDK의 설치위치를 알기 위해

JACA_HOME 이라는 환경변수를 찾게 됨.

 

1.4 자바 프로그램 개발 순서

2단계 컴파일 과정을 거침.

1) 자바 소스파일(*.java)이 컴파일러(javac.exe)로 바이트 코드 파일을 생성

2) 자바 가상 기계 (java.exe)가 해석해서 완전한 기계어로 변환 -> 실행

 

2단계 컴파일을 거치는 이유

다양한 운영체제에서 바이트 코드 파일을 이용해 개발하고 실행할 수 있도록 하기 위한 것.

자바 소스파일 작성 실습

1. c드라이브에 temp 폴더 생성

2. temp 폴더에 텍스트파일 생성 -> Hello.java 로 확장자 변경

3. 메모장 열어서 Hello.java 파일 드래그

 

public class Hello { 
	//클래스블록(메인 메소드) 
  public static void main(String[] args) { 
  	//메소드블록(콘솔 출력 내용)
	System.out.println("Hello, welcome to the java world "); 
 }
}

cmd 실행

-> cd C:\Temp (cd = 체인지 디렉토리란 뜻)

-> dir (디렉토리의 목록을 보겠다는 뜻) - Hello.java 목록에 있는거 확인

-> javac Hello.java (에러 없이 그냥 떨어지면 컴파일러 성공이라는 뜻)

-> dir (디렉토리 확인 -> Hello.class 파일 생성된 것 확인)

-> java Hello (Hello 뒤에 .class 생략한 것)

-> 출력

 

* 소문자, 대문자를 다르게 사용하면 어디서 에러가 나오는지 나옴.

 

1.5 주석과 실행문

주석

  • 프로그램 실행과는 상관없이 코드에 설명을 붙인 것
  • 컴파일 과정에서 주석은 무시되고 실행문만 바이트 코드로 번역
  • //  <- 한줄 주석 (행 주석)
  • /* ~ */  <- 사이에 있는 모든 범위를 주석으로 처리 (범위 주석)
//  <- 한줄 주석 (행 주석)
/* ~ */  <- 사이에 있는 모든 범위를 주석으로 처리 (범위 주석)

실행문과 세미콜론(;)

실행문

변수 선언, 값 저장, 메소드 호출에 해당하는 코드

실행문 끝에는 반드시 세미콜론(;)을 붙여 실행문의 끝을 표시한다.

 

1. 6 이클립스 설치

이클립스

- 2003년에 IBM에서 개발

- IDE(자바 통합개발환경) 제공

- 플러그인 설치가능 (안드로이드, 스프링, C, C++ 개발환경)

- 이클립스는 자바 언어로 개발된 툴이므로 JDK 설치 필요

 

이클립스 설치

- 이클립스 들어가서 java EE 로 된 것을 설치하라는데 14년도 이후에 업데이트 됬다고 함.

- 근데 EE라고 되있는게 없음. 구글에 java EE를 검색하면 오라클이 검색결과로 나오는데 그건 이클립스가 아닌듯함.

- Enterprise Java 개발자를위한 Eclipse IDE <- 이거 다운 받음. 이게 Java EE가 맞는지 확인 필요함.

 

1차 당황

- 이클립스jee 압푹파일을 풀자 파일이름이나 확장명이 깁니다. 지정된 경로를 찾을수 없다며 7개의 파일이 압출풀기에 실패함.

- 'Java 압축파일 파일 이름이나 확장명이 너무 깁니다' 로 검색

더보기

- [알집] 압축 풀때 결과창에 파일 이름이나 확장자명이 너무 길다고 나옵니다.

긴 폴더명과 파일명을 가진 압축 파일을 선택해서 현재 폴더에 압축 풀기 등으로 풀기 작업을 진행하면 [파일 이름이나 확장자명이 너무 깁니다.] 로 나오는 경우가 있습니다.

 

해당 문제의 경우, 파일 손상 등의 오류가 아닌, 파일명 또는 파일경로를 포함한 파일명 길이가 윈도 지원 길이를 초과하여 발생하는 메시지입니다. (윈도에서는 파일 경로와 파일명을 포함하여 최대 255자까지의 파일명 길이를 지원)

 

이 경우, 압축파일을 C드라이브 하위에 옮겨서 풀거나, 압축 파일 -> 마우스 오른쪽 버튼 메뉴 -> "알집으로 압축 풀기" 메뉴를 선택하여 압축 풀 기창에서 압축 풀 경로를 C드라이브나 내 문서 등으로 지정하여 진행하시면 됩니다.

 

또는, 압축파일을 알집으로 연 상태에서 파일의 이름을 간단하게(몇 글자 내외) 변경하신 후 압축을 진행하시면 이용이 가능하실 것입니다. 감사합니다.

해결방법

-> C드라이브에 압축풀기하면 되는 문제였다. 간단한 문제였는데 당황함.

이클립스 설명

- 이클립스 처음 구동 시 뷰가 배치되어 있는 상태 -> perspective

- 아직 java EE로 할 필요 없기 때문에 java로 변경

-> open perspective -> java선택 

 

워크스페이스

- 이클립스에서 생성한 프로젝트가 기본적으로 저장되는 디렉토리

- 최초 실행 시 워크스페이스 런처에서 설정

-> 실행 후 변경 방법 - file -> switch workspace -> other

-> 최초 실행 시 런처 설정할 수 있도록 재설정 하는 방법

  • window -> preferences -> General -> startup and shutdown
  • prompt for workspace on startup 체크 해제

- 프로젝트 실행 시 .metadata 디렉토리 자동 생성됨. (이클립스 실행 시 필요한 메타데이터가 저장된 디렉토리)

-> 워크스페이스에 이 디렉토리를 삭제 하고 실행하면 초기 상태로 다시 실행됨.

 

퍼스펙티브와 뷰 

퍼스펙티브(Perspective)

- 뷰를 묶어 놓은 것

- 원하는 위치에 이동 가능.

 

뷰(View)

우리 책에서 유용한 뷰들

- Package Explorer

- Console

 

자바 프로젝트 생성

- 뉴 자바 프로젝트

- 프로젝트 레이아웃 = separate folder for sources and class files (기본값) <- 소스폴더랑 클래스 폴더 분리해서 저장

- 소스(.java) = src 폴더 저장

- .class = bin 폴더 저장

 

다른점 확인

- 인강과 다르게 create module-info.java file 이 체크 되어 있음.

- 피니쉬로 넘어가자 모듈 생성 네임을 확인하라고 나옴.

 

클래스 생성

- package -> 모두 지우기 

- file - new - class

- 네임 ->Hello 입력 (Hello.java 파일 생성)

-> Hello.java 생성하자 갑자기 package Explorer 폴더 부분이 모두 X표시가 뜸.  (모듈이 있어서 그런거였음.)

 

자바 소스 컴파일 할때

-> javac Hello.java (컴파일 명령어)

-> Hello.class 생성

 

이클립스에서 명령어 작성 후 저장 시

-> 자동으로 javac Hello.java (컴파일 명령어) 실행

-> Hello.class 생성 (bin 폴더에 자동저장)

 

패키지 익스플로러에서는 bin폴더가 확인 안됨.

이클립스에서 꼭 bin 폴더를 보고 싶다면

-> window - show view - navigater (윈도우 탐색기 역할)

 

public class Hello {
	public static void main(String[] args) { 
		System.out.println("Hello, welcome to the java world")
	}
}

↑글자 출력 

 

Error occurred during initialization of boot layer
java.lang.module.FindException: Error reading module: C:\Users\조영동\eclipse-workspace\chap01\bin
Caused by: java.lang.module.InvalidModuleDescriptorException: Hello.class found in top-level directory (unnamed package not allowed in module)

↑실행하자 에러가 나옴.

 

-> 동일하게 검색해봄.

여기에 정의 된 모듈이 있다고 생각합니다 [module-info.java 파일 확인]. 
Java 언어 사양 버전 15, 섹션 7.4.2에 따라 "이 컴파일 단위가 명명 된 모듈 
'test'와 연결되어 있으므로 명명 된 패키지를 선언해야합니다. '라는 경우 
컴파일 오류가 발생해야합니다. 호스트 시스템은 일반 컴파일을 연결해야합니다. 
명명 된 모듈이 아닌 명명되지 않은 모듈 (§7.7.5)이있는 명명되지 않은 패키지의 단위. 
" 이 프로그램을 실행하려고하면이 오류가 발생했을 것입니다.

- 모듈이 있으니 패키지를 선언해야 된다는 내용이다. 인강에는 모듈이 없고 내게는 모듈이 있으며 

패키지를 선언해야 하는 것 같다. 그럼 모듈을 지우면 어떻게 될까 하는 생각에 모듈을 지워봤다.

 

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Syntax error, insert ";" to complete BlockStatements

	at Hello.main(Hello.java:4)

-> 다시 에러가 나옴. 세미콜론(;)을 안 넣어서 에러가 나왔다.

-> 세미콜론 넣자 정상 실행됨.

 

파일 실행 방법

1. 이클립스에서 실행 버튼 

2. .java 파일 오른쪽 클릭 -> Run As -> java application 클릭

 

소스코드 작성

- 인텔리 센스 기능 (자동으로 소스를 추천해주는 기능 <- 근데나는 안나옴.)

 

1.7 풀인원 설치와 실행

풀인원 파일- 이클립스 설치했는데 실행안 될 때. - 하나의 파일에 JDK + 이클립스 + 책소스 압축한 파일- 다운로드 - 한빛 미디어 도서 사이트- 반드시 C드라이브 디렉토리에 압축 해제

 

1장 - 확인문제

1. 4) JRE에는 컴파일러(javac.exe)가 포함되어 있다.

(X) <- 컴파일러는 개발도구이기 때문에 JDK에만 있음.

 

2. 3) JVM은 운영체제에 독립적이다 (운영체제별로 동일한 JVM이 사용된다)

(X) <- 운영체제별로 실행되는 JVM이 모두 다름. (JVM은 운영체제와 종속적 )

 

3. 3/1/2/4  <- 자바소스파일 작성 - javac.exe로 바이트 코드 생성 - JVM구동 - 메소드 실행

 

5. 4) <!--...--> : XML에 사용되는 주석 (X)

 

6. .metadata는 프로젝트의 소스 파일들이 저장되는 디렉토리이다. 

(X) <- 이클립스 실행과 관련된 선호옵션이 지정되는 디렉토리 (글자의 크기, 에디터의 배경색상 저장)