package sec03.exam01;

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, Java");
    }
}

📁 패키지 선언

package sec03.exam01;
  • Hello.java는 sec03.exam01 패키지에 포함된 클래스이므로 package sec03.exam01; 선언이 반드시 있어야 한다.

🔷 클래스 선언부

public class Hello {
  • 클래스 선언부 : public class Hello와 같은 형식으로 클래스의 정의를 시작하는 부분
  • public  : 공개 클래스임을 나타내는 접근 제어자
  • class : 클래스를 정의할 때 사용하는 키워드
  • Hello : 클래스 이름이며, 소스 파일명(Hello.java)과 반드시 일치해야 하고, 대소문자도 구분해야 한다.

🧱 클래스 구조

<접근제어자> class <클래스이름> {
    <필드 선언>;
    <메소드 선언>;
}
  • 클래스 : 필드와 메소드를 포함하는 블록
  • 필드(Field) : 클래스의 속성을 저장하는 변수
  • 메소드(Method) : 어떤 작업을 수행하는 실행문들을 모아 놓은 블록

🔐 접근 제어자 (Access Modifier)

  • 접근 제어자 : 정의된 클래스나 클래스 멤버에 접근 가능한 범위를 지정하는 키워드
  • 접근 또는 사용 : 변수 선언이나 상속 등을 위해 클래스 이름을 사용하는 것

사용 가능한 접근 제어자

접근 제어자 설명
(생략) 같은 패키지 내에서만 접근 가능
public 모든 클래스에서 접근 가능
protected 같은 패키지 또는 상속 관계에서 접근 가능
private 같은 클래스 내부에서만 접근 가능

소스파일이란?

  • 프로그래밍 언어로 작성된 텍스트 파일 (.java 확장자)
  • 컴퓨터는 이 파일을 바로 실행할 수 없음
  • ➡️ 컴파일 과정을 통해 기계어(0과 1)로 번역해야 사용 가능

 

자바 개발 과정

1단계. 소스파일 생성

  • 확장자가 .java인 파일
  • 자바 언어로 코드 작성
  • 예: HelloWorld.java

소스파일 = 사람이 이해할 수 있는 코드

 

 

✅ 2단계. 컴파일 (javac 명령어)

  • javac 파일명.java 명령어 실행
  • ➡️ .class 확장자의 바이트 코드 파일 생성

컴파일 = 소스파일 ➡ 바이트 코드로 번역
⚠️ 바이트 코드는 운영체제가 바로 실행할 수 없음

 

 

✅ 3단계. 실행 (java 명령어)

  • java 파일명 명령어 실행 (확장자 제외)
  • 바이트 코드가 **JVM(Java Virtual Machine)**에 의해 기계어로 번역되어 실행

 

💡 바이트 코드란?

  • 완전한 기계어가 아니어서 바로 실행할 수 없는 파일
  • .class 확장자의 파일
  • ➡️ JVM이 운영체제에 맞게 기계어로 재번역 후 실행
JVM이 있기 때문에 자바는
"윈도우에서 만든 프로그램을 리눅스에서 실행 가능!"

 

 

🛠️ 자바 개발 도구

Editor I) 메모장

다음과 같이 메모장에 코드를 입력 후 파일 형식은 모든 파일로 하고 확장자를 .java로 하여 소스 파일을 저장한다.

로고키 + R → cmd ⇒ 소스파일이 저장된 폴더로 이동하여 javac 명령어를 이용하여 컴파일,

java 명령어를 이용하여 실행한다.

javac : 컴파일, 사람이 이해할 수 있는 언어로 작성된 코드를 기계가 이해할 수 있는 기계어로 바꿔주는 명령어

ㄴjavac 명령어를 실행하면 .class 파일이 생성되는데

이렇게 사람은 이해할 수 없지만 기계는 이해하는 바이트 코드로 변한 것을 볼 수 있다.

바이트 코드 파일은 완전한 기계어가 아니므로 바로 실행할 수 있는 파일이 아니다.

바이트 코드 파일을 완전한 기계어로 번역해서 실행하려면 java 명령어를 사용해야 한다.

Editor II) Eclipse

📌 설치 가이드
https://deevchoe.tistory.com/24

 

 

📌 프로젝트 생성

  • Create module-info.java file 체크 해제

📌 소스파일 작성

    • 클래스 이름: 첫 글자는 대문자
    • public static void main(String[] args)
      • 자바 소스 컴파일 후 실행하려면 체크
      • java 명령어로 바이트 코드 파일을 실행하면 제일 먼저 main() 메소드를 찾아 블록 내부를 실행한다.
      • 그래서 main() 메소드를 프로그램 실행 진입점이라고 부르기도 한다.
 
 

 

메소드 : 어떤 일을 처리하는 실행문들을 모아놓은 블록

 


** 자동으로 컴파일 된 바이트 코드 파일이 {자바 프로젝트 폴더 경로}\bin 폴더에 {소스파일이름}.class로 생성됨


 

📌 실행 방법 (3가지)

첫번째! Run 아이콘을 클릭하여 실행

두번째! 마우스 우클릭 > Run As > Java Application

세번째! Ctrl + F11

세가지 방법 중 하나로 실행시킨 후 성공적으로 실행되면 아래와 같이 Console 뷰에 결과가 출력된다.

번외) Java perspective

 

  • Eclipse에서 자바 개발에 최적화된 뷰
  • 패키지 탐색기, 콘솔, 편집기 등 구성

 

 
 
 
 

 

프로그래밍이란 뭘까~

0과 1밖에 알지 못하는 기계가 실행할 수 있도록 정확하고 상세하게 요구사항을 설명하는 작업.

 

프로그래밍 언어

사람이 사용하는 언어는 컴퓨터 입장에서 이해할 수 없는 언어의 집합.

기계어는 컴퓨터가 쉽게 이해할 수 있는 0과 1로 이루어진 이진 코드로 사람 입장에서는 이해할 수 없는 언어.

사람과 컴퓨터가 대화하기 위해 사람의 언어와 기계어의 다리 역할을 하는 것.

출처 : 모던 자바 스크립트 Deep Dive

문제 해결 능력을 통해 만들어낸 해결 방안은 프로그래밍 언어의 문법을 사용해 표현한다.

즉, 작성된 코드는 해결 방안의 구체적 구현물이다.

대부분의 프로그래밍 언어는

"변수와 값"

"키워드"

"연산자"

"표현식과 문"

"조건문" 과 "반복문"

에 의한 흐름제어, 함수 그리고 자료구조인 객체 배열 등과 같은 문법을 제공한다.

프로그래밍 언어가 제공하는 문법을 적절히 사용하여

변수를 통해 값을 저장하고 참조하며

연산자로 값을 연산, 평가하고

조건문과 반복문에 의한 흐름제어로 코드의 실행 순서를 제어하고

함수로 재사용 가능한 문의 집합을 만들며

객체, 배열 등으로 자료를 구조화 한다.

 

자바의 특징

  • 모든 운영체제에서 실행 가능
  • 객체 지향 프로그래밍

: 객체(부품)를 만들고, 이 객체들을 서로 연결해서 더 큰 프로그램을 완성하는 기법

  • 메모리 자동 관리
  • 무료 라이브러리 풍부

: 프로그램 개발 기간 단축

 

자바 개발 도구(JDK : Java Development Kit)

1) 설치

https://github.com/ojdkbuild/ojdkbuild

 

 

 

2) 환경변수(운영체제가 실행하는 데 필요한 정보를 제공해주는 변수) 설정

- JAVA_HOME : JDK가 설치된 폴더

- 어떤 프로그램이 설치된 JDK의 위치를 찾을 때 JAVA_HOME 환경 변수를 이용한다.

 

- bin : 자바 소스 파일을 컴파일해주는 javac 명령어와 컴파일된 파일을 실행해주는 java 명령어 등

다양한 명령어들이 포함되어있는 폴더

 

 

3) 설치 확인

- 로고키 + R → cmd ⇒ 'java -version'을 입력하여 버전이 출력된다면 환경 변수가 제대로 설정되었다는 의미

- 에러가 난다면 환경 변수 설정 중 잘못된 건 없는지 확인

 

## JAVA 플랫폼의 3대 구성 요소

1. JVM (Java Virtual Machine)

: JAVA와 OS 사이에서 중개자 역할을 수행

: 컴파일 된 코드가 서로 다른 OS라 할지라도 실행되도록 설계 된 것

: 자바 소스코드(.java)를 만들어서 빌드하면 컴파일 작업을 거쳐 자바 바이트 코드(.class)로 자동 변환 및 생성

➜ JVM이 하는 일

** 바이너리 코드(.class) 읽기

** 바이너리 코드 검증

** 바이너리 코드 실행

** 실행 환경(Runtime Environment)의 규격 제공(필요한 라이브러리 및 기타 파일)

2. JRE (Java Runtime Environment)

: 자바 실행 환경

: 자바 프로그램을 실행 시킬 때 반드시 필요한 라이브러리 및 기타 필수 파일을 가지고 있다.

: Java 언어를 이용하여 개발한 코드를 실행 시키기 위해선 JRE가 필요

** JRE는 그 자체로 특별한 기능을 한다기보다는 JVM이 원활하게 잘 작동할 수 있도록 환경을 맞춰주는 역할을 합니다.

3. JDK (Java Development Kit)

: JRE + 개발을 위해 필요한 도구들을 포함

: Java 언어를 이용하여 개발 및 실행하기 위해서는 JDK가 필요

👍 컴퓨터에서 Java 프로그램을 실행하는데만 포커스를 둔다면, JRE만 설치하면 됩니다.

Java를 이용하여 프로그래밍까지 할 계획이라면 JDK를 설치하면 됩니다.

" JDK는 JRE를 포함하고 있고, JRE는 JVM을 포함하고 있습니다.

따라서, JDK를 설치하면 JRE, JVM이 자동으로 설치가 됩니다. "

 

 

알고가기!!

1. 클래스(Class)

: Object를 만들어내기 위한 설계도 / 틀

: Object를 코드로 구현한 것

: Object를 생성하는데 사용

package java_project;

/**
 * 멤버 변수 : 객체가 가지는 속성을 변수로 표현한 것
 */

public class Student {
	public int studentID;
	public String studentName;
	public String address;

	/**
	 * 메서드(method) : 객체의 기능을 구현한 것
	 * 
	 * 위에서 생성한 학생들의 정보를 통해 기능을 구현하기 위해서 학생 정보를 출력하는 메서드를 생성 학생들의 정보를 출력하기 위해
	 * showStudentInfo라는 메서드를 생성 메서드 내부에 학생 정보를 출력하는 코드를 작성
	 */

	public void showStudentInfo() {   //  학생 정보 출력
		System.out.println("학번 : " + studentID);
		System.out.println("이름 : " + studentName);
		System.out.println("주소 : " + address);

	}
}

 

 

2. 객체(Object)

: 구체적 · 추상적 데이터의 단위

: 실제로 존재 하는 것

: 용도는 Object가 가지고 있는 기능과 속성에 따라 다름

3. 인스턴스(Instance)

: 클래스를 new 명령문으로 메모리에 생성한 객체

: 각각의 독립적인 객체

** 클래스로부터 객체를 만드는 과정 ⇢ 클래스의 인스턴스화

** 클래스로부터 만들어진 객체 ⇢ 클래스의 인스턴스

** Instance = Object

👍 프로그래밍으로 표현하려는 실체는 객체입니다.

      이러한 실체를 추상화한 설계도는 클래스이며, 클래스를 인스턴스화하여 객체가 생성되는 것입니다.

/* 클래스 */
public class Animal {
  ...
}
/* 객체와 인스턴스 */
public class Main {
  public static void main(String[] args) {
    Animal cat, dog; // '객체'

    // 인스턴스화
    cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
    dog = new Animal(); // dog은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
  }
}

 

 

 

## 기타 용어

1. 플랫폼

: 프로그램이 실행되는 환경

2. API

: 프로그램 작성을 위한 도구의 모음

[Ex] 함수, 라이브러리 등

3. 라이브러리

: 소프트웨어를 개발할 때 유용하게 사용할 수 있는 변수, 함수 등의 모음

4. 컴파일

: 인간이 사용하는 언어로 작성된 소스 파일을 컴퓨터가 알아들을 수 있는 기계어 코드로 변환해주는 작업

+ Recent posts