2021-11-26 수업내용정리

범고래·2021년 11월 28일
0

비트캠프 수업내용

목록 보기
3/20
post-thumbnail

(1) JVM / JRE / JDK / Java SE / Java EE / Java ME

  1. Java SE (standard edition) : 자바앱의 기본도구이다
  • JDK : JRE + 개발도구 (컴파일러, 디버거, 프로파일러 등)
  • JRE : 자바 Runtime Environment : 자바 앱 실행도구
    -- JVM (Java Virtual Machine) : 바이트코드 인터프리터
  1. Java EE (Enterprise Edition) : 기업용 App 개발 관련 도구이다 (Java SE를 포함하지 않는다)
  • Jakarta EE (이름변경) : 개발 관리 소유권이 이클립스재단에 넘어감
  1. Java ME (Micro Edition) : Embedded App (반도체 메모리에 자바 앱을 미리 저장하는것을 말한다) 개발도구이다
    ex) 에어콘 전자렌지 자동차 - 안에 반도체가 있고 그 안에 프로그램이 심어져 있음

(2) 자바 컴파일과 실행

(3) 바이트코드와 JVM

즉 JVM은 어려운 개념이 아닌, class파일을 실행시키기 위한 프로그램으로 생각하면 편하다

(4) 자바 명령문을 작성하는 최소 코드

public class Hello {                       //클래스명

  public static void main(String[] args) { // 메소드명. JVM이 명령문을 시작하는 입구
    System.out.println("Hello World!");    // 명령문

  }

}

(5) cmd로 자바 소스 파일 컴파일

C:\Users\AAAAAAA\eclipse-workspace\test\src>javac -d ../bin Hello.java

현재 폴더의 Hello.java 파일을 컴파일한후 폴더 상위로 간 후 그 안에 bin 이란 폴더에 class 파일을 넣을 때 사용한다.

C:\Users\AAAAAAA\eclipse-workspace\test>javac -d bin src/Hello.java

현재 폴더 안에 있고 src폴더 안에 있는 자바 파일을 컴파일하고, 현재 폴더 안에 있는 bin이란 폴더에 class 파일을 넣을 때 사용한다.

C:\Users\AAAAAAA\eclipse-workspace\test\src>del *.class

src 안에 있는 다음 확장자파일(*.class)을 모두 삭제할때 사용한다.

C:\Users\AAAAAAA\eclipse-workspace\test>java -classpath bin Hello ->
C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin Hello (같은거)

이 폴더 안에 있고, bin 안에 있는 컴파일된 Hello를 실행할때 사용한다.

(6) text 파일과 binary 파일

  1. 텍스트
  • 저장형식 : utf-8, ms949 등 특정 문자집합의 규칙에 따라 저장한다
  • 파일 보기 : 텍스트 편집기라면 파일 보기가 가능하다
  • 파일 편집 : 텍스트 편집기라면 모두 가능하다
  • 파일 크기 : 파일 크기가 크다
  • 예 : .java / .csv /.xml /.html /.cs / .js / .txt / .md / .properties 등
  1. 바이너리
  • 저장형식 : .ppt, .psd, .gif, .pdf 등 특정 애플리케이션 포맷에 맞춰 저장한다
  • 파일 보기 : 해당 파일의 포멧을 알고있는 프로그램만 가능하다
  • 파일 편집 : 해당 파일의 포멧을 지원하는 프로그램만 가능하다
    ex) 메모장으로 읽을때 .java면 가능, 그러나 .class는 불가능
  • 파일 크기 : 파일 크기가 작다
  • 예 : .pdf / .doc . /.hwp / .ppt / .xls / .mp3 / .avi / .gif / .jpg 등

(7) JS / C / Java

(8) 프로그램 명령문 관리 (변천사)

명령문보단 코드라는 표현이 더 정확하긴 하다

  1. 단순 관리
  • 처음엔 이런 형태였으나, 코드량이 많아지면 관리가 안된다는 문제가 있었다.
  1. 기능별로 묶어서 관리
  • 명령문이 복잡해지고 많아져서 이런 형태로 관리를 하기 시작했다.
  1. 서로 관련된 기능을 분류하여 묶어서 관리 => 분류 : class
  • 계산기능 다 모아서 하나의 클래스로
  • 수학 관련 기능 다 모아서 하나의 클래스로
  • 문자열 관련 기능 다 모아서 하나의 클래스로
    ...
  • 대량의 소스코드를 더욱 효과적으로 관리할 수 있게 되었고 이를 객체지향이라 부른다.
  1. 클래스 별로 파일 분리
  • Calculator.java
  • Math.java
  • String.java
  • 이처럼 각각의 클래스를 별도의 파일로 작성하여 저장하게 되었다.

  1. 클래스 파일을 묶어서 관리 => 패키지
  • 맨 위에 package lang; => 이런 식으로 코드가 있어야만 이 패키지 안에 들어있는걸로 간주된다.
  • 저 코드 넣고 다른 패키지에 넣어도 컴파일 되긴 하는데 비효율적이니 그렇게 하진 말자.

(9) cmd에서 패키지가 있는 클래스 실행

  • 되는 예

컴파일

C:\Users\AAAAAAA\eclipse-workspace\test>javac -d bin src/lang/Test1.java

실행

C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin lang.Test1
TEST1

C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin lang/Test1
TEST1

  • 안되는 예

컴파일

C:\Users\AAAAAAA\eclipse-workspace\test>javac -d bin src/lang.Test1.java
error: file not found: src\lang.Test1.java
Usage: javac
use --help for a list of possible options

실행

C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin/lang Test1
Error: Could not find or load main class Test1
Caused by: java.lang.NoClassDefFoundError: lang/Test1 (wrong name: Test1)

C:\Users\AAAAAAA\eclipse-workspace\test>java -cp bin Test1
Error: Could not find or load main class Test1
Caused by: java.lang.ClassNotFoundException: Test1

(10) 자동 컴파일과 수동 컴파일

  • JAVA IDE 도구에서는 보통 자동 컴파일을 수행한다.

    1) 컴파일된 코드를 한 개의 실행파일로 합치치 않는다.
    2) 소스파일을 변경할 때 각 파일마다 컴파일한다.

  • C & C++과 같은 기존 프로그래밍 언어는 수동 컴파일을 수행한다.

    1) 컴파일, 링킹 순으로 하나의 .exe파일을 만든다.
    2) 보통 여러 파일의 코드를 변경한 후 한 번에 컴파일한다.

(11) 프로젝트 폴더 구조

  • 이클립스 IDE 폴더 구조는 다른 IDE들과 호환되지 않는다.

  • 그래서 특정 IDE에 종속되지 않는 프로젝트 폴더 구조인 MAVEN 빌드 구조를 사용한다.

(12) 빌드 도구

  • 프로젝트의 소스 컴파일, 테스트, 문서생성, 배포파일 생성 등 애플리케이션을 만드는 작업을 도와주는 도구다.
  • 컴파일러나 인터프리터가 아니고, 빌드 도구는 컴파일러나 인터프리터를 활용하여 앱을 만든다.

(13) gradle을 이용하여 메이븐 표준 프로젝트 디렉토리 생성하기

1) gradle을 다운받은 후 c드라이브 tools폴더에 설치한다.

2) 환경변수 path에 C:\tools\gradle-7.3\bin을 추가한다.

3) 프로젝트 폴더로 사용할 디렉토리를 생성한다
ex) C:\Users\AAAAAAA\git\bitcamp-study\java-lang

4) cmd에서 $ gradle init명령어를 사용하여 프로젝트 폴더를 구성해준다

C:\Users\AAAAAA\git\bitcamp-Study\java-lang>gradle init
Starting a Gradle Daemon (subsequent builds will be faster)

Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Scala
6: Swift
Enter selection (default: Java) [1..6] 3

Split functionality across multiple subprojects?:
1: no - only one application project
2: yes - application and library projects 1
Select build script DSL:
1: Groovy
2: Kotlin---> 50% EXECUTING [1m 56s]
Enter selection (default: Groovy) [1..2] 1

Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no]

Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit Jupiter) [1..4] 1

Project name (default: java-lang):
Source package (default: java.lang): com.eomcs.study

> Task :init
Get more help with your project: https://docs.gradle.org/7.3/samples/sample_building_java_applications.html

BUILD SUCCESSFUL in 9m 22s
2 actionable tasks: 2 executed
C:\Users\AAAAAA\git\bitcamp-Study\java-lang>tree
폴더 PATH의 목록입니다.
볼륨 일련 번호는 4091-566D입니다.
C:.
├─.gradle
├─app
│ └─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─eomcs
│ │ └─resources
│ └─test
│ ├─java
│ │ └─com
│ │ └─eomcs
│ └─resources
└─gradle
└─wrapper

C:\Users\AAAAAAA\git\bitcamp-Study\java-lang>

5) 이클립스용 프로젝트 설정파일을 생성한다.

  • java.lang 안에 설치된 app\build.gradle의 내용을 바꿔준다.
plugins {
    id 'java' // 자바 빌드관련 작업을 수행할 수 있는 도구를 추가한다.
    id 'eclipse' // 이클립스 관련 작업을 수행할 수 있는 도구를 추가한다.
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'junit:junit:4.13.2'
    implementation 'com.google.guava:guava:30.1.1-jre'
}
  • $gradle eclipse 명령어를 사용한다

6) .project, .classpath, .setting 파일이 java-lang 폴더 안에 생성되었는지 확인한다.

7) eclipse에서 java-lang 폴더를 import한다.

profile
끝없는 대양에서의 항해를 위해

0개의 댓글