일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 온라인테스트
- UNIDEV
- 전국대학생게임개발동아리연합회
- AWS
- 오블완
- 인디게임
- 42서울
- 배포
- Developer
- 인프라
- 도커
- 위키북스
- 프로그래밍
- 생활코딩
- RDS
- 백엔드개발자
- 체크인미팅
- 개발공부
- 스프링부트
- 티스토리챌린지
- 자바개발자
- CICD
- 라피신
- 백엔드
- EC2
- 스프링
- UNICON2023
- UNICON
- 게임개발동아리
- 프리티어
- Today
- Total
Hyun's Wonderwall
[백엔드] 스터디 1주차 - Java (1) 이론 본문
웹 개발 스터디를 시작했다! 나는 백엔드 파트로 자바와 스프링을 공부하게 되었다.
1주차(2023.03.20~2023.03.27) 과제: 자바 리뷰 1/3 진행하기!
공부에 사용한 자료들
- 객체지향 프로그래밍 과목 수업자료
- 생활코딩 JAVA : https://opentutorials.org/course/1223
- 혼자 공부하는 자바
[Chapter 01] Java 프로그래밍 주요 개념 (이론)
* 대표적인 자바 개발 툴: 이클립스, IntelliJ
□ 프로그램 언어의 종류 : 저급 언어(기계어, 어셈블리어), 고급 언어(C, Java 등)
[컴퓨터로 프로그램 개발 시]
: 사람이 고급 프로그래밍 언어로 소스 파일 작성 ➡ 컴파일러가 컴퓨터가 이해할 수 있는 기계어로 변환 ➡ 프로그램 실행
[Java로 프로그램 개발 시]
: 사람이 Java로 소스 파일(*.java) 작성 ➡ 컴파일러(javac.exe)로 바이트 코드 파일(.class) 생성 ➡ JVM 구동 명령어(java.exe)로 JVM 실행 ➡ 바이트 코드를 기계어(바이너리 코드)로 변환 => 실행
□ JVM(Java Virtual Machine, 자바 가상 기계): 자바 바이트 코드를 실행하는 자바 가상 기계(소프트웨어). 하드웨어의 영향을 받지 않고 어플리케이션 개발 가능.
*장점: 하드웨어나 운영체제를 가리지 않고 어디서나 동일한 프로그램을 실행
*단점: 최적화된 바이너리에 비해 속도가 느릴 수 있고, 각 플랫폼에서 동작하는 가상머신의 개발이 필요.(Windows용 JVM, Mac용의 JVM을 따로 만들어야 한다는 뜻)
**같이 볼 링크: JVM란? 자바의 실행 원리 알아보기 https://codingwell.tistory.com/66
□ 자바의 플랫폼 독립성, WORA(Write Once Run Anywhere)
- 한번 작성된 코드는 모든 플랫폼에서 바로 실행. C/C++ 등 기존 언어가 가진 플랫폼 종속성 극복(OS, H/W에 상관없이 자바 프로그램이 동일하게 실행). 네트워크에 연결된 어느 클라이언트에서나 실행 (웹 브라우저, 분산 환경 지원)
- WORA를 가능하게 하는 자바의 특징 : 바이트 코드(byte code, 자바 소스를 컴파일한 목적 코드), JVM이 설치된 모든 컴퓨터에서 실행됨
□ 자바 플랫폼
JRE(Java Runtime Environment) : 자바 프로그램 실행에 필요한 구성 요소
ㄴ JVM + 표준 클래스 라이브러리
JDK(Java Development Kit) : 자바 프로그램 개발 시 필요한 툴킷
ㄴ JRE + 개발 도구
API : 자바 응용 프로그램 개발에 사용하는 라이브러리 (주요한 기능들을 미리 구현한 클래스 라이브러리의 집합)
□ Java의 특징
- 객체 지향 언어 (Objected Oriented Programming)
- 부품 객체를 먼저 만들고, 이것들을 조합해 전체 프로그램을 완성하는 기법. 캡슐화, 상속, 다형성 기능을 완벽하게 지원.
- 완성된 프로그램은 부품 객체들의 연결로 이루어져있다. 객체간의 관계는 상속/소유/사용. 부품들은 언제든지 교체 가능. - 함수적 스타일 코딩 지원 - 람다식(Lambda Expressions)
- 메모리를 자동 관리(가비지 컬렉션garbage collection) - 사용하지 않는 객체를 자동으로 메모리에서 제거.
- 멀티 스레드 쉽게 구현 가능
- 동적 로딩(Dynamic Loading) 지원 - 미리 객체를 만들어 놓지 않고 필요한 시점에 동적 로딩해 객체 생성
□ 자바 프로그래밍에서 기억할 것
- 플랫폼 독립성 - 자바 프로그램은 플랫폼에 상관없이 어디서든지 실행.
- 클래스로 캡슐화 - 클래스 내에 모든 변수(필수), 함수(메소드) 구현해야 함. 클래스 안에서 새로운 클래스 (내부 클래스) 작성 가능.
- 소스(.java)와 클래스(.class) 파일 - 팡 소스 파일의 이름과 public으로 선언된 클래스 이름은 같아야
- 실행 코드 배포 - 실행 코드는 1개이상의 class 파일로 구성. 자바 응용프로그램의 실행은 main() 메소드에서 시작. 하나의 클래스 파일에 여러개의 main() 메소드가 있을 수 없음.
- 패키지 - 관련된 여러 클래스를 패키지로 묶어 관리. 패키지는 폴더 개념.
'Study > Java, Spring' 카테고리의 다른 글
[백엔드] 스터디 - Spring Boot 어노테이션 몇가지 정리 (0) | 2023.05.15 |
---|---|
[백엔드] 스터디 2주차 - Java (4) 배열, 버블 정렬, Arrays 클래스, Random 클래스 (0) | 2023.04.03 |
[백엔드] 스터디 1주차 - Java (3) 연산자, 조건, 반복문 (0) | 2023.03.27 |
[백엔드] 스터디 1주차 - Java (2) 입출력, 변수, 자료형, 캐스팅 (0) | 2023.03.27 |
[Java] 생활코딩 Java 입문 수업 강의 메모 (완강) (0) | 2023.02.28 |