<목차>
1. JAVA 언어에 대한 이해
2. JVM- JAVA 실행환경
JAVA 언어에 대한 이해
-프로그래밍 언어는 사람과 컴퓨터 사이의 소통을 위해 사용 = 사람이 컴퓨터한테 대화를 시도한다
<개발 언어의 역사>-그냥 이런게 있다~
1. A언어 (A programming Language)
-첫 개발언어, 1960년대
-핵심기능: 입출력, 문맥
-프로그램을 만들기 위해 기본적으로 필요한 기능(입출력, 문맥)만 구현 가능한 언어
-초창기의 기초적인 목적을 달성하기 위한 언어
2. B언어
-bell 사에서 1960년대 개발
-핵심기능: A언어 기능 + 기계식 데이터 타입, 연산기능, 메서드
-A언어 기능에 데이터를 담을 수 있는 타입이 생기고, 데이터를 연산하고 묶엇서 관리할 수 있는 메서드 구현이 가능한 언어
3. C언어
-1970년대
-핵심기능: B언어 기능 + 자료형 데이터 타입, 자료구조
-B언어 기능에 다양한 데이터 타입을 정의하고 자료구조에 담을 수 있는 언어
4. JAVA언어
-어디서나 동작 가능한 객체지향 언어, 자바커피에서 이름을 땀
-1990년대
-핵심기능: C언어 기능 + 공통실행환경(JVM), 클래스, 객체
-공통실행환경(놀이터), 클래스(바구니 틀), 객체(바구니), 메서드(포장지), 자료구조(분류통)
-데이터와 메서드를 담는 클래스를 통해 객체를 만들 수 있는 언어
<JAVA를 배워야 하는 이유>
-개발 언어의 역사를 따라 발전해 온 언어 중 가장 많이 쓰이는 개발 언어 중 하나
1. 공통실행환경이 있어 여러기기에서 실행이 가능
2. 코드를 이해하기 쉽고 유지보수가 쉬움
-JAVA는 대표적인 객체지향언어이다.
----객체(object)는 크게 특징과 행동을 가지고 있는 것이라고 보면되는데 사람을 예로 들면
--------특징: 이름, 나이, 혈액형...
--------행동: 걷는다, 숨쉰다....
이렇게 java언어도 특징과 행동을 가지고 있다고 보면 된다.
3. 안정성이 높아서 프로그래밍 오류를 방지하고 보안상 안전하다.
-작성된 문맥을 바이트 코드로 변환하는 컴파일러(변환기)가 먼저 오류를 체크한다.
-지원하는 보안 기술이 많다.
4. 대규모 앱 개발이 가능하다.
-네트워크 및 데이터베이스 연결 및 통신 등의 작업을 처리하는 API를 제공한다.
5. 다양한 개발 도구와 라이브러리를 사용할 수 있다.
-앱 개발에 필요한 작업을 보다 쉽게 처리할 수 있다.
JVM
Java Virtual Machine
자바 가상 머신
-가상머신 : 가상의 기기를 만들어주는 것
-여러가지 기기 위에 java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것
-JVM을 깔아주면 어느 장비에서든 똑같이 Java가 실행된다.
(어디든 땅 위에 잔디를 깔면 뛰어 놀 수 있는 놀이터가 되는 것과 같은 의미)
<Java 의 구성>
*바이트 코드 : java 프로그램 변환 코드
-내가 작성한 코드가 운영체제가 읽을 수 있는 코드(바이트 코드)로 java 컴파일러(compiler)가 변환한 코드
*Java compiler
.java -----> .class 로 변환해줌
.java는 사람이 이해할 수 있는 코드로 컴퓨터가 읽을 수 없다. 그래서 컴파일러로 변환해줘야한다.
.class는 운영체제가 이해할 수 있는 코드
*인터프리터(interpreter) : Java.class 코드 해석기
-운영체제가 읽은 바이트 코드를 기계가 실행할 수 있는 기계어로 번역
*JIT 컴파일러 : 빠른 java.class 코드 해석기
-인터프리터의 효율을 높여주는 서포트 해석기
-인터프리터와 JIT 컴파일러는 한세트라고 보면 됨
*메모리 영역 : java 데이터를 저장하는 영역
-운영체제로부터 JVM이 할당받은 메모리 영역
*클래스 로더 : java.class 바이트코드를 메모리 영역에 담는 운반기
-JVM으로 class(바이트코드)를 불러와서 메모리에 저장
*가비지 컬렉터 : java 쓰레기 청소기
-메모리 영역에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기
*Runtime: 프로그램이 실행중인 상태
*Runtime system: 프로그램이 실행중인 상태를 관리하는 시스템
*JVM 환경구성
1. .java ----> .class
2. class 실행
<JRE>
-Java Runtime Environment, 자바 실행 환경
-자바 프로그램만 실행시킬 수 있음(말 그대로 실행환경만 만들어주는 것)
-.class 파일만 실행 가능하다
<JDK>
-Java Development Kit, 자바 개발 키트
1. .java ----> .class 로 변환해주는 java compiler(javac)의 기능이 있다.
2. JRE의 기능을 포함하고 있음.
3. 코드를 디버깅하는 jdb 등의 기능이 있다.
*JDK의 디버깅 기능
-jdb 기능이라고 하는데 이 기능을 통해서 실행중인 프로그램의 코드 실행을 볼 수 있다.
-디버깅 : 코드들을 한줄씩 객체와 메소드를 수행하면서 변수들도 변화는 과정을 볼 수 있도록 하는 기능
-내가 작성한 코드라인에 "중단점"을 설정하고 "디버그" 모드로 프로그램을 실행하면, 중단점의 코드라인을 수행할 때 프로그램 흐름이 일시정지 되면서 변수들을 볼 수 있게 도와준다.
-디버깅 = 중단점 일시정지 + 코드라인 단위 수행
<디버깅하는 방법>
1. 디버깅할 때 일시정지할 중단점 설정
---코드 라인의 숫자 옆을 클릭하면 숫자에 빨간 동그라미 표시됨
2. 우측 상단에 벌레 버튼 클릭하면 디버깅 시작됨
3. 디버깅이 시작되면 중단점에 멈추면서 일시정지 됨
---일시정지 된 상태에서는 변수가 들어있는 값을 볼 수 있음
기본 코드에 대한 이해
-java 앱을 실행할때 제일 먼저 클래스의 main 메서드를 실행시키는게 기본
*public
-클래스 경로 외부에서 실행시킬 수 있다고 표시해주는 접근제어자
-클래스 경로 외부에서 호출 못하도록 막는 접근제어자는 private, protected가 있음
-공공의, 공통의 이런 의미로 어디까지 접근하게 할거냐? 정도의 의미
*class
-객체를 만드는 클래스라고 선언
-결국 .class로 컴파일되어야 하기 때문에 class 라는 키워드를 통해 .java 파일을 만든다
-class 안에는 들여쓰기 되어있는 하위요소가 들어있음, 하위요소는 {중괄호}로 구분
*main -클래스 명
-파일명과 일치시켜야함
---일치시켜야하는 이유 : java 컴파일러가 바이트코드로 변환했을 때의 파일 확장명과 일치되야하기 때문
*main
-main 메서드 정의
-main 이라는 class를 만들고 클래스 로더로 메모리 영역으로 들어가서 실행시킴
*public
-외부에서 실행시킬 수 있다고 표시해주는 접근제어자
*static
-java 컴파일러가 바이트 코드로 변환할 때 미리 정의되는 메서드 표기
-앱 실행시 한번만 정의되며 static 메서드 또는 변수(데이터)끼리만 호출할 수 있음
*void
-메서드의 응답 값을 정의하는 곳
-void는 응답할 값이 없다는 정의
-int=정수, char=문자, string=문자열 등...
-output
*(String[] args)
-메서드가 시작될 때 넘겨받을 데이터들(변수들)
-input
-String[]: 문자열 여러개 데이터 타입
-args : 문자열 여러개 데이터의 이름
*System.out.print()
-이 메서드를 사용하면 출력창에 괄호 안으로 전달된 데이터를 출력해줌
*System.out.println()
-이 메서드를 사용하면 출력창에 괄호 안으로 전달된 데이터를 출력 후 줄바꿈을 해줌
*주석
-설명을 달아놓는 기능
-실제 프로그램 실행에는 영향을 미치지 않는 유령코드
-개발자들끼리 협업할 때 코드에 대한 설명을 추가하거나 주의사항을 적어놓을 때 사용
-주석 남기고 싶은 코드 앞에 // 를 붙이면 됨
<용어 정리>
*데이터 : 컴퓨터가 정보를 담는 자료값
*데이터 타입(자료형) : 데이터의 유형 (정수, 문자, 소숫점)
*자료구조 : 데이터 여러개를 분류해서 담을 수 있는 분류통
*문맥 : 개발언어로 표현한 프로그램의 동작 흐름
*매서드 : 데이터와 문맥을 감싸는 포장지
*공통실행환경
-여러 기기의 운영환경에서 실행할 수 있도록 판을 깔아주는 실행환경
-어떤 기기에서 실행을 해도 똑같이 실행되는 실행환경
*운영체제
-기기가 프로그램을 실행시키는 운영환경
-window, ios, android, linux...
*앱
-운영체제 위에서 실행되는 프로그램
-우리가 흔히 생각하는 어플리케이션이랑은 다른 개념
-Mobile App, Server App....
*괄호
() : 소괄호
{} : 중괄호
[] : 대괄호
*사용하는 프로그램 : intelli j
'내배캠 > java' 카테고리의 다른 글
[내일배움캠프/백엔드] JAVA 문법종합반 3주차 강의 2. 상속 (0) | 2024.10.23 |
---|---|
[내일배움캠프/2주차] JAVA 문법종합반 3주차 강의 1. 클래스 (0) | 2024.10.18 |
[내일배움캠프/2주차] JAVA 문법종합반 2주차 강의 2 (2) | 2024.10.14 |
[내일배움캠프/2주차] JAVA 문법종합반 2주차 강의 1 (2) | 2024.10.12 |
[내일배움캠프/2주차] JAVA 문법종합반 1주차 강의 2 (0) | 2024.10.11 |