ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (국비교육) 2 - 자바 기초
    개발/국비교육 2023. 6. 1. 17:45

    ■ 자바의 역사

    처음에 가전제품에 컴퓨터를 넣고(내장) 싶어했고 자원을 덜 먹는 프로그램을 만들고 싶었다.

    가볍게 돌아갈 수 있는 프로그램을 만들자 해서 나온 게 자바이다.

     

    한 번 코딩 완료하면 어느 곳에도 실행 

     

    JRE(Java Runtime Environment) : 자바가 실행될 수 있는 환경

     

    JVM(Java Virtual Machine) 자바가상머신(가상의 컴퓨터) 을 통해 실행

     

    - 리소스 : 사용될 수 있는 어떤 항목을 말한다. 프린터나 디스크 드라이브와 같은 장치들이 리소스가 될 수 있으며, 메모리도 마찬가지이다. 마이크로소프트 윈도우나 매킨토시와 같은 많은 운영체계에서, 리소스라는 용어는 특히 프로그램들이 활용할 수 있는 데이터나 루틴들을 가리킨다.

     

    - OS(운영체제) : 운영 체제는 하드웨어 소프트웨어를 관리하는 소프트웨어 전체라고 할 수 있다.

    EX) 윈도우, 리눅스, 유닉스, Mac

     

    - CPU : 운영 체제는 하드웨어 소프트웨어를 관리하는 소프트웨어 전체라고 할 수 있다.

     프로그램의 명령어를 해석하여 데이터를 연산/처리를 하고 그렇게 돌아가도록 제어해주는 부분, 혹은 그 기능을

    내장한 칩을 의미한다.

     

    - 디바이스 : 기계적인 장치나 전자 장치들을 일컫는 용어

    EX) 컴퓨터, 핸드폰

     

    - 쿠키 : HTTP 쿠키(HTTP cookie)란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 작은 기록 정보 파일을 일컫는다.

     

    - JAVA 17은 LTS(자동 업데이트 서비스) 10년 간 지원 서비스 따라서 LTS 있는 JAVA 설치가 편리하다

    ※ Java 7, 8, 11, 17의 LTS 버전들은 장기 지원을 제공하기 때문에 주요 버전

     

    Q) JAVA 유료화 된 것인가? 

    A) JAVA 오라클 서브스크립션 (유료 가격 정책) 으로 전환했으며, 오라클은 2019 년 1 월부터 자바 비즈니스 사용자에게

    자바 서브스크립션 판매를 시작했다. 2019년 부터는 서브스크립션을 가지고 있지 않으면 자바에 대한  업데이트를 할 수 없다.

     

    Q) JAVA 20버전 추가된 것?

    A)

    1. JDK 20은 스위치 표현식과 구문을 위한 레코드 패턴 및 패턴 매칭인 ‘오픈JDK 프로젝트 앰버(Amber)’의 언어를 개선했다.

    오픈JDK 프로젝트 파나마의 자바가상머신(JVM) 및 네이티브 코드(외부 함수 및 메모리 API, 벡터 API) 간 향상된 상호 연결성, 범위 지정 값, 가상 스레드, 구조화된 동시성 등 프로젝트 룸(Loom) 관련 기능을 제공하며, 이를 통해 높은 처리량 및 동시성을 갖춘 애플리케이션들의 작성, 유지 관리 및 모니터링 프로세스를 극적으로 간소화한다.

     

    2. 미리보기인 레코드 패턴(JEP 432)은 사용자가 레코드 패턴 및 타입 패턴을 추가해 강력하고, 서술적이며, 구성 가능한 데이터 탐색 및 처리 폼을 생성할 수 있게 함으로써 자바 언어를 향상시킨다.

    이 기능은 개발자들이 더 정교하고 구성 가능한 데이터 쿼리를 수행할 수 있도록 패턴 매칭을 확장함으로써 개발자 생산성을 높일 수 있다.

     

    3. 미리보기인 스위치 표현식과 구문을 위한 패턴 매칭(JEP 433)은 스위치 표현식과 구문으로 패턴 매칭을 확장함으로써, 한 개의 표현식을 특정 작업 담당의 다수 패턴들에 대해 테스트할 수 있고, 이를 통해 복잡한 데이터 중심 쿼리를 간결하고 정확하게 표현할 수 있다. 또한 스위치 표현식 및 구문의 표현성 및 적용성을 확장해 개발자 생산성을 향상시킬 수 있다.

     

    4. 프로젝트 룸(Project Loom) 미리보기 및 인큐베이터 주요 기능으로 범위 지정된 값(JEP 429)은 스레드 내 및 여러 스레드에 걸쳐 변경 불가능한 데이터의 공유를 지원한다. 특히 이는 대량의 가상 스레드 사용 시, 스레드 로컬 변수보다 선호되는 기술이다. 사용 편의성, 이해 가능성, 견고성 및 성능을 개선할 수 있다.

     

    5. 두번째 미리보기인 가상 스레드(JEP 436)는 높은 처리량 및 동시성을 갖춘 애플리케이션들의 작성, 유지 관리 및 모니터링 프로세스를 대폭 간소화한다. 이 기능은 개발자가 기존 JDK 도구 및 기술들을 사용해 동시적인 애플리케이션들의 문제 해결, 디버깅 및 프로파일링을 손쉽게 처리할 수 있도록 지원함으로써 애플리케이션 개발을 가속화할 수 있다.

     

    6. 두번째 미리보기인 구조화된 동시성(JEP 437)멀티 스레드에서 실행되는 다수의 작업들을 단일 단위의 작업으로 처리함으로써, 멀티 스레드 기반 프로그래밍을 간소화한다. 이를 통해 개발 팀은 오류 처리 및 오차 소거를 간소화하고, 안정성을 개선하며, 관찰 가능성을 향상시킬 수 있다.

     

    7. 프로젝트 파나마의 미리보기 중 하나인 외부 함수 및 메모리 API(JEP 434)로 자바 프로그램 및 자바 런타임 외부 코드 및 데이터 간 상호 운용성을 지원한다. 효율적인 외부 함수(JVM 외부 코드) 실행 및 안전한 외부 메모리(JVM 관리 영역 밖의 메모리) 접근을 통해 자바 프로그램에서 자바 네이티브 인터페이스(JNI) 없이 네이티브 라이브러리 호출 및 데이터 처리를 수행하도록 지원한다. 이를 통해 사용 편의성, 성능 및 안정성을 향상시킬 수 있다.

     

    8. 다섯번째 인큐베이터인 벡터 API(JEP 438)는 런타임에서 안정적으로 컴파일 가능한 다수의 벡터 연산을 지원 CPU 아키텍처에 기반한 벡터 명령 영역에 표현한다. 이를 통해 동급 스케일러 연산 대비 높은 성능을 제공할 수 있다.

     

    참고 : 오라클, '자바 20' 출시 - ZDNet korea

     

    ■ 자바의 특징

     

    Q) 스파게티 코드? (우리는 지양할 예정)

    A) 컴퓨터 프로그램의 소스 코드가 복잡하게 얽힌 모습을 스파게티의 면발에 비유한 표현이다.

    스파게티 코드는 정상적으로 작동하지만, 사람이 코드를 읽으면서 그 코드의 작동을 파악하기는 어렵다.

     

    ■ 자바개발도구(JDK) 와 자바실행환경(JRE)

     

     

    - 자바개발도구 : 자바를 개발하기 위한 도구

    - 자바실행환경 : 짠 코드를 실행(Runtime)할때만 필요

    - 자바가상머신 : Java로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시키기 위한 가상머신.

    JDK에 JRE(Java Runtime Environment) 포함되어 있음

     

    ■ JAVA 실행과정 (★ 중요)

    1. 작성 : 파일이 .java 확장자를 가지고 생성된다. (소스코드) _사람이 보기 위한 코드

    2. 컴파일 : .class 파일이 생성된다_컴퓨터가 보기 위한 코드

    3. 실행 : JRE환경에서 실행

    4. 출력 : JRE환경에서 실행

     

    일반 프로그램의 경우 OS(윈도우, 맥, 리눅스)에 따라 다른 코드로 작성해야 한다.

    단, JAVA는 JVM이 있어 컴파일된 하나의 코드로 실행 가능 

     

    ■ 자바의 특징

    - 가비지컬렉터(메모리 자동 관리) GC : 안쓰는 데이터 자동으로 지워줌

     

    ■ 자바로 할 수 있는 것

     

    java를 가진 오라클 유료화에 따라 요즘 코틀린으로 안드로이드 개발함. 

     

    Q) 코틀린이란?

    A) IntelliJ IDEA의 개발사 JetBrains에서 2011년에 공개한 오픈 소스 프로그래밍 언어. JVM 기반의 언어이며, Java와 유사하지만 더 간결한 문법과 다양한 기능을 추가하였다. Java와의 상호 운용이 100% 지원된다.

     

    2017년에 구글 안드로이드의 공식 언어로 Kotlin을 추가하였다. 이는 오라클과의 Java API 저작권 분쟁의 여파로 보는 시각이 많다.

     

    ※ 개인 프로젝트 구상해보기

    - 어떤 프로젝트 하고 싶은지

    - 카피하고 싶은 홈페이지 있는지

     

    ■ CMD로 살펴보기

     

    cd .. / dir 란?
    java -version (확인 결과 자바가 설치되지 않았음을 확인 가능)

     

    dir : 어떤 파일들이 있는지 확인

    cd(change directory) : 디렉토리 변경

    ".." 상위로

    java -version : 자바 깔려있는지 확인 (확인 결과 없음)

     

    ■ 자바 설치하기

     

    해당 마지막 링크로 들어가서 압축 파일 다운받기

     

    OpenJDK

     

    OpenJDK

    Learn about the key active Projects in the Community including Amber (high-productivity language features), Loom (lightweight concurrency), Panama (foreign functions and foreign data), Valhalla (primitive types and specialized generics), and, of course, th

    openjdk.org

    Oracle | Cloud Applications and Cloud Platform

     

    Oracle | Cloud Applications and Cloud Platform

    Oracle and Uber Technologies, Inc. announced a seven-year strategic cloud partnership to accelerate Uber’s innovation, help deliver new products to market, and drive increased profitability.

    www.oracle.com

    Java Platform, Standard Edition 17 Reference Implementations

     

    Java Platform, Standard Edition 17 Reference Implementations

    Java Platform, Standard Edition 17 Reference Implementations The official Reference Implementation for Java SE 17 (JSR 392) is based solely upon open-source code available from the JDK 17 Project in the OpenJDK Community. The binaries are available unde

    jdk.java.net

     

    노란 표시 클릭 후 압축파일 다운받기

     

    jdk-17 오른쪽 버튼으로 파일 복사

     

    다운 받으면 압축 파일 내 "jdk-17" 파일 복사하기

     

    설치한 파일 복사(jdk-17) -> 로컬디스크C -> Program Files -> 새로 만들기(폴더) -> java로 폴더 생성
    폴더 내 복사한 파일(jdk-17) 붙여넣기

     

    설치한 파일 복사(jdk-17) -> 로컬디스크C -> Program Files -> (빈공간 오른쪽클릭) ->

    새로 만들기(폴더) -> java로 폴더 생성 -> 폴더 내 복사한 파일 붙여넣기

     

    설치가 완료되면 경로 설정해줘야 한다.

     

    ■ 경로 설정하기

     

    정보 가는 방법

    * 정보 까지 가는 방법 2가지 

    1. 탐색기 -> 내pc(오른쪽 버튼) -> 속성 -> 정보 

    2. 윈도우 -> 톱니바퀴 -> 시스템 -> 정보 

     

    고급시스템 설정 -> 환경변수

     

    고급시스템 설정 -> 환경변수 - 클릭

     

    변수 이름 및 변수 값 설정

     

    * 변수 이름

    하단 시스템 변수 -> 새로 만들기 -> 변수이름 JAVA_HOME

     

    * 변수 값

    디렉토리 찾아보기 -> 내 PC -> 로컬 디스크(C) -> Program files -> java -> jdk-17 클릭 후 확인

     

    path 설정

     

    * path 설정

    시스템변수 -> path -> 편집 -> 새로만들기 -> %JAVA_HOME%\bin

     

    java -version으로 설치여부 확인(설치완료)

     

    다 완료되면 재부팅 후 윈도우 + R 눌러서 실행 열고, java -version 입력하면

    사진과 같이 정상적으로 설치 되었음을 확인할 수 있다. 

     

    해당 사진과 같이 윈도우 + R 키 + cmd를 통해 명령어를 쳐서 하는 인터페이스CLI (커멘드라이) 라고 한다.

     

    ■ CMD로 코딩해보기

     

     

    - dir : 어떤 파일들이 있는지 확인

    - mkdir temp : 디렉토리를 만들어준다 (기존에 없던 temp 디렉토리가 생성됨을 확인할 수 있다.)

     

     

    copy con Hello.java 입력 후 이전에 실습했던 코드 입력

    ※ 대문자 H 치고 Tab 누르면 기존에 입력했던 코드 자동으로 가져와짐

     

     

    javac Hello.java 입력, 그러나 에러 발생

     

    E1) 에러발생 및 해결

    1 error 발생

    ^ : 해당 부분에서 오류가 발생함을 의미

     

     

    C1) 해결

    메모장으로 수정하면서 기존 코드에서 " } " 이 빠진 것을 확인함 " } " 추가 후 정상적으로 실행됨.

     

    ■ 이클립스 설치하기

     

    The Community for Open Innovation and Collaboration | The Eclipse Foundation

     

    The Community for Open Innovation and Collaboration | The Eclipse Foundation

    The Eclipse Foundation provides our global community of individuals and organizations with a mature, scalable, and business-friendly environment for open source …

    www.eclipse.org

     

    링크를 통해 이클립스 사이트 접속

     

     

    하단의 Download Packages -> Windows x86_64 다운 -> 다운로드 버튼 클릭

     

    Q) 왜 x86_64일까?

    A)

     

        x86 이라는 단어의 뜻은 인텔(INTEL)의 CPU 시리즈 이름이자 그 CPU의 명령체계 아키텍쳐 이름

    • x86 하위에는 x86-IA32 (32bit)x86-64 (64bit) 두가지가 있지만 호칭을 정확히 부르는게 귀찮고, 32bit가 워낙 오랜 기간 사용되었기에 x86 이라고 하면 통상 32bit 를 뜻하게 되었다.
    • x64 는 원래 인텔의 IA-64 64bit CPU를 말하는 것인데, 시장 점유에 실패한 CPU가 되었다. 이후 AMD의 x86-64 가 대히트를 치면서 x64라고 하면 통상 64bit를 뜻하게 되었다.

    Linux나 Windows 운영체제 구분에서 보통 x86 이라고 부르면 32bit CPU용 OS이고, x64라고 부르면 64bit CPU용 OS 라고 통용된다.

     

     

    다운로드 받은 압축파일 -> eclipse 파일 -> 로컬 디스크c로 드레그하여 복사하기

     

     

    이클립스 아이콘 클릭하여 실행

     

     

    경로 workspace 로 한 뒤 Launch 클릭

     

     

    실행 시 보이는 화면은 다음과 같고 가운데는 코드, 하단은 결과를 나타낸다.

     

    ■ 이클립스로 코딩해보기

     

     

    Ctrl + N 단축키로 Java Project 선택

     

     

    Project 이름은 Test 로 설정 후 Finish 를 누르면 화면과 같이 뜨는데,

    Open Perspective 클릭 후 실행한다. 

     

     

    Class 이름 Hello -> Finsh 클릭

    Class 이름은 대문자로 설정해야 한다. 

     

    이클립스로 코딩하기

     

    위에 cmd로 작성했던 "Hello World" 다시 이클립스로 코딩해보기

     

     

    - src : 개발까지 필요할 경우

    EX) 개발자끼리 코드를 공유할 때

     

    - bin : 실행만 필요한 경우

    EX) 실행이 필요한 주변 사람에게 공유할 때

     

    ※ 실행하려면 JRE 필요하다.

     

    ■ print 와 println의 차이는?

     

    println 과 print 의 차이

     

    - println : 줄 바꿈

    - print : 줄 안 바꿈

    - // : 주석

    - 실행 단축키 : Ctrl + F11

     

    Q) IntelliJ 란?

    A) 젯브레인스(JetBrains) 사에서 제작한 Java 개발을 위한 툴

     

    ■ 프로젝트 삭제 시 로컬 디스크 파일 삭제 방법

     

     

    project를 삭제해보자. project 삭제 시 해당 부분을 체크해야 로컬 디스크에 있는 파일도 삭제된다

     

    ■ Module 삭제 방법

     

     

    다시 Hello java project 만드는데, Module 에서 체크 해지 후 Finish 해서 생성

     

    ■ main 메소드 기본 생성 방법

     

     

    public static void main(String[] args) 체크 후 Finish를 하면 사진과 같이 메인 메소드가 자동으로 코드에 생성

     

    Q) public static void 란?

    A) public 어떤 클래스도 다 접근 가능한
         static 객체 생성없이 사용하는
         void 반환타입이 없는
         이라는 뜻 

     

    ※ 메소드가 작업을 할 때 (연산)결과를 돌려줄 때가 있고 이를 리턴이라고 한다.

    리턴 값이 없는 경우에는 void라고 적어줍니다.

     

     

    - syso 입력 후 ctrl + space- main 입력 후  ctrl + space

     

    메인 메소드 자동 완성된다.

     

     

    ■ D2 Coding 글꼴 설치하기 후 글꼴 바꾸기

    d2coding

     

     

    구글 -> d2coding -> 1.3.2 배포 -> 다운 완료 된 파일에서 2번째 파일 클릭 후 설치

     

     

    설치 완료 후 이클립스 내 "코드" 부분 마우스 오른쪽 클릭하여  Preferences 에 "Colors and Fonts" 들어가기

     

     

    edit 누른 후 글꼴 D2Coding 입력 후 확인하면 적용 완료!

     

     

    Q) 그렇다면 코딩 시 d2coding 설정 이유는?

    A) d2coding 설정 이유는 i l 0 o 등을 이클립스 내 문자를 명확하게 구분하기 위해서

     

    ■ 이클립스 화면 테마 조정

     

    이클립스 테마 조정
    이클립스 Dark 모드

     

    상단 window -> Preferences -> Appearance -> Theme -> Dark 설정 가능

     

    ※ 프로젝트 닫기

    쓰지 않는 프로젝트는 close project 로 닫아둘 수 있다.

     

    ■ 클래스 / 메소드 / 명령어

     

    클래스 범위 (파란 범위)
    메소드 범위(파란 범위)

    - class : 하나의 객체가 만들어 질 수 있는 최소 단위이다.

    - 메소드 : 기능 실행 단위

    - 메소드는 반드시 class 안에 있어야 한다. (그렇지 않으면 에러)- 하나의 클래스에는 여러가지 메소드 들어갈 수 있다.

     

     

    명령어는 메소드 속에 있어야 합니다. (그렇지 않으면 에러)

     

     

    " ; " : 명령어가 한 줄 끝났음을 의미하며, 명령어를 끝낼 경우 반드시 ;으로 끝나야 합니다. 

     

    변수 선언, 대입, 변수 출력
    클래스, 메소드, 명령어 3가지 분류

    - class는 class 라 써져 있고, 대문자로 시작한다. ex) Syntax02 클래스

     

    - 메소드는 () 앞을 메소드라 부른다.ex) main 메소드 

     

    - 명령어는 Tab 2번

     

    프린트 메소드 출력x

     

    코드 출력 순서는1.  class 2. main 메소드 입니다.

     

    따라서 "프린트 메소드 입니다." 가 main 메소드보다 앞서 있고,메인 메소드가 종료 " } " 되었기 때문에 출력되지 않습니다.

     

    프린트 메소드 출력

     

    메인 메소드 닫히기 전에 print 메소드를 명령어로 호출하면 프린트 메소드가 출력된다.

     

    즉, 해당 print(); 도 메인 메소드 밖에 나가면 에러가 뜬다왜냐면 명령어는 메소드 속에 있어야 하기 때문이다.

     

     

    int num을 호출하기 위해서는 1. 인스턴스를 만들고 2. 인스턴트명.num()을 호출해야 한다. (추후 교육 예정)

     

     

    해당 class 이름이 Syntax03 이므로 Syntax03 클래스만 실행된다. (Apple은 실행되지 않는다.)

     


    * 요청사항 (숙제)

    - 자바 깔아보기

    - 이클립스 깔아보기

    - 3줄 코드 외우기 <완료 : 보지 않고 코드 5번 입력>

    - 책 읽어보기 (혼자 공부하는 자바) 

    - CS를 위해 컴활 or 정보처리기사 컴퓨터일반 들어보기

    - 중간중간 찾아보세요 (Q 부분은 스스로 구글링하여 찾아보기)  <완료>

     

    ※ 단축키

    - 윈도우 + E : 파일탐색기

    - 윈도우 + R : 실행

    - Ctrl + F11 :  Run

    - Ctrl + Shift + F  :  자동정렬 / 단, 에러가 없을 때만 동작

    - 메인메소드 자동생성

    1) syso 입력 후 ctrl + space

    2) main 입력 후  ctrl + space

Designed by Tistory.