whatisthis?

JAVA. 혼자 공부하는 자바 Day 01 본문

WEB STUDY/PHYTHON | BACK-END

JAVA. 혼자 공부하는 자바 Day 01

thisisyjin 2021. 9. 23. 21:40



1-(1) 프로그래밍 언어와 자바


컴퓨터가 이해할 수 있는 언어인 기계어
사람이 이해할 수 있는 프로그래밍 언어로 작성한 파일 = 소스파일
소스파일은 컴파일(compile) 과정을 거쳐 0과 1로 이루어진 기계 파일로 번역후 실행.

자바(Java)는

- 썬 마이크로시스템즈에서 발표.
- 오라클(Oracle)에서 라이선스 보유.
- 자바 개발 도구(JDK : Java Development Kit) - Open JDK와 Oracle JDK중 주로 오라클 이용. (학습은 무료)

자바(Java) 의 특징

- 모든 운영체제에서 실행 가능
- 객체 지향 프로그래밍 (OOP : Object Oriented Programming)
- RAM 자동 정리
- 다양한 오픈소스 라이브러리


<JDK 설치>


1. JAVA_HOME 환경변수 설정

JDK가 설치된 폴더를 일반적으로 JAVA_HOME 이라고 부른다.
JAVA_HOME 환경변수를 이용할 경우가 있기 때문에
JAVA_HOME 환경변수를 만들고, JDK 설치 폴더를 등록하는 것이 좋다.

윈도우 OS에서 환경변수 설정시 - [시스템 속성] 대화 상자 이용.
** 제어판 - 시스템 및 보안 - 시스템 - 고급 시스템 설정
[시스템 속성] - [고급]탭 - 환경변수 클릭 후
[시스템 변수] - 새로만들기 버튼 클릭.

변수이름 : JAVA_HOME
변수 값 : JDK가 설치된 경로 (예- c:\Program Files\Java\jdk-11.0.2)
-> 하단의 [디렉터리 찾아보기]를 이용해도 된다.

2. Path 환경변수 수정

JDK 설치 폴더 안에 bin 폴더 존재. bin 폴더 내에는 다양한 명령어 있음.
예> 자바 소스파일 컴파일해주는 javac 명령어 / 컴파일된 파일을 실행해주는 java 명령어

이와 같은 함수들은 bin 폴더안에 있기 때문에 다른 폴더에서 실행할 수 없음.
다른 폴더에서 사용하기 위해서는 환경변수 Path에 bin 폴더를 등록해야 함.
** 위와 같은 방법으로 Path 환경변수를 클릭하고 [편집]버튼을 누른다.
[새로만들기]버튼을 클릭 후 추가된 항목에 직접 ‘%JAVA_HOME%\bin’ 을 입력함.
* 이때, % %로 감싼 것은 환경변수를 의미한다. 즉, 환경변수 JAVA_HOME에 해당하는 파일에 bin 폴더를 옮긴 것.
입력 후 [위로 이동] 버튼으로 첫번째 항목이 되도록 올려줌.

<설정 완료된 것을 확인하려면>
Windows CMD 창을 켜서 (=명령 프롬프트, cmd)

javac -version을 입력해본다.





1-(2) 이클립스 개발 환경 구축

이클립스란?

- 오픈소스 통합 개발 환경(IDE : Integrated Development Environment).
- 프로젝트 생성, 자동 코드 완성, 디버깅 등 개발에 필요한 여러 기능 제공.

이클립스는 자바 언어로 개발된 툴이므로, 이클립스를 실행하려면 JDK가 필요.


워크스페이스

설치 완료 후 실행하면, [Eclipse IDE Launcher] 대화상자가 나타남.
이때 프로젝트가 기본으로 저장될 워크스페이스 폴더를 지정해줌.


퍼스펙티브(Perspective)와 뷰(View)

- 뷰(View) = 이클립스 내부에서 사용되는 작은 창.
- 퍼스펙티브 = 이클립스에서 개발시 유용하게 쓸 수 있는 뷰(View)의 집합.

가장 많이 사용하는 뷰 = Package Explorer 뷰 (프로젝트 관리, 소스파일 생성 및 삭제)
그 외 자주 사용하는 뷰 = Console 뷰 (프로그램 출력 내용 보임)
**[Window]-[Show View]-[Console] 클릭




1-(3) 자바 프로그램 개발 과정

프로그램 개발 과정

- 확장자명이 .java 인 텍스트 파일 생성
- 컴파일러인 javac 명령어로 컴파일 -> 확장자명이 .class인 바이트코드파일 생성 (= 완전한 기계어는 X. 바로 실행은 못함)
- 바이트코드파일을 기계어로 번역하기 위해 java 명령어 (파일 실행)


자바 프로그램은 완전한 기계어가 아닌, 바이트 코드(byte code) 파일로 구성됨. (확장자명 = .class)
바이트 코드 파일은 OS에서 바로 실행X.
자바 가상 기계(JVM : Java Virtual Machine)이라는 번역기 필요.
**자바가 JVM을 사용하는 이유 = 다양한 OS에서 수정하지 않고 사용하기 위해.

javac 명령어로 컴파일 된 바이트코드파일은 java 명령어로 실행됨.
각 운영체제의 JVM이 알아서 바이트코드파일을 해당 운영체제에서 실행가능한 기계어로 번역하기 때문.

프로젝트 생성

[File] - [New] - [Java Project] 선택 후
Project name 입력하고 Finish, Create 순으로 누르면
자동으로 module-info.java 편집뷰가 실행됨.

module-info.java에서 중괄호 {} 안에 requires java.se; 라고 작성하고, Save 해줌.
** JAVA SE(JDK)에서 제공하는 모든 모듈이 필요하다는 뜻.

소스파일 생성과 작성

1. 패키지 생성
해당 프로젝트의 src 폴더 선택하고 우클릭 - [New] - [Package]를 선택.
Name에 패키지 이름을 입력하고 Finish 누름.

2. 클래스 생성
방금 만든 패키지를 선택하고, 우클릭 - [New] - [Class] 선택.
Name에 클래스 이름 입력하고,
main() 메소드를 자동으로 추가하기 위해서 [public-statid-void main(String[] args)]를 체크.
** 자바는 내장함수가 없어서 메인함수도 이와 같이 불러와야함.

3. 클래스명.java 파일 작성
위에서 클래스명을 Hello라고 작성했다면
자동으로 패키지 안에 Hello.java 파일이 생김.
여기에 코드를 작성하고, 소스파일을 저장하면 자동으로 컴파일됨.
** 이클립스는 컴파일 메뉴가 따로 없음. 저장이 곧 컴파일!

예>

package sec03.exam01; // 패키지 선언 (sec03.exam01이라는 패키지에서 생성되었으므로)

public class Hello { // 클래스 선언 (public class = 공개 클래스 / 뒤에 Hello는 소스파일명과 동일하게)
public static void main(String[] args) { // 클래스 블록
System.out.println(“Hello, java”) // 바이트코드파일을 실행하려면 클래스 블록 내에 main()메소드 블록 필요.
}
}


클래스 = 필드, 또는 메소드를 포함하는 블록
메소드 = 어떤 일을 처리하는 실행문을 모아놓은 블록


** 대문자로 작성해야하는 것 - Stirng[] / System.out
** 소스파일 저장시 컴파일됨 -> 자동 컴파일된 코드파일은 bin 폴더 내부에 패키지폴더와 함께 .class 로 생성됨.






___




바이트 코드 실행

소스파일 Hello.java를 클릭하고 툴바에서 Run아이콘을 클릭
or. 우클릭 - [Run As] - [Java Application] 선택하면 -> 바이트코드파일 실행됨. (이클립스 하단에 콘솔창에서 실행됨)


+) 명령 라인에서 javac와 java로 직접 컴파일, 실행해야하는 경우도 있음.
명령 프롬프트(cmd)를 실행하고 다음과 같이 작성해 chap01 폴더로 이동. (프로젝트, 즉 모듈 이름이 chap01)

cd C:\SelfStudyJava\chap01

*여기서 SelfStudyJava는 JAVA_HOME, 즉 JDK 설치후 워크스페이스로 설정한 폴더의 이름이다.

javac -d bin src/sec03/exam01/*.java
tree /f /a
** JDK 11 이후 : javac -d src/module-info.java src/sec03/exam01/*.java

** tree /f /a를 실행하면 bin 폴더에 module-info.class 와 바이트 코드파일이 생성됨.


java -cp bin sec03.exam01.Hello
(11 이후) java -p bin -m chap01/sec03.exam01.Hello

** 여기서 bin은 바이트코드 저장 위치를 의미.


주석
// 라인주석
/* */ 블록주석
/** */ 도큐먼트 주석

실행문과 세미콜론(;)

실행문 끝에는 항상 세미콜론(;)을 붙여 실행문이 끝났음을 표시해줘야함.
컴파일러는 세미콜론(;)까지 하나의 실행문으로 해석하기 때문에 여러줄에 걸쳐 하나의 실행문을 작성해도 됨.

예>

package sec03.exam02;

public class RunStatementExample {
public static void main(String[] args) {
int x = 1;
int y = 2;
int result = x + y;
System.out.println(result);
}
}