☕JAVA/🐣 강의 [JAVA]

[JAVA][기초] 자바란?

디카페인라떼 2022. 9. 29. 22:15

프로젝트를 진행하다보니 슬슬 CS 공부 + Java 복습을 해야할 때가 온게 느껴졌다. 

따로 교재를 사지 않아 강의를 찾아보던 중 찾은 유튜브인데 상당히 유익하다.

 

[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.

Java for Beginner - YouTube

 

Java for Beginner

[교재 link] https://github.com/namoosori/java-for-beginner/tree/master/doc Java for Beginner 강의에서 다루는 내용은 다음과 같습니다. - Java 개요 : Java 언어가 어떤 언어이고 Java 언어를 이용해 프...

www.youtube.com


Java 란 어떤 언어인가?
  •  자바 언어는 1996년 JDK(Java Development Kit) 1.0이 발표된 이후 현재까지 발전을 거듭
    • JDK :  java app을 개발하기 위해서는 도구가 필요함. + 동작할 수 있는 실행환경(JRE)도 필요 => 두가지를 가지고 있는 것
  • 각각의 버전마다 크고 작은 변화들이 있었으며 Java5와 Java8 버전에서 제일 큰 변화.
  •  Java8 부터는 LTS (Long Term Supprt) 버전과 non - LTS 버전으로 나뉘어 출시
  •  Java9 부터 6개월 단위로 새로운 버전이 나오고있으며 non-LTS 버전은 새로운 버전이 출시되면 더이상 업데이트 지원 안됨.
  • 🚩 그러므로 개발을 할때 기준이 되는 버전들은 LTS 버전으로 개발을 해야함.

 

Java의 주요 특징
  • 객체지향 언어 OOP
    • 이후에 클래스 학습하면서 자세히
  • 멀티 스레드 지원 (별도의 강의로 지원)
    • 특정 프로그램의 특정 기능들을 스레드 단위로 나눔. 이렇게 나눠진 스레드단위로 나뉘어진 기능들이 서로 경쟁적으로 수행이됨.
    • 이렇게 경쟁 관계에서 각각의 기능들이 수행될 때 사용자는 마치 동시에 수행되는 것처럼 보임
    •  대표적인 멀티 스레드 프로그램 : 채팅 프로그램

 

  • OS플랫폼 독립성
    • 자바로 작성된 프로그램은 자바 가상 머신 (Java Vertual Machine) 위에서 실행되며 이런 특징으로 인해 자바 프로그램은 어떤 운영체제(OS)에서도 실행 가능. (write once, run anywhere)
    • ex) C언어를 기준으로 개발 => 윈도우 체제 버전과 맥 체제 버전에서 실행시키는 버전이 다름. (즉 , OS플랫폼에 따라서 달리 제작)
    • 하지만 자바는 자바만의 JVM이 있음. 그러므로 운영체제에 종속되지 않음. 그러나 JVM은 플랫폼에 종속적. 자바 프로그램은 독립적임.
  •  Garbage Collection
    •  메모리에 객체를 만들어 저장했을 때 이것들이 해제되는 방식
    • 클래스를 이용해서 인스턴스 객체를 만들어줌. 이후 에 사용이 다 된 객체는 이 메모리에서 해제가 되어야 하는데, 자바는 가비지 컬렉터가 알아서 정리해줌
    • 객체를 인스턴스화 했을 때 메모리의 형태가 어떻게 되는지 설명하면서 다시 한번 설명 예정

 

Java Application 동작 방식

👉  Hello.java (source code) -> compiler -> Hello.class (byte code)

-> (JVM) Class Loader (byte code)기존에 번역된 코드들에다가 다른 클래스도 합치는 과정

-> Hello.class (용량이 다름. class loader를 통해서 다른 클래스가 합쳐졌기 때문)

-> Bytecode verifier (바이트코드 검증기)  -> interpreter (한번더 번역)

 

  • 일반적인 프로그램은 소스코드를 컴파일하면 컴퓨터가 직접 해석 및 실행 할 수 있는 실행 파일이 만들어짐.
  •  작성된 코드를 번역하는 방식은 컴파일 방식과 인터프리터 방식이 있으며 자바 언어는 두 방식을 모두 수행
    •  컴파일 방식 :  전체 내용을 한번에 번역
    •  인터프리터 방식 :  해당 코드를 한줄씩 번역
    • => 보통 언어는 둘 중 하나의 방식만 하는데 자바는 둘다 함.
    • => 기존의 한가지 방식으로만 네이티브 코드가 돼서 실행되는 프로그램과는 다소 속도의 차이가 있으나 장점이 또 있음..추후에..
  •  자바 언어로 작성한 코드는 자바 컴파일러(java.exe)를 통해 컴파일을 수행하고 그 결과물은 *.class 파일이 됨.
  •  *.class 파일은 프로그램이 실행되면 JVM 내부에서 라인단위로 번역되어 실행됨.

🤯Byte code vs Native code
- byte code : JVM이 이해할 수 있는 코드
- Native code = Binary code = 2진수 코드 : 컴퓨터가 읽을 수 있는 코드 

 


강의를 보기 전 정리했던 글들

 

2022.08.08 - [JAVA] - [JAVA] 객체지향 / 클래스 Class /메쏘드 Method / Static

 

[JAVA] 객체지향 / 클래스 Class /메쏘드 Method / Static

2022.06.20 - [준비운동/생활코딩 자바] - 6일차 패키지/클래스/인스턴스/상속 JAVA는 객체지향 프로그래밍이다. 객체 지향 프로그래밍 (OOP) 프로그램을 구성하는 요소는 객체이며 이것이 상호작

wearegolden.tistory.com

2022.08.18 - [JAVA] - [JAVA] 기초 - 다시 정리하는 기본 개념

 

[JAVA] 기초 - 다시 정리하는 기본 개념

분명히 공부도 하고 정리도 했는데 남는 게 없다.. 원래 이런가? 정의를 정확하게 외우는 것은 기술면접 전에 해야할 일이고 어떤때에 어떤 걸 써야 한다 정도로 알아두기!! 객체지향 프로그래밍

wearegolden.tistory.com