학습목표
강의를 들으며 내가 알고 있는 내용을 점검하고,
새로 배운 내용을 정리하며,
궁금한 내용을 알아가며 학습해나가는 것을 목표로 합니다.
Java 개발 환경
- JVM (Java Virtual machine)
Java bytecode를 실행 시킬 수 있는 가상머신이며 OS에 종속되지 않는다.
- JRE (Java Runtime Environment)
JVM + 각종 라이브러리의 집합이며 → java 명령어 사용가능
- JDK (Java Development Kit)
JRE + 컴파일러 + 디버거 → java + javac 명령어 사용가능
- java 명령어와 javac 명령어의 다른 점
- java 명령어는 .class 파일을 실행 시킬 수 있는 명령어
- javac는 java 파일을 컴파일 하는 명령어
- 즉 텍스트로 되어 있는 자바 파일을 bytecode로 JVM 위에서 사용할 수 있도록 컴파일함
- 바이트코드는 .class 파일로 저장됨.
- 최소 8 이상을 설치
- 자바 8 이상부터 lambda, Stream, Optional 등을 지원하기 때문
- public static void main (String[] args) 의 뜻
- public : 접근 제어자로 어디에서든 접근이 가능해야함
- static : 정적 메소드로 선언하여 메모리에 할당해야함
- void : 메인 메소드와 프로그램이 함께 동작하기 때문에 프로그램이 끝나면 메소드도 끝나게 되어 반환 값이 없음
- String[] args : 외부에서 입력값을 받아 문자열로 사용할 수 있음.
자동으로 프로그램을 빌드 해주고 실행해주는 도구.
- Ant : 현재는 잘 사용하지 않음.
- Maven
- Gradle
- 그래들 프로젝트 설정 순서
- Gradle init 으로 프로젝트 생성
- 언어 선택
- Scala, Groovy, Java, Kotlin은 JVM 위에서 실행되는 언어인데 언어 중에 C++, Swift도 있었다.
- 멀티 프로젝트 / 싱글 프로젝트 선택
- DSL(Domain Specific Language)
- Test Unit
- JUnit4, TestNG, Spock, JUnit Jupiter(JUnit 5)
- 프로젝트 이름
- 패키지 이름
- bulid script : 소스 코드의 위치, 실행 환경 등
- gradle init으로 프로젝트 생성
- gradle tasks로 태스크 목록 확인
- gradle build로 빌드
- gradle run 으로 실행
IDE
여러 개발 툴들을 GUI 환경에서 편하게 사용할 수 있도록 도와주는 소프트웨어
- Eclipse
- IntelliJ
- 빌드 툴 + 코드 작성에 있어서 편리함.
- 유용한 단축키
- Option + Enter : 빠른 수정
- Command + 숫자 1 : 프로젝트 메뉴창으로 빠르게 이동 가능
- Command + N : 새로운 파일 생성
- Shift + Shift : 파일이름 검색 기능
- Option + Up(or Down) : 단계별 블록 지정 가능
- Command + / (Slash) : 주석 토글
- Command + Option + L : 코트 리포맷팅
- Command + T : 코드 리팩토링
- Shift + Command + A : 명령어 검색
주니어 개발자가 알아야 할 내용
- Code Convention
- 팀이나 회사가 개발 그룹에서 정해서 사용함.
- 없으면 기본적인 자바 코딩 룰을 따르자.
- 클래스 명은 대문자로 시작한다.
- Camel Case를 지키자
- 메소드나 변수명은 소문자로 시작한다.
- 들여쓰기 (탭과 스페이스 하나만)
- Reference
- 자바를 하면 포인터를 몰라도 된다 (X)
- 자바에서는 포인터 대신 레퍼런스라는 개념이 있음.
- 원시 타입 8개를 제외한 모든 것이 레퍼런스 타입임.
- java에서는 alloc / free를 개발자가 신경쓰지 않아도 된다. (가바지 컬렉션이 있기 때문)
- Call by value / Call by reference
- Constant pool
- String을 특별하게 취급함.
- String은 += 연산을 사용하면 새로운 객체가 계속 생성되어 공간 낭비가 심하기 때문에 사용하지 않음.
- new로 만든 String 객체와 ""를 사용하여 리터럴로 선언된 객체가 주소값이 다르기 때문에 다른 객체로 판단함.
- StringBuffer(멀티 스레드 지원) / StringBuilder를 사용함.
- Object
- 모든 객체의 최상위 객체임
- 모든 객체는 Object 클래스의 메소드를 호출 할 수 있음.
- Object 객체의 메소드
- toString() : 객체가 가지고 있는 값이나 정보를 문자열로 반환하는 메소드
- equals() : 레퍼런스의 주소값이 아닌 가지고 있는 값을 기준으로 비교를 하여 참/거짓을 반환하는 메소드
- hashCode() : 객체의 해쉬코드를 반환함.
해쉬코드란 객체의 주소값을 변환하여 생성한 객체의 고유한 정수값임.
- Git
- Tool을 사용해서 활용하자. 굳이 명령어로 익힐 필요는 없다.
- Github Desktop, SourceTree
- .gitignore를 잘 사용하자
- 빌드 결과 / 바이너리 (.class .jar .build/)
- 로컬설정
- 제너레이트 가능 파일들
- 키(보안 관련 파일)
- .gitignore.io